Geo targeted proxies: country, region or city level

Geo targeted proxies filter exits by country, region or city. How accurate each level is, why city pools run thin, and when country targeting is enough.

Three thick map panels in one perspective, each level down smaller with fewer online exits lit: the country, the United States with many exits lit and Illinois tinted, the deepest pool; the region, Illinois lifted off its outline on that map, a slice, with Chicago marked; and the city, Chicago on the lake, two exits lit, a small pool. Thin wires run from Illinois on the map to the region panel and from Chicago on it to the city panel. Your order, a sky-tinted glass sheet, reads US > Illinois > Chicago from devices online now, with no ASN, ISP or carrier filter.
Quick summary · TL;DR
  1. A geo target is a label plus a live pool. The label comes from an IP geolocation database, and the pool is whatever devices are online in that place when the order runs. Both get weaker as the target gets finer.
  2. City labels are estimates. MaxMind estimates 99.8% accuracy at country level but 66% for US cities within 50 km (checked September 2026). Mobile carrier addresses may resolve only to country and state, and the target runs its own lookup.
  3. Pool depth drops at every level. Per-request rotation in a small city cycles the same few exits, so the request rate has to stay at what the target allows.
  4. proxymint targets country, region and city only. Residential and mobile carry all three; ISP and datacenter IPv4 are chosen by country at order time. There is no ZIP, ASN, ISP or carrier selection on any tier.
  5. The IP is one location signal of several. Accept-Language, DNS, WebRTC and the site's saved store or location can contradict a correct exit.

Geo targeted proxies are proxy exits filtered by location: country, region, city, and with some providers a ZIP code or network. The location of each exit is a label from an IP geolocation database, not a GPS fix, and the pool is whatever devices are online in that place right now. The finer the target, the smaller the pool and the less certain the label.

A local rank check for “plumber near me” comes back with results from the wrong side of the state. A price scrape set to Munich returns the page a Berlin shopper sees. The order said city level. The pool delivered whatever was online, and the target ran its own lookup.

How geo targeted proxies pick exits

A rotating pool is a set of exit IPs, each tagged with a location. The tag comes from an IP geolocation lookup: country, then region, then city. A country, region or city filter narrows the pool to the exits whose tag matches, and the rotation setting decides how often a new exit is drawn from that narrowed set.

Two facts follow. The location is a database estimate, so it can be wrong in the provider’s database, in the target’s database, or in both. And the pool is live. On rotating residential proxies and on mobile, proxymint picks country, region and city from locations with devices online at the moment of ordering, not from a static list. A city with plenty of devices online at noon can be thin at 4 a.m.

So geo targeted proxies are two products stacked, a label and a pool, and every problem after that definition comes from one of the two.

Five levels of geo targeted proxies

Providers sell up to five levels. Four are filters on the same database label, each one finer than the last. The fifth filters on the network instead of the place. proxymint sells the first three.

ZIP or postal code

A ZIP target is the city label one step finer: every weakness of the city label, drawn from an even smaller pool. proxymint does not offer ZIP or postal targeting on any tier. The practical route around it runs through the site itself. Grocery, delivery and retail sites usually ask for a postcode or store and build the page from that choice, so a city exit plus the ZIP entered in the site gets the local page.

ASN or ISP

An ASN target picks exits by the network that announces the address: one home ISP, one mobile carrier. Unlike a location label, the ASN comes directly from routing data, so it does not depend on a location guess. proxymint does not offer ASN, ISP or carrier selection. Its ISP tier is a proxy type, not an ISP filter: the country is chosen at order time, the network is not.

What the location label is worth

Geolocation databases are good at countries and much less sure about cities. MaxMind’s own accuracy notes (checked September 2026) estimate 99.8% accuracy at the country level, around 80% at the state or region level for US IPs, and 66% for US cities, where “accurate” means within 50 km of the true city. The same page warns that accuracy varies by country and by cellular versus broadband.

Self-published locations. Part of what feeds these databases is the network operator itself. RFC 8805, published August 2020, defines geofeeds: a CSV where an operator maps its prefixes to a country, an ISO 3166-2 region and a free-text city. The RFC says plainly that errors can occur at many levels and that consumers should validate what they ingest. A home ISP that publishes its whole prefix under the capital city moves every subscriber there, on paper.

Mobile labels are the weakest. The MaxMind page gives the reason: an address in a mobile network can serve phones across a large distance, and when one serves a whole US state, MaxMind stores the country and state and leaves the city out. So a target’s database may place a mobile exit only in the right state. proxymint’s mobile exits are classified as cellular by MaxMind. Home broadband addresses usually carry the firmer city label.

Two databases, two answers. The target does not read the proxy provider’s label. It runs its own lookup, often against a different vendor. At country level the two almost always agree. At city level a disagreement is routine, which is why a “Munich” exit can get the Berlin page. For any geo proxy, the only label that counts is the one the target computes.

Pool depth shrinks with granularity

Every step down from country cuts the number of eligible exits. Coverage maps show where exits exist, not how many are online. Residential proxies by city draw from a fraction of the national pool. How much smaller depends on the country, the time of day and how many devices sit in that city at all. A capital city holds a real share of a country’s online devices. A town of 30,000 might hold a handful, or none right now.

City-level proxies repeat the same IPs

Per-request rotation assumes a deep pool, and city level proxies rarely have one. Point it at a small city and the draw keeps landing on the same few exits, so the target sees a handful of IPs doing a lot of work. Keep the request rate at what the target allows, and use a timed session when the job needs one consistent exit.

Measure depth before committing

No coverage map shows how deep a city is at the hour the job runs. A 500-request count does. Pick three countries. For each, send 500 requests at country, region and city level through per-request rotation to an IP echo endpoint, and count the unique IPs returned at each level. Run it twice, at local midday and at 4 a.m., because the answer changes with the hour.

import requests
from collections import Counter
from urllib.parse import quote

USER, PASS = "USERNAME", "PASSWORD"
PROXY = f"http://{quote(USER, safe='')}:{quote(PASS, safe='')}@HOST:PORT"  # location and rotation set on the order
seen = Counter()
for _ in range(500):
    ip = requests.get("https://api.ipify.org",
                      proxies={"http": PROXY, "https": PROXY},
                      timeout=20).text
    seen[ip] += 1

print("unique IPs:", len(seen))
print("most reused:", seen.most_common(5))

Two numbers come out: unique IPs per 500 requests, and, after the lookup in the next section, the share of city labels a second database confirms. If the city run returns a small fraction of the country run’s unique IPs, the city is thin at that hour. Check whether the data really changes by city; if it does not, region keeps the deeper pool.

Setting a location and checking it

On proxymint, the location is part of the order: residential and mobile take a country, region and city from locations with devices online when the order is placed, and a live order can move to another location later with the same logins. ISP and datacenter IPv4 take a country, fixed after purchase. Whatever the provider, check that the location landed before the real job runs:

  1. Echo the exit. Send one request through the proxy to an IP echo service and record the address and location it reports.
  2. Look it up again. Check the same address in a second geolocation database. At city level, note any disagreement instead of assuming the provider is right.
  3. Load a location-aware page. From the same session, open a page that states where it thinks the visitor is, such as a store locator.
  4. Run the job. Repeat the check when the order or the session changes.

The first two steps fit in a few lines, using an echo service through the proxy and a local MaxMind GeoLite2 City file (free MaxMind account needed):

import requests
import geoip2.database  # pip install geoip2
from urllib.parse import quote

USER, PASS = "USERNAME", "PASSWORD"
PROXY = f"http://{quote(USER, safe='')}:{quote(PASS, safe='')}@HOST:PORT"
proxies = {"http": PROXY, "https": PROXY}

echo = requests.get("https://ipinfo.io/json", proxies=proxies, timeout=20).json()
with geoip2.database.Reader("GeoLite2-City.mmdb") as db:
    r = db.city(echo["ip"])

print("echo   :", echo.get("country"), echo.get("region"), echo.get("city"))
print("maxmind:", r.country.iso_code, r.subdivisions.most_specific.name, r.city.name)

A None city on a mobile exit is the cellular caveat in action, not a broken proxy.

Keeping the session consistent

A correct geo proxy exit is one location signal out of several. Google’s help page on location in Search (checked September 2026) lists four: device location, saved home and work addresses, past activity, and the IP address. Other sites read their own mix, and when the browser says New York and the exit says Munich, the page may follow the browser instead of the exit.

  • Accept-Language. The header and navigator.language should fit the market: de-DE for a German exit, not the machine’s default.
  • DNS. If the client resolves hostnames itself, the lookup leaves through the local network, and a CDN can answer for the machine’s location instead of the exit’s. On proxymint’s per-GB gateway, measured in September 2026, HTTP CONNECT and socks5h:// resolve names on the proxy side (our US test exits used US public resolvers), while plain socks5:// leaves the lookup to your machine, the proxy DNS leak case.
  • WebRTC. A browser peer connection can reveal an address other than the proxy exit, whatever the IP lookup says.
  • The site’s own location. Stores keep the selected store or postcode in a cookie or account. A fresh profile per market stops yesterday’s Munich store from following today’s Hamburg exit.

In a Playwright job, two context options cover the first two; the full Playwright proxy setup has the rest. The Playwright docs (checked September 2026) state that locale sets both navigator.language and the Accept-Language header:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(proxy={
        "server": "http://HOST:PORT",
        "username": "USERNAME",
        "password": "PASSWORD",
    })
    context = browser.new_context(
        locale="de-DE",  # navigator.language and Accept-Language for the German market
    )
    page = context.new_page()
    page.goto("https://example.com/")

When city level is worth it

City level earns its place when the answer itself changes by city.

  • Local search. Map packs and “near me” results follow the searcher’s location, and the IP is one of the signals Google names. Residential proxies by city, in a browser that agrees with them, show a given city’s local pack. For Maps listings themselves, the Places API comes before any proxy, as how to scrape Google Maps sets out.
  • Local delivery and stock. Grocery, delivery and store availability change by postcode and store. Checking local stock at a retailer takes a residential city exit plus the store or ZIP selected in the session, and the retailer’s own terms still apply.
  • Local ads. Advertisers set radius targeting around stores. Checking those placements needs an origin inside the radius.

Region is the middle rung, and underused. “California only” is a region target: state sales tax, state promotions and regional streaming rights change at the state line. Regional proxies keep more pool depth than city level proxies for the same answer, with a firmer label.

When country-level targeting is enough

Country is enough far more often than the city maps suggest. National e-commerce prices, most catalog scraping, language-level search results and content licensing all key on country. There a proxy by country is the right call: city level buys a thinner pool and a shakier label for no change in the data.

Proxy types that support city targeting

On proxymint, residential and mobile carry country, region and city, with per-request, timed (5 to 60 minutes) or sticky rotation. ISP and datacenter IPv4 are country only, chosen at order time. That split follows the product: static ISP proxies hold one ISP-registered address, assigned to your order for the whole billing term, which suits one market’s account work and not a city sweep.

Free geo targeted proxies. Public free lists look like a cheap location test. But the location on them is unverified, the addresses are shared with every reader of the list, and an open proxy’s operator can log every request and read anything not encrypted.

What geo targeting costs

City targeting does not change the per-GB rate on proxymint. A local SEO job pays for the traffic it moves, whichever level it targets. Mobile proxies fit when the target treats mobile-network IPs differently from home IPs. A country-level price monitor on a lenient storefront needs neither: datacenter proxies are built for it. The rates are on the pricing page.

Pick the coarsest level that works

Start from the data, not the map.

  • The page changes by postcode or store: use a city exit and set the ZIP or store inside the site.
  • It changes by city: use city level geo targeted proxies on residential, and count unique IPs before scaling.
  • It changes by state or region: regional proxies keep the deeper pool for the same answer.
  • It changes only by country: use a proxy by country, and consider whether the target is lenient enough for datacenter.

For most multi-market work, geo targeted proxies on residential at country or region level are the default, and city level is a tool for local search, local stock and local ads. Readers new to the tier can start with how a residential proxy routes traffic.

Frequently asked questions

City-level targeting is only as accurate as IP geolocation, which is much weaker at city level than at country level. MaxMind estimates 99.8% country accuracy but 66% for US cities within a 50 km radius. Mobile carrier addresses are the weakest case, because one address can serve phones across a whole state and may resolve only to country and state. The target runs its own lookup, so it can disagree with the provider's label.

The website runs its own IP lookup, often against a different geolocation database, and at city level two databases disagree routinely. Operator geofeeds can be wrong, and mobile addresses may resolve only to a state. The browser also sends other location signals, such as timezone, language, a saved store or address and device location, and the site may follow those instead of the IP.

Yes, at country level. On proxymint, datacenter IPv4 ports are chosen by country at order time and keep their address for the billing term. Datacenter addresses belong to hosting networks, so they fit lenient targets such as national price pages without anti-bot scoring. City targeting on proxymint runs on residential and mobile.

Geo targeted proxies are proxy exits filtered by location, usually country, region or city. The location of each exit comes from an IP geolocation database, and the pool contains only the exits online in that place at the time. They let a scraper, SEO tool or ad checker see a page the way a local visitor does.

An advertiser wants to see the local ads a Chicago visitor sees on a publisher's page, so it sets the exit to city level, Chicago, and loads the page in a fresh browser profile with an en-US locale. A region target is the other common case: a retailer checks whether a promotion runs in California only by loading the page from a California exit and again from a Texas exit.

Not on proxymint. It targets country, region and city on residential and mobile, and country on ISP and datacenter IPv4, with no ZIP, postal code, ASN, ISP or carrier selection. For a ZIP-level page, use a city exit and enter the ZIP or store in the site itself.

On proxymint, residential traffic is billed per GB, and city targeting does not change the per-GB rate: a city, a region and a country order cost the same per GB. The GB are bought once with no renewal, and the pricing page has the rates.

Researched and drafted with AI tools, then checked against our publishing rules before it went live: 5 outside links, 9 links to other proxymint pages, no prices and a fact-check pass against our product records. How we write.