Skip to main content
Your site behaves differently depending on where the visitor is: currency, language, legal banners, available plans, which ads render. You cannot check any of that from your own desk.

What this covers

Three jobs that are the same job underneath - look at something from somewhere else:
  • Localisation QA. Does the German site actually show euros, and does the cookie banner appear where it must?
  • Search and marketplace results. What ranks in Brazil, what your competitors’ listings look like there.
  • Ad verification. Which creatives run in which market, and whether your placements appear at all.

The setup

I need to check how our site renders in Germany, Brazil and Japan.
Verification traffic is light - you are loading pages, not harvesting a catalogue - so a small cap is realistic.

Hold the IP for the whole check

This is the one case where a sticky session is not optional. A localisation check is a sequence: land on the page, accept the banner, switch a filter, look at checkout. If the exit IP changes halfway, the site may re-detect the location and reset everything you just did.
A 30-minute TTL comfortably covers a manual pass. See Session Control.
Use a different session ID per country. Reusing one ID across markets means reusing one IP, and the second check reports the first country’s results.

In a headless browser

Most verification is visual, so a browser beats an HTTP client:
verify.js
Three screenshots, three markets, one proxy. Full setup notes in the Playwright guide.

Going city-level

Ad targeting and delivery promises are often set below the country. Ask the agent to resolve it:
Same check, but from São Paulo.
Region and ZIP targeting work the same way. Which countries support which level is listed under Geo Reference.

Reading the result honestly

Two things trip people up. IP geolocation databases disagree. Two “where am I” services can report different cities for the same IP. What matters is what your target site concludes, not what a checker says - see My IP location is incorrect. The IP is not the only signal. Sites also read Accept-Language, the timezone your browser reports, and any stored preference. If a page still renders in English through a German IP, check the browser locale before blaming the proxy.
Set the browser locale and timezone to match the market. In Playwright: chromium.launch({ ... }) then browser.newContext({ locale: "de-DE", timezoneId: "Europe/Berlin" }).

Next steps

Price Monitoring

The same geo mechanics, run on a schedule.

Agent Web Access

Giving an agent general reading access to the web.