Browserless screenshots of Indian websites show the wrong region: how to fix it
A wrong-region screenshot can come from IP address, browser geolocation, locale, timezone, or saved site state. Diagnose each signal and configure it before navigation.
A Browserless screenshot of an Indian website can show the wrong region because the site sees a different public IP, browser geolocation, locale, timezone, or saved site state. These are separate signals. First inspect the public egress IP through the same Browserless session. If it is not in India and the site localizes by IP, configure an India proxy. If IP is correct, check browser geolocation and permission, then locale and timezone. Apply browser overrides before the first navigation. A site may use more than one signal, so changing one setting does not guarantee the page will switch regions.
This guide shows how to diagnose the signal and configure a reproducible capture using Browserless with Playwright. It also covers the limits of what these settings can establish: without the target URL and a signal test, you cannot know which signal a particular website uses.
1. Identify which location signal is wrong
Keep these controls distinct while troubleshooting:
| Signal | What it changes | What it does not establish |
|---|---|---|
| Public IP / network egress | The network address the site sees. Browserless proxy country routing can select an exit country. | Browser coordinates or the language and timezone exposed by the browser. |
| Browser geolocation | Coordinates exposed through the browser Geolocation API, when permission is granted. | Network traffic routing or the public IP’s country. |
| Locale | Browser language and regional formatting preferences. | IP location or physical location. |
| Timezone | The timezone reported by the browser. | IP location or geolocation coordinates. |
| Site state | Cookies, local storage, account preferences, URL parameters, or a remembered region selection. | Any one universal cause; these must be checked on the target itself. |
A page may use IP, geolocation, locale, timezone, saved state, or a combination. Browser context emulation is not an India network route. Likewise, an India proxy does not automatically set browser coordinates. Browserless says requests without proxy configuration use the host machine’s IP in some documented routes, while its BaaS launch documentation describes random proxy locations when a proxy is used without a country selection. Check the exact endpoint and connection type you use. See Browserless BaaS launch parameters and Browserless proxy documentation.
2. Diagnose the capture route and egress IP
- Record whether the capture uses a Browserless REST endpoint, a Puppeteer or Playwright WebSocket connection, or a stealth route. Proxy defaults and supported launch parameters can differ by route.
- Open a trusted IP-information page through the same browser session, or inspect a region indicator provided by the target website. Do not infer the exit location from the Browserless host name.
- Record the observed IP country, the page’s displayed region, the final URL, and any region selector or account state.
- Change one location signal at a time and capture again. This makes it easier to distinguish an IP routing effect from browser emulation or stored state.
If the site is IP-localized and the observed egress is not in India, configure an India proxy using the documented option supported by your Browserless endpoint. Country targeting selects a country; it does not promise a particular city. If you need a specific Indian city, check the current city list and your account tier first. Browserless documentation associates city targeting with its Scale plan (500k+ units) and says lower plans receive a 401 for that feature; plan details can change, so verify them in the current documentation before relying on this.
3. Configure browser settings before navigation
For sites that read the browser’s location, set coordinates and grant geolocation permission at the browser-context level. Set locale and timezone deliberately as well. Create the context before opening and navigating the page.
import { chromium } from 'playwright';
const browser = await chromium.connectOverCDP(process.env.BROWSERLESS_WS_URL);
const context = await browser.newContext({
locale: 'en-IN',
timezoneId: 'Asia/Kolkata',
geolocation: { latitude: 19.0760, longitude: 72.8777 },
permissions: ['geolocation'],
});
const page = await context.newPage();
await page.goto('https://example.in', { waitUntil: 'domcontentloaded' });
await page.screenshot({ path: 'capture.png', fullPage: true });
await context.close();
await browser.close();
Replace the example URL and coordinates with the values appropriate to your test. This example configures browser signals only; route network traffic through an India proxy separately if the site uses IP location. The code assumes your Browserless endpoint supports Playwright’s CDP connection and that BROWSERLESS_WS_URL is set to the connection URL supplied for your account. Browserless connection formats and options vary by product route, so use the matching endpoint’s current documentation.
Playwright documents context-level geolocation, permissions, locale, and timezone emulation. Browserless Enterprise also documents CDP overrides and warns that they must be applied before navigation: “Issue these commands before your first page.goto() call. Any navigation that happens before the overrides are in place will use the browser’s default settings.” See Browserless Enterprise launch options.
4. Select and stabilize the network route
Use Browserless’s documented proxy-country launch parameter for the BaaS route when you need an India exit node. Check the parameter spelling, endpoint, and account support against the current launch options; do not assume a parameter accepted by one route works on another. Without an explicit country selection, the documented BaaS behavior may choose a random location.
For a workflow that needs the same IP through a session, Browserless documents proxySticky=true for sticky routing where supported. Stickiness helps keep an IP stable; it does not choose India. Browserless describes stealth, BrowserQL, unblock, and scrape routes as sticky by default, while plain REST and plain Puppeteer or Playwright WebSocket sessions can use a random proxy node by default. Confirm current behavior for your route in the proxy documentation.
If matching browser language to proxy geography is appropriate, Browserless documents proxyLocaleMatch on stealth endpoints. It affects language preferences, not network location. Locale, timezone, and geolocation should still be configured intentionally when the test depends on them.
5. Check saved state and capture readiness
If the displayed region remains wrong after checking egress and browser settings, try a fresh context and inspect the target for:
- Cookies and local storage that remember a previous region.
- An authenticated account with a saved country or delivery address.
- A region selector, locale path, query parameter, or redirect in the URL.
- A consent or location prompt that must be answered before the page updates.
These are diagnostic possibilities, not confirmed causes for any unspecified target site. Change or clear state only in a test context so the result is reproducible.
Also distinguish location from loading problems. A screenshot captures the rendered page state; an early capture can miss content that appears after images, fonts, or scripts load. Browserless documents screenshot and readiness options for its BAP capture route. Use the relevant wait option for the route you are using, then verify the displayed region in the resulting page. A visually incomplete page alone does not show that location settings failed. See Browserless screenshots and PDFs.
6. Verify the result with a repeatable checklist
- Capture a baseline and record the rendered region and public egress IP.
- Set the India proxy, if the IP check shows the wrong country, and capture again.
- Set geolocation and grant permission if the page requests browser location.
- Set locale and timezone to the intended test profile.
- Use a fresh context to rule out remembered site state; then reintroduce required cookies or login state deliberately.
- Wait for the page’s region indicator and relevant assets before capturing.
- Keep the final configuration, URL, route, and observed values with the test so it can be reproduced.
Changing one signal per capture is a practical diagnostic method derived from the fact that these controls affect different browser or network properties. It is not a guarantee that a target will honor any particular signal.
7. Common errors and fixes
| Symptom | Likely cause | What to check or change |
|---|---|---|
| The site still shows another country after setting geolocation. | The site may use IP location, or geolocation permission was not granted. | Inspect egress through the same session. Set an India proxy if required; set coordinates and grant permission if the page uses the Geolocation API. |
| The page uses the default language or formatting. | Locale was not configured, or it was applied after navigation. | Set context locale before creating/navigating the page. On a supported Browserless stealth route, check proxyLocaleMatch. |
| The site reports the wrong local time. | The browser timezone is still its default. | Set timezoneId before navigation. Do not treat this as evidence of an incorrect IP. |
| Overrides appear to have no effect. | Navigation occurred before overrides, or the connection route does not support the selected configuration. | Create/configure the context first; verify route-specific Browserless options and connection support. |
| A city proxy option returns HTTP 401. | The account may not include city targeting. | Check the current Browserless plan requirements and city availability. The consulted docs identify a 500k+ unit Scale threshold; verify current terms. |
| The same test changes region between runs. | A route may use random proxy egress, or site state differs between contexts. | Use explicit country selection, enable stickiness where supported, and control cookies and other state. |
| The screenshot looks incomplete or shows a loading state. | The capture may happen before the page or assets are ready. | Wait for a meaningful selector or the route’s supported readiness condition. Confirm the region indicator after it renders. |
| A target continues to redirect to a saved region. | Cookies, local storage, account settings, or a URL choice may take precedence. | Test a fresh context and inspect redirects and region controls. Preserve only the state required by the test. |
8. Performance, reliability, and cost considerations
Each extra navigation, readiness wait, and diagnostic capture adds time to a workflow. A targeted wait for the region indicator can be more useful than waiting indefinitely for all network activity, especially on pages with long-lived requests; choose a condition supported by your Browserless route and target. Full-page captures and pages with many assets can also take longer to render and capture.
For repeatability, make the route and browser context explicit, use sticky routing only when session IP continuity matters, and control cookies and account state. A sticky session is not a substitute for an India country selection. A successful browser override also does not prove that the public IP is Indian.
Proxy availability, city targeting, endpoint support, and plan requirements are account- and product-dependent. Confirm them in current Browserless documentation and your account before estimating cost. The cited materials do not establish a proxy success rate or regional accuracy benchmark, so none should be assumed.
9. Or skip the browser setup
If you need a screenshot without maintaining a Browserless browser session, ScreenshotNeo is a website screenshot API and MCP server. It returns a PNG, JPEG, WebP, or PDF from one GET request. Its API can set timezone and geolocation, and its parameter names are compatible with those used by other screenshot APIs. Those settings do not by themselves establish that a target uses browser location rather than IP; verify the target’s behavior when region accuracy matters.
curl -G "https://api.screenshotneo.com/v1/shot" \
-d access_key=YOUR_API_KEY \
--data-urlencode url=https://example.in \
-o shot.webp
See the ScreenshotNeo API documentation for authentication and options. Cookie banners, popups, and chat widgets are removed before the shot. Bot checks, blank pages, failed loads, timeouts, and cache hits are never billed, and the response identifies page verdict and billing status in headers. An MCP server lets AI agents use take_screenshot, get_page_info, and capture_pdf. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000 shots. Sign up for 1,000 free screenshots a month, no card required.
10. FAQ
Does setting en-IN make the site see an Indian IP?
No. Locale changes browser language and regional preferences. Use a supported India proxy route when the site depends on public egress IP.
Do latitude and longitude route traffic through that location?
No. Browser geolocation emulates coordinates exposed to pages with permission. Network routing must be configured separately.
Does sticky proxy mode select India?
No. Stickiness is for keeping an exit IP stable where supported. Select the country separately.
Can these settings guarantee the correct region on every Indian website?
No. The site’s localization logic and stored state vary. Verify the signal it uses by checking the rendered result and changing one control at a time.
Can I test a specific Indian city?
Browserless documentation describes city targeting with plan and availability conditions. Check the current city list, endpoint support, and account requirements before depending on it.


