Skip to content
Geo-Targeting

Country & Geo-Targeting

Target proxies with precision - from country-level down to specific states and cities. Access geo-restricted content, verify localized pricing, and test region-specific experiences from 195+ countries.

Targeting Levels

Geo-targeting is part of your residential proxy credentials: it is appended to the password on the Light and Basic plans, and to the username on Advanced (country only). Use the proxy username and password from your dashboard (Residential → Generate Proxies) or from POST https://api.zentislabs.com/api/v1/proxies/generate (X-API-Key header). Every generated line is host:port:username:password. Your API key is not a proxy credential.

Country

country-us

Lowercase ISO 3166-1 alpha-2 code. All residential plans. 195+ countries available.

State / Region

state-california

Lowercase state name without spaces (e.g. newyork). Light and Basic plans.

City

state-california-city-losangeles

A city is added to its state. Lowercase, no spaces. Light and Basic plans.

Credential Format Reference

Each plan has its own gateway and its own credentials: Light light.resi.zentislabs.com:31112, Basic basic.resi.zentislabs.com:12321, Advanced advanced.resi.zentislabs.com:61236. Light and Basic separate parameters with underscores in the password; Advanced uses hyphens in the username.

TargetingUsername:PasswordDescription
Country (Light / Basic)USERNAME:PASSWORD_country-usRandom US IP, rotating
Country + sticky (Light)USERNAME:PASSWORD_country-us_session-abc123Sticky US IP
Country + sticky (Basic)USERNAME:PASSWORD_country-us_session-abc123_lifetime-30mSticky US IP, 30-minute lifetime
Country + stateUSERNAME:PASSWORD_country-us_state-californiaCalifornia IP (Light / Basic)
Country + state + cityUSERNAME:PASSWORD_country-gb_state-england-city-londonLondon IP (Light / Basic)
Full targetingUSERNAME:PASSWORD_country-de_state-berlin-city-berlin_session-s1Sticky Berlin IP (Light / Basic)
Country (Advanced)USERNAME-country-us:PASSWORDRandom US IP, rotating
Country + sticky (Advanced)USERNAME-country-us-session-abc123-sessionduration-30:PASSWORDSticky US IP, 30-minute session

For sticky sessions, use the lines generated in the dashboard or API as-is: they may point at a single gateway IP instead of the hostname so the exit IP stays the same.

Code Examples

Country-Level Targeting

bash
# Target specific countries using lowercase ISO 3166-1 alpha-2 codes
# Basic: country goes in the PASSWORD
curl -x "http://USERNAME:PASSWORD_country-us@basic.resi.zentislabs.com:12321" "https://httpbin.org/ip" # USA
curl -x "http://USERNAME:PASSWORD_country-gb@basic.resi.zentislabs.com:12321" "https://httpbin.org/ip" # UK
curl -x "http://USERNAME:PASSWORD_country-de@basic.resi.zentislabs.com:12321" "https://httpbin.org/ip" # Germany
curl -x "http://USERNAME:PASSWORD_country-jp@basic.resi.zentislabs.com:12321" "https://httpbin.org/ip" # Japan
curl -x "http://USERNAME:PASSWORD_country-br@basic.resi.zentislabs.com:12321" "https://httpbin.org/ip" # Brazil
# Light: same password syntax, Light gateway and Light credentials
curl -x "http://USERNAME:PASSWORD_country-us@light.resi.zentislabs.com:31112" "https://httpbin.org/ip" # USA
# Advanced: country goes in the USERNAME
curl -x "http://USERNAME-country-us:PASSWORD@advanced.resi.zentislabs.com:61236" "https://httpbin.org/ip" # USA

Multi-Country Scraping

python
import requests
countries = {
"US": "United States",
"GB": "United Kingdom",
"DE": "Germany",
"FR": "France",
"JP": "Japan",
"AU": "Australia",
"BR": "Brazil",
"IN": "India",
}
for code, name in countries.items():
proxy = f"http://USERNAME:PASSWORD_country-{code.lower()}@basic.resi.zentislabs.com:12321"
proxies = {"http": proxy, "https": proxy}
try:
r = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=30)
ip = r.json()["origin"]
print(f"{name} ({code}): {ip}")
except requests.RequestException as e:
print(f"{name} ({code}): Failed - {e}")

State-Level Targeting

bash
# Target a state or region (Light and Basic plans)
# State names are lowercase with no spaces
curl -x "http://USERNAME:PASSWORD_country-us_state-california@basic.resi.zentislabs.com:12321" "https://httpbin.org/ip" # California
curl -x "http://USERNAME:PASSWORD_country-us_state-texas@basic.resi.zentislabs.com:12321" "https://httpbin.org/ip" # Texas
curl -x "http://USERNAME:PASSWORD_country-de_state-bayern@basic.resi.zentislabs.com:12321" "https://httpbin.org/ip" # Bavaria
curl -x "http://USERNAME:PASSWORD_country-us_state-newyork@light.resi.zentislabs.com:31112" "https://httpbin.org/ip" # New York (Light)

City-Level Targeting

python
import requests
# Target specific cities for localized content (Light and Basic plans)
# A city is always added to its state: _state-<state>-city-<city>
cities = [
{"country": "us", "state": "newyork", "city": "newyork", "label": "New York"},
{"country": "us", "state": "california", "city": "losangeles", "label": "Los Angeles"},
{"country": "us", "state": "illinois", "city": "chicago", "label": "Chicago"},
{"country": "gb", "state": "england", "city": "london", "label": "London"},
{"country": "de", "state": "berlin", "city": "berlin", "label": "Berlin"},
{"country": "fr", "state": "iledefrance", "city": "paris", "label": "Paris"},
]
for loc in cities:
proxy = f"http://USERNAME:PASSWORD_country-{loc['country']}_state-{loc['state']}-city-{loc['city']}@basic.resi.zentislabs.com:12321"
proxies = {"http": proxy, "https": proxy}
r = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=30)
print(f"{loc['label']}: {r.json()['origin']}")

Regional Gateways

For lower latency, each plan also has regional gateways on the same port as the plan gateway: add -us, -eu or -asia to the plan name, e.g. basic-eu.resi.zentislabs.com:12321. The target country still comes from the country parameter, and the dashboard and API pick the regional gateway for you automatically.

bash
# Regional gateways: {light|basic|advanced}-{us|eu|asia}.resi.zentislabs.com (same ports)
curl -x "http://USERNAME:PASSWORD_country-us@basic-us.resi.zentislabs.com:12321" "https://httpbin.org/ip" # USA, US gateway
curl -x "http://USERNAME:PASSWORD_country-de@basic-eu.resi.zentislabs.com:12321" "https://httpbin.org/ip" # Germany, EU gateway
curl -x "http://USERNAME:PASSWORD_country-jp@basic-asia.resi.zentislabs.com:12321" "https://httpbin.org/ip" # Japan, Asia gateway
curl -x "http://USERNAME:PASSWORD_country-gb@light-eu.resi.zentislabs.com:31112" "https://httpbin.org/ip" # UK, Light EU gateway
curl -x "http://USERNAME-country-us:PASSWORD@advanced-us.resi.zentislabs.com:61236" "https://httpbin.org/ip" # USA, Advanced US gateway

Popular Countries

usUnited States
gbUnited Kingdom
deGermany
frFrance
caCanada
auAustralia
jpJapan
brBrazil
inIndia
nlNetherlands
itItaly
esSpain
mxMexico
plPoland
trTurkey
krSouth Korea
sgSingapore
hkHong Kong
seSweden
chSwitzerland
beBelgium
atAustria
noNorway
dkDenmark
fiFinland
ieIreland
ptPortugal
zaSouth Africa
ilIsrael
arArgentina
clChile
ruRussia

Plus 160+ additional countries. Full list available in the dashboard.

Use Cases for Geo-Targeting

Price Monitoring

Track geo-specific pricing on e-commerce sites. See the exact prices shown to local customers.

SEO & SERP Tracking

Check search engine rankings from any country or city for accurate local SEO data.

Content Verification

Verify geo-restricted content delivery, localized landing pages, and regional offers.

Ad Verification

Verify ad placements and detect ad fraud from specific countries and regions.

Compliance Testing

Test GDPR compliance, content restrictions, and regional policy enforcement.

Localization QA

Test translated content, local currencies, and region-specific UX from real local IPs.