How to check if Google AI Overviews recommend your product
An AI Overview never says "we recommend" — it synthesises rather than endorses. But when it names a product with a reason and a citation, a buyer reads it as exactly that. To find out whether yours is one of the named ones, run the questions your customers type at the moment of choosing and read the overview that comes back.
The part worth doing properly: being named is not being recommended, so pull the sentence your product sits in and open the page behind it. Because an AI Overview is assembled from a live search, every claim traces to something in sources[]. And because Google doesn't show an overview for every query, a search that produced none is not a verdict against you — it's no data at all, and it belongs in its own bucket, never in a "not recommended" count.
To check whether a Google AI Overview recommends your product, ask the questions a buyer types while deciding — "best X for Y", "X alternatives", "X vs Y" — and look for your name in the overview. Then do the part that decides the outcome: read the sentence around the mention, and open the cited page beneath it. Being listed is not being recommended, and on a search-grounded surface the difference usually traces to one page.
The manual way (and why it stops working)
Search the way a buyer searches, not the way a marketer does. "Best help desk software for a small SaaS support team." "Acme alternatives." "Is Acme any good for a ten-person support team?" When Google shows an AI Overview, find your name, read the sentence it sits in — that sentence is the actual result — then expand the reference chips beside the block, because one of them is where the sentence came from. Six phrasings, fifteen minutes, no cost, and you'll know roughly where you stand today.
The trouble starts on the second pass.
- Buying intent fans out. "Best", "cheapest", "alternatives to", "X vs Y", and one variant per team size and use case — each is a separate search with its own overview, its own shortlist and its own framing of you. Covering that honestly is a morning, and it's a morning you owe again next month.
- Half your questions won't have an overview at all. Google doesn't answer every search inline, and a query with no overview tells you nothing about whether you're recommended — yet by hand it looks identical to an overview that simply left you out. Skip that distinction and every "not recommended" tally you report is quietly inflated.
- The wording moves between searches. An AI Overview is rebuilt from a fresh search each time, so Monday's flattering line and Friday's lukewarm one can both be real. One reading can't separate a genuine slip from ordinary churn.
- You will read yourself into a conclusion. Skimming an overview for your own name, "also worth considering" files itself under win with alarming ease. Extracting the sentence and judging it deliberately is a different exercise from scanning for a highlight.
- Nothing is stored and nothing is scheduled. In two months you'll want to know whether the framing improved after you rewrote the comparison page. A browser tab is not a dataset, and it can't page you the week a competitor takes your slot in the overview.
Do it with one API call
One POST to AgentGEO returns the raw record for a query: the full overview text and every source cited, structured. No headless browser, no chips to expand by hand — the managed-scraper engine is maintained for you, and of the six engines this is the densest citation surface. Its sibling, Google's AI Mode, is a separate surface with its own google_ai_mode key.
curl -X POST https://api.agentgeo.org/v1/fetches \
-H "Authorization: Bearer ag_live_..." \
-H "Content-Type: application/json" \
-d '{"query": "Acme alternatives for help desk software", "surfaces": ["google_ai_overview"], "country": "US", "language": "en"}'Now write the check that matters. Instead of testing whether the brand is merely present, split the overview into sentences and keep the ones your product appears in — then print the sources beside them, so the framing and its evidence stay attached. And keep the queries that returned no overview in a list of their own, because they are not evidence against you:
{
"id": "run_9f2a7c41",
"query": "best help desk software for a small SaaS support team",
"surfaces": ["google_ai_overview"],
"status": "completed",
"recordsDelivered": 1,
"creditsCharged": 1,
"answers": [
{
"surfaceKey": "google_ai_overview",
"status": "delivered",
"answerText": "For a small SaaS support team, Acme is frequently recommended for its shared inbox and quick setup, while Globex is better suited to teams that need deep automation. Initech is a lower-cost option with a lighter feature set.",
"sources": [
{ "title": "Acme Help Desk - Features", "url": "https://acme.example.com/help-desk", "position": 1 },
{ "title": "Best help desk software for small teams", "url": "https://example.com/best-help-desk", "position": 2 },
{ "title": "Globex vs Acme for support teams", "url": "https://globex.example.com/compare/acme", "position": 3 }
],
"fetchedAt": "2026-07-18T09:14:22Z",
"latencyMs": 61840
}
]
}That structure is what the script leans on. This one splits each overview into sentences, keeps the ones naming your brand, prints the sources behind them, and — the part specific to this surface — logs every query that produced no overview separately, so it can never contaminate the count:
import re
import requests
KEY = "ag_live_your_key_here"
BRAND = "Acme"
# Buying intent - the questions asked right before a decision.
QUERIES = [
"best help desk software for a small SaaS support team",
"Acme alternatives for help desk software",
"Acme vs Globex for customer support",
"cheapest help desk tool with a shared inbox",
]
MENTION = re.compile(rf"\b{re.escape(BRAND)}\b", re.I)
def sentences(text):
parts = re.split(r"(?<=[.!?])\s+|\n+", text)
return [p.strip(" -*\t") for p in parts if p.strip()]
overviews = 0 # queries that actually produced an AI Overview
named = 0 # of those, how many named the brand
missing = [] # queries with no overview - NOT "not recommended"
for query in QUERIES:
resp = requests.post(
"https://api.agentgeo.org/v1/fetches",
json={
"query": query,
"surfaces": ["google_ai_overview"],
"country": "US", # search gl=
"language": "en", # search hl=
},
headers={"Authorization": f"Bearer {KEY}"},
timeout=200, # an AI Overview SERP round-trip runs 40-90s
)
resp.raise_for_status()
for answer in resp.json()["answers"]:
if answer.get("status") == "failed":
# No overview on this SERP: zero credits, and not the same thing
# as an overview that recommended someone else. Log, don't score.
missing.append(query)
continue
overviews += 1
text = answer.get("answerText") or ""
hits = [s for s in sentences(text) if MENTION.search(s)]
print(f"\n{query!r}")
if hits:
named += 1
for line in hits:
print(f" says: {line}")
else:
print(" named someone, not you")
# SERP-grounded: a delivered overview almost always cites. Open these.
srcs = sorted(answer.get("sources") or [], key=lambda s: s["position"])
for s in srcs:
print(f" {s['position']:>2}. {s['url']}")
# Two denominators, never one: coverage, then share within coverage.
print(f"\noverview shown for {overviews}/{len(QUERIES)} queries")
if overviews:
print(f"named in {named}/{overviews} of the overviews that ran")
if missing:
print(f"no overview (log, don't score): {', '.join(missing)}")The output isn't a score, it's evidence: for each buying query that produced an overview, the exact sentences Google wrote about you and the pages it wrote them from. Four queries against one surface is at most four credits — a query with no overview comes back failed and costs nothing, which is why missing is a list rather than a silent skip. An ag_test_ key returns labelled demo records at zero credits while you shape the parser.
Read the sentence and its citations together and the fix usually names itself:
| What the overview says | What the citations usually show | The fix |
|---|---|---|
| Names you first, with a reason | One of your own pages sitting at position 1 | Protect it. Keep that page current — it is carrying the recommendation. |
| Lists you with no differentiator | A third-party roundup nobody owns | Publish the page that states your difference in one liftable sentence. |
| Names you only as an alternative to Globex | Globex's own comparison page, cited high | Write your side of that comparison and get it into the retrieval set. |
| Adds a caveat — "limited automation", "pricey" | The claim usually sits verbatim in one cited page | Correct it at the source if it's stale; out-publish it if it's opinion. |
| No overview for this query at all | Nothing — Google answered inline instead | Not a loss. Log it apart, and never read silence as rejection. |
The number that misleads everyone here is a single recommendation rate. Google doesn't show an AI Overview for every query, so you always have two denominators, not one: coverage — how many of your buying queries produced an overview at all — and share — how often you're named inside the overviews that ran. Divide your mentions by all queries and you'll understate yourself by roughly twenty points, because you've quietly counted every no-overview search as a loss. A search that produced no overview is not a search where you weren't recommended; it's a search with no data. Keep those two figures apart, and keep the no-overview queries in their own list. What counts as recommended past that is a judgment AgentGEO leaves to you — it returns answerText and computes no sentiment, no score and no ranking.
Let your agent do it
This job suits an agent better than a script, because the interesting step is the second one: fetch the overview, then go read the page that produced it. One command connects the server:
claude mcp add agentgeo -- npx -y agentgeo-mcp --key ag_live_...That's the install: agentgeo-mcp over stdio, zero npm dependencies, Node.js 18+, and a single tool called fetch_raw_answers with query and surfaces required and country defaulting to US. From there you describe the task rather than implement it:
Fetch the google_ai_overview for "best help desk software for a small SaaS support team". If there's no overview, say so and stop. Otherwise quote the sentence that mentions Acme, then open the source it most likely came from and tell me whether that page actually says it.
Notice where the judgment sits. AgentGEO hands back the record — the overview text and its sources — and stops; your agent, which knows your positioning and what you'd call a fair description, decides what counts as a recommendation and whether the cited page needs correcting or out-writing. It also knows the difference between "no overview" and "not named", and won't score the first as the second. That split is the whole argument for a data layer rather than a dashboard; if you'd rather drive it from a script, the Python and curl paths call the same endpoint.
Common problems
Five things that will make this check lie to you, in rough order of how often they do:
- A missing overview is not a rejection. When Google shows no AI Overview, the record returns
status: "failed"with "Google returned no AI Overview for this query" at zero credits. Log those queries in their own list. Fold them into a "not recommended" bucket and every recommendation rate you publish is understated. - A failed overview is not a snapshot to redeem. The chatbot surfaces hand back a
providerFields.snapshot_idon a slow scrape that you can retry against. AI Overviews come through a different SERP fetch path, so there's no snapshot id here — re-run the query later instead, and accept that it may honestly fail again. - Substring matching over-reports. A bare
"acme" in textalso fires on "AcmeBank" and "the acme of support". Use a word-boundary regex and keep an ignore list for the namesakes already living in your category, or you'll count mentions that were never you. - Branded queries flatter you. "Acme alternatives" contains your name, so an overview that appears will almost always mention it — the query guaranteed it. Keep branded and unbranded queries in separate buckets, or your recommendation rate mostly reflects your own query set.
- Locale changes the overview and its citations.
countrysets the searchgl=andlanguagesetshl=, so a US-English overview and a German one name different products from different pages — and sometimes one market shows an overview where the other shows none. Keep a separate log per market rather than one file you can't disentangle later.
Summary
For a one-off answer to "does the overview recommend us?", search it yourself and read the sentence. When the question has to be asked every month, across the queries that actually drive revenue, and answered with quotes instead of impressions — fetch the records, keep the sentences, and keep the sources next to them. Two rules keep the number honest: the sentence tells you how you're described, not the mere presence of your name; and a query with no overview is missing data, never a loss.
Find out whether Google's overview actually recommends your product — and what it read to get there. Start free — no credit card.
Start for freeFrequently asked questions
- Do Google AI Overviews recommend products?
- Not in so many words — an overview synthesises rather than endorses. But for buying-intent queries like "best help desk software" it names specific products with a reason for each and cites the pages behind them, and for the person reading it a named, cited shortlist functions exactly like a recommendation. The distinction that matters is being named versus being described well.
- How do I know if a Google AI Overview recommends my product?
- Run your buying-intent queries and check two things: whether the overview names your brand, and how the sentence around it reads. The repeatable version is one API call — POST the query to
https://api.agentgeo.org/v1/fetcheswith"surfaces": ["google_ai_overview"], splitanswerTextinto sentences, keep the ones matching your brand, and printsources[]beside them. - My product isn't in the AI Overview — does that mean it's not recommended?
- Only if an overview actually appeared and left you out. Google doesn't show an AI Overview for every query, and when it doesn't the record comes back
failedat zero credits with "Google returned no AI Overview for this query". That's missing data, not a rejection — log those queries separately, and never fold them into a "not recommended" count or you'll understate yourself badly. - Can I see which page made the overview describe my product that way?
- Usually. An AI Overview is search-grounded, so it writes from pages it just retrieved, and a delivered record almost always carries them in
sources[]withtitle,urlandposition. Open them in position order and the claim is often sitting there nearly verbatim. Treat it as the lead rather than a proof — an overview can assemble a sentence from more than one page. - Does AgentGEO decide whether the overview was positive?
- No, by design. AgentGEO returns raw answer records — the overview text and its sources — and computes no sentiment, scores or rankings. POST to
https://api.agentgeo.org/v1/fetcheswith"surfaces": ["google_ai_overview"]and you getanswerTextandsources[]back untouched; judging whether "a solid budget pick" is a win belongs in your own agent, using your own definition of a favourable description.
Keep reading