Capture Websites in Any Language with the Accept-Language Screenshot API

2026-05-23 | Tags: [screenshot-api, localization, i18n, accept-language, automation]

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:

  1. Sets the Accept-Language HTTP header — the server sees a request from a French/German/Japanese browser
  2. Sets the browser locale — JavaScript navigator.language returns 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.