AI visibility for local brands
"Best coffee roaster in Portland", "accountant near Amsterdam Zuid", "reliable plumber in Leeds" — questions that used to end at a map pack now get a conversational answer with two or three named businesses. For a local brand, that answer is the new front page, and most owners have never seen theirs.
Tracking local AI visibility has one honest quirk: locality lives mostly in the query text, not in a targeting parameter. You ask the way a local would ask, and — on the two surfaces that read it — you pin country so the engine's own market logic matches the buyer's. Everything else is the standard pipeline: fetch, match, store, diff.
Read this page with an AI
The job: for each service-plus-place question your customers ask, know whether the answers name you, who they name instead, and which local sources — directories, review sites, local press — the engines cite as evidence.
Get a free AI-visibility audit → · Read the docs → — No card, no account.
Get my free auditHow local visibility tracking works
- Write the queries in local voice. Neighborhood names, "near me" phrasings spelled out ("near the Mission"), the service words locals use. The place belongs in the query because that's where every engine reads it.
- Pin
countrywhere the surface honours it.google_ai_overviewandcopilotread thecountryparameter;google_ai_overviewreadslanguagetoo — the levers that matter for multi-market brands. The other surfaces take their locale cues from the query text itself. - Match yourself and the usual suspects. Your business name against
answerText, your domain againstsources[].url— and keep a column for the aggregators (Yelp, Tripadvisor, local guides), because they're usually what the answers cite.
import requests
BRAND = "Heron Coffee Roasters"
QUERIES = [
"best coffee roaster in portland",
"where to buy specialty coffee beans portland",
"coffee subscription from a portland roaster",
]
for query in QUERIES:
resp = requests.post(
"https://api.agentgeo.org/v1/fetches",
json={
"query": query,
"surfaces": ["chatgpt", "google_ai_overview", "copilot"],
"country": "US", # read by google_ai_overview and copilot
},
headers={"Authorization": "Bearer ag_live_your_key_here"},
timeout=200,
)
resp.raise_for_status()
for a in resp.json()["answers"]:
text = (a.get("answerText") or "")
named = BRAND.lower() in text.lower()
hosts = sorted({s["url"].split("/")[2] for s in a.get("sources") or []})
print(f"{a['surfaceKey']:20} {'named' if named else '—':6} cites: {', '.join(hosts) or '—'}")Targeting is country-level, not city-level — the city precision comes from how the query is phrased, which is also how your customers create it. Don't buy (or build) anything that promises per-city AI-answer targeting a surface doesn't expose.
The cited hosts are the local playbook. If every "best roaster in Portland" answer cites one local guide and one review aggregator, your next two moves are getting into that guide and tending that review profile — a far more specific task list than "improve local SEO", and it came out of sources[].
Let your agent run it
Over MCP, the geo-visibility skill runs the market pass and geo-monitor keeps the weekly diff. Multi-location brands loop the same query template per market — the records carry the query, so per-market rollups are a group-by, not a second system.
claude mcp add agentgeo -- npx -y agentgeo-mcp --key ag_live_...Alternatives
Local-SEO suites (BrightLocal-class) audit map packs, listings and reviews — the layer feeding AI answers — but mostly don't record what the AI answers themselves say. Asking each engine by hand works for one market, once; it stops working at the second location or the second week. The GEO dashboards price and shape their products for national brands; a data layer metered per record scales down to a single roaster's thirty queries.
More use cases
The Google side of local answers gets its own discipline in AI Overviews monitoring; once you're tracking, share-of-voice monitoring turns the runs into one trend line — see all use cases.
See what the answers say in your market: Get a free AI-visibility audit →
Get my free audit