Visibility
Answer features
Which engines put shopping, local businesses, ads, video, images or tables inside their answers, and which answers used web search.

The numbers in this screenshot are demo data: fixed fictional responses run through the product's own collection and detection code.
Answer features are the structured parts an engine puts inside its answer (shopping, local businesses, ads, video, images and tables) and whether the answer used web search. Each is a rate over the answers we checked, per engine, on every plan.
The card's footer reads: "Shopping, local businesses, ads, video, images
and tables are counted from DataForSEO's copy of the Google AI Overviews,
ChatGPT (app) or Gemini (app) response, fetched for a signed-out visitor in
the target's country (for AI Overviews and Gemini (app), at the city's
coordinates when the target has a city with coordinates; ChatGPT (app) is
country-level only). Web search is what each engine's own response
recorded: its recorded searches or returned sources for the API engines
and ChatGPT (app), whether the answer showed sources for Gemini (app).
Product links, images or cards written into answer text are not counted,
except Google's product-viewer links (in AI Overviews and among Gemini
(app)'s sources), Google Maps place links among Gemini (app)'s sources, and
the YouTube videos an AI Overview links."
(frontend/src/lib/answer-features.js#FOOTER_TEXT)
How a feature is counted
Every completed answer is checked when it is saved, and answers saved before
this existed are checked by a one-off command the operator runs
(api/services/execution.py#_store_response_features,
api/cli.py#cmd_backfill_response_features). The check reads only the
structured parts of the engine's response, never the answer text
(api/services/response_features.py#detect):
- Google AI Overviews. A table counts when Google sends it as its own
part of the Overview. Ads count per ad in an ad block. Shopping counts
the products in a shopping block, or the products behind Google's
product-viewer links inside the Overview, whichever is larger, because
both can describe the same products. A product-viewer link is a Google
Search link (a plain
httporhttps/searchaddress, with no port or sign-in part, on a Google domain such as google.com or google.co.uk, with or withoutwww.) that opens Google's product panel; the same product linked twice, even through two different links, counts once when the links carry Google's product id, as every one we have seen does (api/services/response_features.py#_product_viewer_key). - Video on Google AI Overviews. An Overview counts as having video
when it holds a video Google sends as its own part of the Overview, or
links a YouTube video in its sources or links. The count is the video
parts or the distinct YouTube videos it links, whichever is larger,
because both can describe the same videos. A YouTube video link is a
plain
httporhttpsaddress, with no port or sign-in part, onyoutube.com,www.youtube.com,m.youtube.comoryoutu.bethat opens one video (a watch, Shorts, embed or live address); the same video linked twice, even at two different moments, counts once, and a playlist, channel or search page is not a video (api/services/response_features.py#_youtube_video_id). - ChatGPT (app). Tables count per table; shopping counts the products in a product list, local businesses the businesses in a local list, images the images in an image block; ads count per ad that was shown.
- Gemini (app). Tables count per table Gemini (app) sends as its own
part of the answer, and images per image in an image part. Shopping
counts the distinct Google product-viewer links among the answer's
sources, and local businesses the distinct Google Maps places among them
(a place is its Maps place id). Neither kind of link is a citation (see
How Gemini (app) is collected).
When an answer's product links, or place links, are listed for another
country than the target's, that answer is left out of the shopping rate,
or the local businesses rate, rather than counted as 0 or as the other
country's products (
api/services/gemini_app.py#listed_country_mismatch). - Every engine that reports web search records 1 when it searched and 0 when it did not (see Web search).
An AI Overview made only of product cards, ads or videos is stored as no AI answer shown (see When Google shows no AI answer), so it is in no answer-feature rate.
Which engine reports what
A feature an engine does not report has no value for that engine. It is
never shown as 0%
(api/services/response_features.py#SUPPORTED_FEATURES).
| Engine | Web search | Shopping | Local businesses | Ads | Video | Images | Tables |
|---|---|---|---|---|---|---|---|
| Google AI Overviews | Blank | Counted | Blank | Counted | Counted | Blank | Counted |
| Google AI Mode | Blank | Blank | Blank | Blank | Blank | Blank | Blank |
| ChatGPT (app) | Counted | Counted | Counted | Counted | Blank | Counted | Counted |
| Gemini (app) | Counted | Counted | Counted | Blank | Blank | Counted | Counted |
| Gemini (API) | Counted | Blank | Blank | Blank | Blank | Blank | Blank |
| Perplexity | Counted | Blank | Blank | Blank | Blank | Blank | Blank |
| Grok | Counted | Blank | Blank | Blank | Blank | Blank | Blank |
| Claude | Counted | Blank | Blank | Blank | Blank | Blank | Blank |
Why the blanks:
- Google AI Mode reports no feature we can count. Every AI Mode answer we have checked arrived as plain answer parts, with its images and product cards drawn inside the answer text, which we do not read.
- AI Overview images are not reported. The Overview parts carry an images field, but it was empty in every Overview we have checked, so a count could not tell "no images" from "not reported".
- Web search is blank for Google AI Overviews and AI Mode. Google's AI answers are part of Google Search.
- Gemini (app) reports no ads and no video. Its responses have no ad or video part, and Gemini (app) reads a dash for both, titled "Gemini (app) does not report ads" for ads.
- Perplexity answers collected before Sonar have no web search value;
Perplexity's Sonar answers do. On a prompt's page both share one
Perplexity row, so the earlier answers are in none of its counts; the
web search cell's title names them, as in "300 answers from before this
engine reported it" (
frontend/src/lib/answer-features.js#featureCell).
Web search
For Gemini (API), Perplexity, Grok and Claude, web search comes
from the searches the engine's response recorded: the same record the
Fan-out panel reads
(api/services/response_features.py#web_search_seen,
api/services/fan_out.py#derive_fan_out_state). An answer searched when the
engine recorded a search query, or returned a source without one; it did not
search when capture ran and found neither. For Gemini (app), which does not
report its searches, an answer searched when it showed at least one source.
ChatGPT (app) searched when it showed a source, reported a search or listed
a page found, even with no source shown. On Gemini (app) a Google product or Google Maps
place link counts as a source here, so a local answer whose only sources
are places reads as searched, although it cites no web page.
What this means for a few engines:
- Grok: a search of X counts as a search.
- Gemini (app), and ChatGPT (app) answers collected before 2026-09-29: an answer that searched but showed no source reads as did not search.
- Perplexity (Sonar): an answer with a search count but no returned source reads as did not search.
Blank, Not recorded, Not checked and 0%
- Blank (a dash): the engine does not report the feature (the table above).
- Not recorded: the answer was checked, but the engine's searches were not recorded, because it was collected before search capture began. This applies to web search on the API engines only.
- Not checked: the answer has not been checked yet, for example an answer saved before answer features existed that the operator's one-off check has not reached, or one whose stored response could not be read.
- Left out (Gemini (app) only): the answer's product links, or place
links, were listed for another country, so it has no shopping, or local
businesses, value. The cell's title counts them, as in "2 answers left
out: product links listed for another country" or "1 answer left out:
place links listed for another country"; when every answer in the window
was left out, the cell reads Not recorded with that title
(
frontend/src/lib/answer-features.js#featureCell). - 0%: answers were checked and none held the feature.
Answers that are not recorded, not checked or left out are left out of every rate, so a rate is always over the answers with a value. The Explorer unit for these metrics is checked answers.
For the API engines, the count under a web search rate, as in "56 of 56",
covers only the answers whose searches were recorded; answers collected
before search capture are counted separately, and the cell's title names
them, as in "112 answers not recorded". When none of an engine's answers
in the window were recorded, the cell reads Not recorded, titled
"This engine's searches were not recorded for these answers"
(api/services/response_feature_reads.py#answer_features_by_engine,
frontend/src/lib/answer-features.js#featureCell).
Where answer features show
- Prompt detail has an Answer features card: one row per engine,
one column per feature, each cell the rate with "2 of 5" beneath, over the
same window and filters as the rest of the page. An engine that reports
nothing we count, such as Google AI Mode, reads "Reports no features we
can count" (
api/services/response_feature_reads.py#answer_features_by_engine,frontend/src/lib/answer-features.js#featureCell). The run history gains an In the answer column with a chip per feature present, such as "Shopping 4", "Local businesses 16" or "Tables 2" (frontend/src/lib/answer-features.js#featureChips). See Prompts. - Explorer has seven metrics grouped as Answer features: Answers
using web search, with shopping, with local businesses, with ads, with
video, with images and with tables
(
api/services/explorer/metrics.py#METRICS,#_statement). They reach the customer API and MCP through the same query, and Analyst can use them. See Explorer. - Exports have an Answer features dataset, one row per collected
answer (
api/services/exports/response_features.py#COLUMNS). See Exports.
Pooled over every engine, a period comparison includes an engine that started answering during the window on one side only; break the result down by engine, or filter to one, to compare like for like.
What is not counted
- Anything written into the answer text: product links, images or cards in the text are not counted, except Google's product-viewer links (in AI Overviews and among Gemini (app)'s sources), Google Maps place links among Gemini (app)'s sources, and the YouTube videos an AI Overview links.
- Features of Google's results page around the Overview: People also ask, the knowledge panel, forums, the local pack and search ads.
- ChatGPT navigation lists.
- Brands, prices and merchants inside product cards, and who placed an ad.
What our live checks showed
In live checks on 2026-09-27 and 2026-09-28 we saw tables, products and local businesses in ChatGPT (app) answers, product-viewer links in one AI Overview, and links to YouTube videos in three of the four AI Overviews we checked. We have not seen ads or images in either engine's answers, nor a shopping, table or video part from Google. AI Overview ads, tables and video parts, and ChatGPT (app) ads and images, are counted from the data provider's documentation of its responses.
In live checks of Gemini (app) on 2026-09-28 we saw tables, local businesses (Google Maps place links among the sources) and answers with and without sources. Shopping was seen only once, in an answer for the United States whose product links were all listed for Malaysia, priced in ringgit, so that answer is left out of the shopping rate and no counted live answer has shown shopping yet. We have never seen images in a Gemini (app) answer: they are counted from the data provider's documentation.
Related
- Prompts: the Answer features card and the In the answer column on a prompt's page
- Fan-out: the searches behind web search
- Explorer: the seven answer-feature metrics
- Engines and measurement: how each engine is collected
- Exports: the Answer features dataset
Last verified 2026-09-29