A location ID is the unique code ChatGPT Ads assigns to each targetable place, a country, region, or market, that you pass to the Advertiser API to tell a campaign where it can serve. The place name beside it only helps you choose; the API matches on the ID alone, so an exact ID is what controls delivery.
If you run ChatGPT Ads for a business that serves specific places, location IDs decide whether your budget reaches buyers you can sell to. Pass the wrong ID or skip targeting entirely and your spend spreads across every available market, paying for impressions far outside your service area.
Every place ChatGPT Ads can target has one location ID, a stable numeric identifier pulled from OpenAI's geo catalog that you reference when you build or edit a campaign's targeting. Each ID maps to exactly one geography and carries a type: country, region, or market. You find IDs through the geo lookup endpoint or by downloading the published location catalog, then copy the values you need.
A location record returns more than the ID itself. Alongside the id, the catalog gives you a display name, a canonical_name, a country_code, a type, a parent_id, and a region_code where one exists. Those fields exist so you can confirm you have the right San Francisco or the right California before you commit spend, but only the id value is passed back to the campaign.
Location IDs sit inside a campaign's targeting object, separate from the context hints and first-party audiences that steer who sees an ad. They set the where; context hints and audiences handle the who. For teams running AI search and AI ads together, AirOps connects paid targeting decisions to the same intelligence that guides your AI discovery strategy.
A location ID moves through a clear sequence, from finding a place in the catalog to serving ads against it. Here is how the Advertiser API runs it.
Search the catalog: Call the geo lookup endpoint with a query like California, or download the full location catalog as a CSV. Each result comes back with its id and descriptive fields.
Confirm the match: Read the canonical_name, country_code, and type so the ID points to the exact country, region, or market you mean and avoids a same-named place elsewhere.
Copy the IDs: Pull the id value from each location you want to reach, and from any you want to exclude.
Pass them in: Add the IDs to targeting.locations.include when you create or update the campaign. Excluded places go in excluded_locations.
Serve and expand: The API saves the campaign, expands each ID into its full location details, and limits delivery to those places.
The saved targeting tells you which geographies can receive impressions. It does not tell you how many people will see your ad; that depends on your budget, your bids, and the context.
Location IDs are the only lever in ChatGPT Ads that decides where your money goes geographically, so getting them right is a budgeting decision before it is a technical one. For any advertiser with a defined service area, sales territory, or licensing boundary, the IDs you choose set the ceiling on how efficient your spend can be.
Spend efficiency: Precise IDs keep impressions inside the places you can convert, so none of your budget pays to reach people you cannot sell to or ship to.
Wasted budget is the failure mode: Leave targeting empty and the campaign can serve across every available market, quietly burning spend on regions outside your footprint before anyone notices in the report.
Regional strategy: Separate IDs let you split campaigns by state or market, so you can run different creative, offers, or budgets where your pricing or service varies.
SEO managers use location IDs to confine ChatGPT Ads spend to the regions where their brand already ranks, so paid and organic reinforce the same markets.
Growth marketers use location IDs to concentrate budget on the metros where their best-converting accounts sit, instead of spreading nationally.
Demand gen leads use location IDs to spin up state-by-state campaigns with different offers, matching regional pricing and compliance rules.
The geo catalog is the complete list of targetable places that ChatGPT Ads maintains, searchable through the lookup endpoint or downloadable as a CSV, and every location ID you use comes from it, so an ID is only as current as the catalog entry behind it.
Each ID carries a type that tells you its granularity, such as country, region, or market, and choosing the right type decides how tightly a campaign is aimed, since a country ID blankets a whole market while a region or market ID narrows delivery to one area.
Targeting splits into an include list of IDs you want to reach and an exclude list of IDs you want to suppress, so you can target a whole country while carving out a specific region inside it.
Direct ChatGPT Ads spend only to the countries, regions, and markets where you can win business.
Exclude specific regions inside a broader target, like running nationwide while suppressing one state.
Match a California campaign to location ID 2000043 so delivery lands on the exact region you intend.
Download the full location catalog as a CSV to plan targeting before you build a single campaign.
Reuse the same IDs across campaigns so regional targeting stays consistent as you scale.
Search the catalog for every place before you build, so you target confirmed IDs instead of guessing names.
Check the canonical_name and country_code on each result, because similarly named places exist across countries.
Start broad at country level and narrow to region or market only when the data supports it, so you do not over-restrict a new campaign.
Keep a saved reference of the IDs you use, so campaigns stay consistent and audits are fast.
Use the exclude list to carve out regions you cannot serve, which keeps one campaign simpler than many narrow include lists.
Re-check IDs when you revisit an old campaign, since the catalog changes and an entry can shift.
Avoid launching with empty location targeting on a live budget. It feels harmless, but a campaign with no IDs can serve across every available market, and competent teams still ship it by forgetting that the default is everywhere.
AirOps: Connects your ChatGPT Ads geo targeting to the same AI discovery intelligence that tracks where your brand shows up, so location decisions line up with the markets you are trying to win.
OpenAI Ads geo lookup: The official endpoint and downloadable catalog where you search for places and copy their location IDs.
Google Analytics 4: Shows which regions already drive conversions, so you can prioritize the location IDs most likely to pay off.
Pull the catalog: Download the OpenAI Ads location catalog as a CSV this week. You can do it with API access alone and no spend, and it gives you every targetable place in one file you can sort and search.
List your markets: Write down the exact countries, regions, and markets you serve. Match each one to its location ID in the catalog.
Confirm each ID: Check the canonical_name and country_code for every ID so you are certain it points to the place you mean and no same-named spot in another country.
Build the targeting: Add your chosen IDs to the include list, and move any places you cannot serve into the exclude list, when you create or update the campaign.
Launch paused and verify: Set the campaign to paused, confirm the saved targeting expands to the right locations, then switch it active once everything checks out.
A location ID names one targetable country, region, or market inside ChatGPT Ads.
You find IDs in OpenAI's geo catalog and pass them to a campaign's include or exclude lists when you build or update it.
Sub-national targeting depends on what the catalog actually offers, which is richest in the United States and thinner elsewhere.
A campaign with no location targeting can serve everywhere, so an empty field quietly drains budget.
The sharpest gains come from aligning your IDs with the exact places your business can convert and away from markets you cannot serve.
A location ID and a context hint do different jobs, so you use both. The location ID is a fixed identifier that decides where a campaign can serve: which countries, regions, or markets are eligible for your ads at all. A context hint is free-form text at the ad group level that nudges when an ad is a good fit for a conversation, and it steers delivery without guaranteeing it. One sets a hard geographic boundary; the other is a softer signal about relevance. If you only set context hints, your ads can still reach the wrong geography, because hints do not restrict where delivery happens. If you only set location IDs, you control geography but give the system no steer on which conversations suit your offer. Use location IDs to draw the map, and context hints to shape the moments inside it.
Update them whenever your coverage changes or the catalog does, which in practice means a quick review each quarter and a check before any major launch. Location IDs themselves are stable, so you rarely need to touch a campaign that is working. Two things force a change. First, your own footprint shifts: you open a new region, drop a market, or change where you can ship or sell, and your include and exclude lists should follow. Second, OpenAI updates the geo catalog, adding finer places or adjusting entries, which can open targeting you could not reach before. A standing quarterly review catches both without turning into busywork. Before a big seasonal push or a new product launch, re-pull the catalog and confirm every ID still resolves to the place you expect. That habit keeps a long-running campaign from quietly serving the wrong geography months after you set it up.
Availability varies because ChatGPT Ads rolled out geographic targeting unevenly, and the catalog reflects where OpenAI has built out location data so far. Country-level targeting works everywhere the product serves. Below that, the picture changes by market. In the United States, you can target states, markets, and postal codes, and that is the most detailed targeting documented to date. Elsewhere, finer targeting exists where available, but which countries get which levels is not published in full, so you have to search the catalog to see what actually resolves. This unevenness tracks how the platform expanded: the United States had sub-national targeting first, and other markets are catching up as the catalog grows. For an advertiser running campaigns in several countries, the practical takeaway is to check each market separately. The method that works for a US campaign may not carry over until the catalog confirms the same granularity elsewhere.
No, you cannot create your own location ID, and you cannot invent one for a place the catalog does not list. Location IDs are defined and maintained by OpenAI; your only inputs are the IDs that already exist in the geo catalog. If a place you want is not in the catalog, you have two realistic options. First, target the nearest available level that does contain it, such as the surrounding region or market, and accept the wider reach. Second, if precise local targeting is essential to your campaign, treat the gap as a real constraint and plan around it instead of forcing a workaround. You can also re-check the catalog periodically, because OpenAI keeps adding places, and a level that is missing today may appear later. What you should not do is assume a guessed or made-up ID will work. The API matches only against real catalog entries, and an unrecognized ID will fail.
Good location ID targeting is simple to judge: every ID in your campaign maps to a place you can do business in, and no budget leaks outside it. There is no universal benchmark number, because the right targeting depends entirely on your service area. A national brand selling everywhere might correctly target a single country ID. A regional service business might be mis-targeted with that same country ID and far better served by a handful of state or market IDs. Two practical signs you have it right: your delivery reports show impressions concentrated in the regions you care about, and you can explain why every included and excluded ID is on the list. If you find impressions landing well outside your footprint, your targeting is too loose, and tightening the IDs is the first fix to try.