regions array lets you target that geography.
The regions array
regions is an array of region objects — at most 10 per request (more returns 422 TOO_MANY_REGIONS). Each object describes one place to capture from. When you omit regions entirely, each surface runs one untargeted capture — its child id carries the region key GLOBAL.
ISO-3166 alpha-2 country code (e.g.
US, GB, DE, JP). This is the only required field in a region object. A bare string like "US" (or a flat country field) is accepted as sugar for { "country": "US" }.Optional sub-national code or name (e.g.
NY, California) to narrow
targeting within the country.Optional city name to narrow targeting further (e.g.
London, San Francisco). Useful for locale-sensitive queries like local businesses or
regional pricing.Optional language hint for the capture (e.g.
en, de, ja). When omitted,
the surface uses its own default for the country.Optional Google Ads geotarget canonical name (e.g.
"Buffalo,New York,United States") that pins the Google surfaces (google_search,
google_news, google_ai_overview, google_ai_mode) to a precise locality
via a uule parameter — one of ~100,000 named cities, ZIPs, and boroughs from
Google’s public geotargets
list. It layers
on top of the residential exit above (country/state/city), giving
you named-locality targeting independent of the exit IP. Max 63 UTF-8 bytes.
Applied only to Google surfaces; ignored by the others. If the name can’t be
encoded, no locality is applied and a
location_not_applied warning is returned
rather than a wrong locality. See Local rank tracking & geo
targeting for the full three-layer model.Country coverage
The v1 residential exit network has the broadest, best-verified coverage in:US, GB, DE, FR, CA, AU, IN, JP, BR
country accepts any valid ISO 3166-1 alpha-2 code — this list is where coverage is strongest, not an allowlist, so a valid country outside it is not rejected. The capture still runs; provenance.region.effective always reports where it actually ran. The only country-shape error is a malformed code (not two letters), which is a 400 VALIDATION_FAILED. GET /v1/regions returns the targeting shape and popular countries programmatically.
One child per surface × region
The most important rule: the API creates one child job for every combination of surface and region. Surfaces and regions multiply. If you request two surfaces across two regions, you get four children:202 with one child id per pairing:
job_<id>.<surface>.<regionKey>, where the region key is the lowercased country[:city][:language] (or GLOBAL for an untargeted capture). The acquisition method is deliberately not in the id. Fetch any child with GET /v1/jobs/:id to receive its Envelope, or poll the parent for the rollup. See Asynchronous jobs for the full polling flow.
Requested vs. effective region
We always try to honor the exact region you asked for. When a surface can’t be captured from precisely that location, we capture from the closest workable location instead and tell you — rather than silently returning something from the wrong place. Every Envelope reports both values underprovenance.region:
The region you asked for.
null for an untargeted capture.The region the capture actually ran from. When it matches
requested, the
region was honored exactly. When it differs, the surface answered from
effective instead.effective falls back to the broader region:
Choosing regions
Global market coverage
Global market coverage
List one region object per market you care about. Because every surface runs in every region, you get a clean matrix — the same parser handles
job_<id>.chatgpt.us and job_<id>.chatgpt.de identically.Language variations within a country
Language variations within a country
Add the
language field to capture the same country in different languages (e.g. { "country": "DE", "language": "de" } and { "country": "DE", "language": "en" }). Each is a separate capture and a separate child.City-level local intent
City-level local intent
For queries with strong local intent — nearby businesses, regional availability, local pricing — set
city (and optionally state). If the city can’t be honored, effective shows you the fallback so you know the precision you actually got.Next steps
Credits & pricing
See how regions multiply captures and what each surface costs.
Search API reference
Full request and response schema for POST /v1/search.