regions array lets you target that geography precisely.
The regions array
regions is an array of region objects. Each object describes one place to capture from. The default, when you omit regions entirely, is a single US capture:
ISO-3166 alpha-2 country code (e.g.
US, GB, DE, JP). Case-insensitive. This is the only required field in a region object.Optional city name to narrow targeting within the country (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.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>.<region>. 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 object exactly as you specified it in the request.
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": "CH", "language": "de" } and { "country": "CH", "language": "fr" }). 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. 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.