How to Capture Google SERP Screenshots in Multiple Languages
Capture comparable Google Search results in different languages by controlling the results language and region, recording context, and preserving each screenshot.
To capture comparable Google Search results in multiple languages, run the same query separately for each language, apply Google’s Results Language Filter, set and record the results region independently, and save a screenshot of the visible page. Keep the device, viewport, and other relevant context consistent. This records what appeared at a particular time and setup; it does not guarantee that every result or Search feature will use the selected language.
Google’s display-language setting changes interface text such as buttons and menus. It does not force results into that language. Google considers several signals, including the query, location, and device and browser preferences. Google explains how it determines the language of search results, and Search Central states that results are not forced to match the display language.
1. Decide what you are comparing
Choose the comparison before capturing anything. The choice affects what you can conclude from differences between screenshots.
| Comparison | Keep constant | Change and record |
|---|---|---|
| Language-filter comparison | Query, results region, device, viewport, and other available context | Results Language Filter |
| Market comparison | Query and device or viewport, where practical | Results language and results region; record both changes |
| Localized-query comparison | Device or viewport, where practical | Query wording, language filter, and possibly region; record each change |
For the cleanest language-filter comparison, keep the query wording and region the same and change only the filter. If you translate the query, you are testing a different query as well as a different language setting. Do not attribute all resulting changes to the filter.
2. Record the search context
Before capturing, make a note of the variables that could explain differences. Google says several signals can influence results, and the results-region setting is separate from the display-language setting.
- Exact query, including spelling and punctuation.
- Capture date and time, including time zone.
- Selected Results Language Filter and results region.
- Display language, if relevant to interpreting the screenshot.
- Device, browser, and viewport dimensions.
- Whether you were signed in, if that is relevant to your comparison.
Use the same setup for each capture when you want to isolate language. For market comparisons, vary the region deliberately and document it. Google’s Search settings include a results-region control.
3. Apply the Results Language Filter
- Open Google Search on desktop and run the query.
- Select Tools, then Any language.
- Choose the language you want to filter for.
- Check the selected language and region before capturing.
- Repeat the process separately for each language you want to compare.
Google describes this as a filter for web results. Some Search features may not be affected, and pages whose language is difficult to identify may not be filtered as expected. If you select multiple languages, Google applies them as one combined filter; that does not produce separate result sets for each language. Capture each language separately when you need one screenshot per language. See Google’s instructions for the Results Language Filter.
4. Capture and preserve each screenshot
- Keep the browser at the same device or viewport size for the set.
- Frame the screenshot to include the query and the results or Search features relevant to the comparison.
- Save the original screenshot without editing it.
- Use a consistent filename that includes the date, region, language, and a short query slug.
- If you need to highlight, crop, or blur information, make a separate derivative copy and label it as edited.
For example, a filename can follow this pattern: 2026-10-04_us_french_best-running-shoes_desktop.png. Replace the date, region, language, and query slug for each capture. Use your operating system’s built-in screenshot utility to capture the browser window or a selected area. Shortcuts vary by operating system and can change, so consult the current instructions for your device.
Google’s Search screenshot guidance says the interface should appear naturally and that the interface or results should not be altered. Its guidance addresses use in projects and print, so do not treat it as blanket permission for every commercial use. Review the Google Search guidelines for the context in which you plan to use a capture.
5. Interpret the screenshots carefully
A screenshot is a time- and context-specific record, not a stable ranking report. Layout and visible results can vary with the device, query, and language. The filter applies to web results and may miss some Search features or pages whose language is hard to detect.
Google may also show translated result titles and snippets in supported situations. A translated snippet is translated presentation; it does not mean the destination page was authored in that language. Label what the screenshot shows accurately, and distinguish translated snippets from pages written in the selected language. See Google’s documentation on translated results in Search.
6. Automate repeat captures with a browser
For recurring comparisons, a browser automation script can run the same search, interact with the language filter, and save a screenshot for each capture. The example below uses Playwright with Python. Google’s interface can change, and the language menu may not expose stable selectors, so treat the interaction selectors as something to inspect and maintain for your own browser version and locale. The script captures the visible viewport; use a full-page screenshot only if that is the evidence you need.
from pathlib import Path
from playwright.sync_api import sync_playwright
query = "best running shoes"
languages = ["French", "Spanish", "German"]
output_dir = Path("serp-captures")
output_dir.mkdir(exist_ok=True)
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
page = browser.new_page(viewport={"width": 1440, "height": 1000})
for language in languages:
page.goto("https://www.google.com/search", wait_until="domcontentloaded")
page.get_by_role("combobox").first.fill(query)
page.keyboard.press("Enter")
page.wait_for_load_state("domcontentloaded")
# Google labels and menus can vary by locale or interface version.
page.get_by_text("Tools", exact=True).click()
page.get_by_text("Any language", exact=True).click()
page.get_by_text(language, exact=True).click()
page.wait_for_load_state("domcontentloaded")
safe_query = "-".join(query.lower().split())
filename = f"2026-10-04_region-unspecified_{language.lower()}_{safe_query}.png"
page.screenshot(path=str(output_dir / filename))
browser.close()
Install the dependency with python -m pip install playwright, then install its browser with python -m playwright install chromium. Run the script in an environment where Google Search is available. The example deliberately leaves the region unspecified: choose the desired region in Search settings and record it, or adapt the browser workflow to set it for each capture. Do not infer that a translated query or a display-language change is equivalent to applying the Results Language Filter.
Automation reliability
- Consent or localization screens: the page may show a prompt before results. Handle it explicitly for your environment rather than assuming the first page is the SERP.
- Changing labels: controls such as Tools or Any language can differ by interface language and version. Inspect the page and update selectors when they change.
- Navigation timing: a results page can continue changing after initial document load. If a capture is premature, wait for a result element or a short, bounded delay before saving.
- Repeatability: use one browser version, viewport, query, and capture sequence for a batch. Preserve the original output and the settings record together.
- Access limits and challenges: automated requests may encounter bot checks or other access restrictions. Do not treat a challenge page as a search result; record the failed attempt and follow the service’s terms and access requirements.
Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server. A single request captures a URL as an image or PDF; for a Google SERP, first prepare a URL and browser context that represent the language and region you intend to document. The API does not replace Google’s Results Language Filter or make results stable. See the ScreenshotNeo documentation for request options.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://www.google.com/search?q=best+running+shoes -o shot.webp
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={
"access_key": "YOUR_API_KEY",
"url": "https://www.google.com/search?q=best+running+shoes",
},
timeout=90,
)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({
access_key: 'YOUR_API_KEY',
url: 'https://www.google.com/search?q=best+running+shoes',
});
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
await Bun.write('shot.webp', new Uint8Array(await res.arrayBuffer()));
These examples show the one-call capture pattern. For repeatable multilingual comparisons, configure the target URL and available capture options for your intended language, region, and viewport, then check the response headers and saved output. Cookie banners, popups, and chat widgets are removed before the shot; bot checks, blank pages, and failed loads are never billed; an MCP server lets AI agents take screenshots. The free plan includes 1,000 screenshots a month with no card, and paid plans start at $5 for 3,000. Sign up for free.
Troubleshooting
| Symptom | Likely cause | What to do |
|---|---|---|
| Interface is in the chosen language, but results are not | Display language controls interface text, not the results-language filter. | Apply the Results Language Filter separately and record both settings. |
| Results include pages in other languages | The filter applies to web results, language detection can be uncertain, and some Search features may not be filtered. | Capture the visible outcome as-is and note the limitation; do not describe the filter as a guarantee. |
| One capture seems to include several languages | Several selected languages form one combined filter, or the query and other signals affect results. | Select one filter language per capture and keep the query and region controlled. |
| Results differ more than expected | Region, translated query wording, device, viewport, time, or other context changed. | Compare the context notes and repeat while changing one variable at a time. |
| A translated title appears | Google may translate titles and snippets in supported cases. | Label the visible text as a translated result presentation; do not infer the destination page’s authoring language. |
| Automation cannot find a menu item | Google’s interface labels or structure differ from the script’s assumptions. | Inspect the live page, adapt the locators to the current interface, and handle prompts before continuing. |
| Automation captures a challenge or blank page | The search request did not produce a usable results page, or loading was incomplete. | Do not count it as a SERP capture. Record the issue, check access and timing, and retry only in a permitted way. |
Performance, reliability, and cost
Manual screenshots have little setup cost and work well for a small number of comparisons. They require careful naming and context notes to keep a batch interpretable. Browser automation reduces repeated manual steps but adds dependency installation, browser runtime, selector maintenance, and time for navigation and rendering. Keep batches modest, use a consistent viewport, wait only for the content you need, and preserve failed attempts separately from successful captures.
For a one-off capture, the computer’s built-in screenshot utility is usually the simplest option. For recurring work, account for browser maintenance or the cost of a screenshot service. ScreenshotNeo’s free tier includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots. Its response identifies page verdict and billing status in headers, and only clean shots are billed. Check the product documentation for current request parameters and plan details before building a workflow.
FAQ
Does changing Google’s display language filter the results?
No. It changes interface text. Apply the Results Language Filter when you want to filter web results by language.
Can one screenshot show separate results for several selected languages?
No. Multiple selected languages are a combined filter. Capture each language separately for a per-language comparison.
Does a translated snippet mean the linked page is written in that language?
No. Google can translate a title or snippet while the destination page remains in its original language.
Is a SERP screenshot a ranking report?
It is a record of a visible page under documented conditions at a particular time. It does not establish a stable ranking across users, devices, locations, or later searches.


