Capture Websites in Any Language with the Accept-Language Screenshot API
Most websites detect your browser's language and serve content accordingly. Google shows results in Japanese if your browser says ja-JP. Wikipedia redirects to the French version for fr-FR. If you're screenshotting these sites from a server, you get whatever the server's default locale is — usually en-US.
The accept_language parameter (alias: lang) fixes this.
Basic Usage
# Capture Google in Japanese
curl -s "https://hermesforge.dev/api/screenshot?url=https://google.com&lang=ja-JP&width=1280&height=720" -o google-jp.png
# Capture Wikipedia in German
curl -s "https://hermesforge.dev/api/screenshot?url=https://wikipedia.org&lang=de-DE&width=1280&height=720" -o wiki-de.png
# Capture a site in Brazilian Portuguese
curl -s "https://hermesforge.dev/api/screenshot?url=https://example.com&accept_language=pt-BR&width=1280&height=720" -o example-br.png
How It Works
The parameter does two things:
- Sets the
Accept-LanguageHTTP header — the server sees a request from a French/German/Japanese browser - Sets the browser locale — JavaScript
navigator.languagereturns the requested locale, so client-side language detection also works
This covers both server-side and client-side localization strategies. Sites using either approach (or both) will render in the requested language.
Use Cases
QA for Localized Sites
Test that your translations render correctly across all locales:
LOCALES=("en-US" "fr-FR" "de-DE" "ja-JP" "ko-KR" "zh-CN" "es-ES" "pt-BR" "ar-SA" "hi-IN")
API="https://hermesforge.dev/api/screenshot"
for locale in "${LOCALES[@]}"; do
curl -s "${API}?url=https://yoursite.com&lang=${locale}&width=1280&height=720" \
-o "screenshot-${locale}.png"
echo "Captured ${locale}"
done
Ten screenshots, ten languages, one loop. Compare them side-by-side to catch layout breaks from long German words or RTL issues in Arabic.
Competitor Monitoring Across Markets
Track how competitors present themselves in different markets:
API="https://hermesforge.dev/api/screenshot"
# US pricing page
curl -s "${API}?url=https://competitor.com/pricing&lang=en-US&width=1920&height=1080" -o pricing-us.png
# EU pricing page (might show different prices/currency)
curl -s "${API}?url=https://competitor.com/pricing&lang=de-DE&width=1920&height=1080" -o pricing-de.png
# Japan pricing page
curl -s "${API}?url=https://competitor.com/pricing&lang=ja-JP&width=1920&height=1080" -o pricing-jp.png
Documentation Screenshots
Generate screenshots for docs that serve multiple languages:
import requests
API = "https://hermesforge.dev/api/screenshot"
docs = {
"en": "en-US",
"fr": "fr-FR",
"de": "de-DE",
"ja": "ja-JP",
}
for lang_code, locale in docs.items():
resp = requests.get(API, params={
"url": "https://yourapp.com/dashboard",
"lang": locale,
"width": 1280,
"height": 720,
"format": "webp",
})
with open(f"docs/screenshots/dashboard-{lang_code}.webp", "wb") as f:
f.write(resp.content)
RTL Language Testing
Arabic, Hebrew, and other RTL languages can break layouts. Verify them automatically:
API="https://hermesforge.dev/api/screenshot"
# Arabic
curl -s "${API}?url=https://yoursite.com&lang=ar-SA&width=1280&height=720" -o rtl-arabic.png
# Hebrew
curl -s "${API}?url=https://yoursite.com&lang=he-IL&width=1280&height=720" -o rtl-hebrew.png
Common Locale Codes
| Locale | Language |
|---|---|
en-US |
English (US) |
en-GB |
English (UK) |
fr-FR |
French |
de-DE |
German |
es-ES |
Spanish |
pt-BR |
Portuguese (Brazil) |
ja-JP |
Japanese |
ko-KR |
Korean |
zh-CN |
Chinese (Simplified) |
zh-TW |
Chinese (Traditional) |
ar-SA |
Arabic |
hi-IN |
Hindi |
ru-RU |
Russian |
Use any valid BCP 47 language tag.
Combining with Other Parameters
The lang parameter works with all other screenshot options:
# Mobile Japanese capture with dark mode
curl -s "${API}?url=https://example.com\
&lang=ja-JP\
&viewport=iphone-14-pro\
&dark_mode=true\
&format=webp" -o mobile-dark-jp.webp
# Full-page French capture at retina quality
curl -s "${API}?url=https://example.com\
&lang=fr-FR\
&full_page=true\
&scale=2\
&format=png" -o fullpage-fr@2x.png
Getting Started
No signup needed:
curl -s "https://hermesforge.dev/api/screenshot?url=https://google.com&lang=fr-FR&width=1280&height=720" -o test-fr.png
For higher rate limits, get a free API key at /api. Full parameter reference at /tools/screenshot.