Key takeaways
- ChatGPT estimates a general location from your IP address and may rewrite a query like "restaurants near me" into "top restaurants San Francisco" before it searches the web.
- Device location is optional and off by default, but when users switch it on, nearby-business answers get more specific.
- Location is only one input. Memory, prompt wording, model routing and plain run-to-run randomness also change what you see.
- Vendor studies show the source mix behind answers shifts a lot between metros, so one headquarters screenshot cannot represent a multi-location brand.
- Test by market, repeat each prompt, record the conditions, and read the results as probabilities rather than rankings.
The same question, a different answer
Two people type "best emergency plumber" into ChatGPT. One is in Phoenix, the other in Boston. They get different shortlists, different cited sources, sometimes different answer structures. Neither screenshot is wrong.
This trips up a lot of marketing teams. Someone at head office checks ChatGPT, doesn't see the brand, and asks the SEO team to "fix the ranking." But there is no single national ranking to fix. What exists is a set of local recommendation jobs, and each one runs under slightly different conditions.
This guide covers what OpenAI documents about location, what third-party studies suggest, what we can't claim yet, and how to build a testing routine that doesn't fool you.

What OpenAI actually says about location
The most reliable source here is OpenAI's own help page on searching the web with ChatGPT. The relevant points:
- ChatGPT can use location to find local results, including restaurants, news and weather.
- It may use an approximate location based on your IP address.
- Sharing device location is optional and off by default. On iOS and Android you may be able to turn off precise location while still sharing approximate location.
- ChatGPT typically rewrites your prompt into one or more targeted queries and sends them to search providers.
- It shares your general location with those providers, but not the IP address itself or any account information.
- If memory is enabled, saved memories can feed into the rewrite.
The docs give two examples worth remembering. "What are some good restaurants near me?" from the San Francisco area may become "top restaurants San Francisco." And a user who has said they are vegan and live in San Francisco may produce "good vegan restaurants San Francisco."
That second example is the whole story in miniature. The city gets typed into the search query itself. From that point on, the web search behaves like any other city-specific search, with city-specific directories, local publications and review pages competing to be retrieved.
The API has its own location control
Developers using OpenAI's web search API can pass an approximate user location with country, city, region and timezone. City and region are free text, country is a two-letter ISO code, and timezone is an IANA identifier. According to the Cheers write-up of those docs, user location isn't supported for deep research models using web search. I'd verify that against OpenAI's API page before relying on it, since I'm quoting it secondhand.
Why this matters for testing: if you're running prompts through the API to monitor visibility, you can set the market explicitly. If you're eyeballing the ChatGPT app, you get whatever your IP and settings produce.
Why a rewritten query matters so much
A ChatGPT answer is not generated from a single global ranking. It is built from web searches the model runs on your behalf. Promptwatch Data's query fanout report says a single prompt can trigger 3 to 8+ separate searches, though the measured average sat lower: it fell from 2.15 queries per response in early December 2025 to about 1.84 by early March 2026, and average query length dropped from roughly 117 characters to the high 80s.
That report doesn't test location. But here's my own inference, so treat it as one: when fewer and shorter queries go out, the city name inside each one carries more of the weight. A short query like "emergency plumber Phoenix" is dominated by whatever the search provider thinks is the best Phoenix source. Your brand's national authority matters less than whether the right local pages and profiles exist for that city.
You can see the real queries yourself. Promptwatch's free GEO Inspector Chrome extension for ChatGPT shows the fan-outs and which sources were fetched versus cited, which makes it easy to spot where the city got injected.
Location is one signal among many
It is tempting to blame everything on geography. Don't. An Obsero explainer on whether ChatGPT shows the same results to everyone lists the other drivers:
- Memory. ChatGPT has explicit saved preferences and implicit insights from past chats. Paid users get deeper recall.
- Prompt phrasing. "Benefits of coffee" and "is coffee bad for you" pull different sources.
- Model routing, for example GPT-5.3 Instant versus GPT-5.4 Thinking.
- Ads on free-tier accounts.
- Location, device and login status.
And then there's randomness. In Cheers' Market Baseline, ChatGPT named 58% of the same businesses again when the same question for the same city was asked a week later. Google AI Mode managed 41%. So a changed shortlist is the default, not an alarm bell. That's vendor data, so weigh it accordingly, but it matches what anyone sees after running the same prompt a few times.
Sources per answer are broad
Breadth helps explain why local variation shows up. Promptwatch's data on unique domains per ChatGPT response (Sep 28 to Oct 4, 2026) found 47.6% of cited responses cite 10 or more domains, and 66.1% cite at least 8. For organic non-brand prompts, 52.5% cite 10 or more. When an answer pulls from that many sources, a small change in the retrieved set, such as a different city, reshuffles which businesses get named.
Brand-specific prompts behave differently: only 21.3% cite 10 or more domains, with five being the most common count. If someone searches your brand by name, location noise is smaller. The volatility sits in the unbranded, "who should I pick" prompts that actually win new customers.
What the city-level data shows
I couldn't find first-party data that quantifies how much ChatGPT's answers differ between cities. Promptwatch's catalog has no per-city report, so I won't pretend it does. What exists is vendor research, and it points the same direction.
The Cheers study ran 32 home-services prompts across 100 metro service areas and four engines over the 28 days ending Sep 2, 2026, classifying 356,019 citations. Directory and review-platform share of citations:
| Metro | Directory share of citations |
|---|---|
| Oakland | 34.6% (highest) |
| Boston | 32.1% |
| Phoenix | 25.0% (the median) |
| Dallas | 22.6% |
| Toronto | 12.3% (lowest) |
Distinct cited domains ran from 373 in Medicine Hat to 852 in Toronto. Same prompts, same engines. The market changed the source mix.
Sanbi.ai reports something similar for ecommerce: for the same query, the top-recommended product changed in 41% of major US metros. Again, vendor research with its own method, but it's consistent.
Two cautions. First, Cheers itself notes the platform docs don't support a universal formula for which local signal outweighs another. Second, a cited directory doesn't prove every listing on it gets a boost. Variation is evidence about your test, not a diagnosis.
Directories matter more in some cities
If 35% of citations in one metro come from directories and review platforms, and 12% in another, the fix differs. In Oakland-like markets, the work is listings, review volume and consistency across directories. In a Toronto-like market, with a wider spread of domains, you may need local editorial mentions and your own location pages.
Travel is a good first-party illustration of aggregator dominance on local-intent prompts. Promptwatch's travel citation report (Sep 28 to Oct 4, 2026) shows Skyscanner, Going and Tripadvisor leading, with booking and search sites making up 2.42% of the 4.18% total across the 17 domains shown, more than half. That isn't a geographic breakdown, but it shows how intermediaries absorb citations that brands assume they'd get.
How to test AI visibility by market
Here is a routine that avoids the headquarters-screenshot trap.
1. Fix a prompt set
Pick 20 to 40 buyer-intent prompts. Write them with and without an explicit city: "best HVAC repair in Mesa" and "best HVAC repair near me." The second tests how well the location signal does its job. The first tests whether you're present when the location is certain.
2. Record the conditions
Cheers recommends noting market, provider, product surface, prompt, session state and date before comparing results. I'd add: logged in or out, memory on or off, device location on or off, and which model was used. Without these, two results aren't comparable.
3. Repeat and aggregate
One run tells you almost nothing. Run each prompt several times per market and look at how often your brand appears. Measurement has to move from precision to probability. You're after "named in 6 of 10 runs in Mesa, 2 of 10 in Tempe," not "position 3."
4. Save named businesses and cited sources
The sources are where the fix lives. If the right branch is missing across repeated runs, check whether the cited pages describe only your parent brand. If it only appears when the city is explicit, the original prompt carried weak location context. If only one signed-in session behaves oddly, check memory before touching the website.
5. Write bounded findings
A good finding reads: "In three dated tests for AC repair in Mesa, the expected branch was absent and two cited sources described only the parent brand." It names the market, service, source gap and next check, without claiming to know ChatGPT's internals.

Tools for location-aware tracking
No single tool covers everything, and I haven't verified pricing or location features for every product mentioned below, so check each vendor's current docs. Here is how the categories break down.
| Job | Tool type | Examples from our catalog |
|---|---|---|
| Track brand mentions and citations across AI engines | AI visibility platforms | Promptwatch, Profound, Peec AI, Otterly.AI |
| See which web queries ChatGPT ran | Query fan-out inspection | Promptwatch GEO Inspector |
| Keep listings consistent across directories | Local listing management | Yext, BrightLocal, Uberall, Moz Local, Whitespark |
| Local rank tracking in classic search | Geo-grid rank trackers | Local Falcon, Local Rank Tracker, BrightLocal |
| Reviews and reputation by location | Reputation platforms | Birdeye, Reputation, Podium, Chatmeter |
| Multi-location marketing | Local marketing suites | SOCi, Rio SEO, Partoo, Synup |
AI visibility platforms
Promptwatch tracks how brands appear in ChatGPT, AI Overviews, Gemini, Perplexity and others using real user interfaces, with country tracking on every paid plan and state/city tracking from the Business plan. Its prompt volumes, query fan-outs and citation views help you see which sources sit behind each answer, and its Content Agent can publish pages against gaps you find. Confirm current limits at promptwatch.com/pricing.

Other trackers worth a look include Profound and Peec AI. Check whether each supports the city-level granularity you need rather than assuming it.
Profound

For a broader view of the category, the GEO software directory at bestgeosoftware.com lists many more options.
Listings and local presence
If directories supply a big share of citations in your markets, listing hygiene is real GEO work. Yext and BrightLocal cover multi-location listings, and Yext has published its own side-by-side test of Google, ChatGPT, Claude and Perplexity answering a New York bar question.


For reputation by branch, Birdeye and Reputation are the usual suspects. Local Falcon gives you geo-grid views in classic local search, which is a useful comparison point even though it measures Google rather than ChatGPT.

What to fix once you find a gap
The pattern from the research is consistent. Local queries pull local sources, so your job is to exist clearly in them.
- Give each location its own page with the exact services and city. Parent-brand-only pages are a common reason a branch gets skipped.
- Clean up listings and profiles so name, address and services match everywhere.
- Earn reviews on the platforms your markets actually cite. Look at the cited sources per city and prioritize those.
- Check crawler access. If AI crawlers can't read your location pages, nothing else matters. Promptwatch's IP-verified crawler logs and site audits show this directly.
- Refresh content. Promptwatch's content half-life data found landing pages and docs stayed cited longest, while news lost half its pages within 36 days, so evergreen location pages are worth the investment.
What we still don't know
It would be dishonest to wrap this up neatly. Nobody outside OpenAI can say how much weight the IP-based city gets compared with memory or the query itself. I found no first-party dataset that quantifies city-to-city differences in ChatGPT specifically, and I didn't verify how Perplexity, Gemini or Claude handle location beyond Google's notes via Cheers. Anecdotal threads on OpenAI's community forum show users surprised that ChatGPT "guessed" their city, and IP geolocation is the likeliest explanation, but that's an explanation, not a confirmed mechanism.
So treat any claim like "signal X beats signal Y" with suspicion, including from vendors with a product to sell.
Bottom line
ChatGPT results differ by city because the city gets written into the search queries behind the answer, and because the sources retrieved for those queries differ by market. Layer on memory, model routing and ordinary run-to-run variation, and no two people see quite the same thing.
The practical response is boring and effective: test each market on its own, repeat your prompts, record the conditions, and fix the sources the answers actually cite. The brands that win are the ones present in enough places that it doesn't matter who's asking.
If your team needs help building a multi-market GEO program, an agency like 1001 SEO Media works on this kind of AI search and local visibility problem.


