Geo-Targeting

Route browser sessions through residential proxies in specific countries with aligned timezone, locale, and language

Country-routed sessions

Pass ?country=XX (ISO 3166-1 alpha-2) when connecting to route your session through a residential proxy in that country:

wss://api.anakin.io/v1/browser-connect?country=GB

Aligned fingerprint signals

When you pass ?country=, the browser's timezone, locale, language, and Accept-Language all match the proxy's country. Anti-bot systems compare these against the IP — a UK IP that reports UTC and en-US is an obvious bot signal. With ?country=GB every signal lines up.

What websites see for ?country=GB:

SignalWhat websites see
Exit IPUK residential (e.g. BT, Virgin Media, Sky)
navigator.languageen-GB
navigator.languages["en-GB"]
Accept-Language request headeren-GB
Intl.DateTimeFormat().resolvedOptions().timeZoneEurope/London
new Date().getTimezoneOffset()-60 (BST) or 0 (GMT) depending on the date
Intl.NumberFormat default localeen-GB (formats currency as £)
Intl.NumberFormat(undefined, {style:'currency',currency:'GBP'})£1,234.56
WebRTC ICE candidatesmDNS-obfuscated (no real IP leak)
navigator.geolocationdenied by default (requires explicit user grant)

Supported countries

Per-country timezone and locale defaults:

CodeTimezoneLocale
USAmerica/New_Yorken-US
GBEurope/Londonen-GB
DEEurope/Berlinde-DE
FREurope/Parisfr-FR
ESEurope/Madrides-ES
ITEurope/Romeit-IT
NLEurope/Amsterdamnl-NL
SEEurope/Stockholmsv-SE
JPAsia/Tokyoja-JP
KRAsia/Seoulko-KR
CNAsia/Shanghaizh-CN
INAsia/Kolkataen-IN
SGAsia/Singaporeen-SG
HKAsia/Hong_Kongzh-HK
AUAustralia/Sydneyen-AU
NZPacific/Aucklanden-NZ
CAAmerica/Torontoen-CA
MXAmerica/Mexico_Cityes-MX
BRAmerica/Sao_Paulopt-BR
ARAmerica/Argentina/Buenos_Aireses-AR
AEAsia/Dubaiar-AE
SAAsia/Riyadhar-SA
ZAAfrica/Johannesburgen-ZA

Country codes not in this list still route through a residential proxy in that country (proxy availability permitting), but timezone and locale fall back to the browser's defaults (UTC and en-US). Open a support ticket if you need a country added to the alignment table.

If ?country= is omitted, sessions default to US.

Example: GB session

import asyncio
from playwright.async_api import async_playwright

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.connect_over_cdp(
            "wss://api.anakin.io/v1/browser-connect?country=GB",
            headers={"X-API-Key": "your_api_key"},
        )
        page = browser.contexts[0].pages[0]

        # IP, timezone, language all align to GB
        info = await page.evaluate("""
            ({
                tz: Intl.DateTimeFormat().resolvedOptions().timeZone,
                lang: navigator.language,
                offset: new Date().getTimezoneOffset(),
            })
        """)
        print(info)  # {tz: 'Europe/London', lang: 'en-GB', offset: 0}

        await browser.close()

asyncio.run(main())

Sticky exit IP within a session

A single session keeps the same exit IP for its duration. Reconnecting issues a fresh proxy by default — pair with Saved Sessions if you need IP stickiness across reconnects (the saved session's proxy is preserved).