· 18 min read

Google AI Mode Cites Beyond the Top 10: What We Found with A-Parser


1. Why a normal SERP crawl does not show what Google AI Mode says

A standard Google SERP crawl tells an SEO team where pages rank, which URLs Google returns, and which SERP features are present. That is useful for measuring the results page itself. It is not enough to measure Google AI Mode.

In AI Mode, a user sees a generated Gemini answer and related source cards. A top-10 ranking tells you only one thing: where a page appears in the traditional organic results. It does not tell you whether that page appears among the sources shown with an AI Mode answer, whether Gemini mentions the brand, or whether it sends the user to an independent review, a YouTube video, or a Reddit thread instead.

A page can rank #1 and still be absent from the sources attached to an AI Mode answer. That is why AI Mode monitoring needs to collect two things separately: the answer itself and the pages Google presents as its sources.

Classic Google resultsGoogle AI Mode
Positions, snippets, and SERP featuresA generated Gemini answer and related sources
Top-10 organic URLsA source set selected for one particular answer
One result pageA dialogue that can continue with follow-up questions

That changes what an SEO team needs to monitor. The question is no longer only “Where does our page rank?” It is also: “Does Gemini name the brand? Which pages does it cite? Does the source set change across languages and markets?”

Ahrefs found just 13.7% overlap between the cited URLs in AI Overviews and AI Mode, even though the answers were semantically similar in 86% of cases [1]. Similar answers can rest on very different pages.

This article walks through what we collected with A-Parser’s built-in FreeAI::GoogleAIFreeAI::GoogleAI parser, how the source set changed across three runs, and how to repeat the collection with your own queries.

Scope: the data below comes from Google AI Mode. AI Overviews were not collected as a separate format.


2. What changed across English, German, and proxy location

We collected ten SEO research queries in three slices:

  1. English queries through a US residential proxy pool (EN / US);
  2. German queries through a comparable US residential pool (DE / US);
  3. The same German queries through a German residential proxy pool (DE / DE).

The English and German lists cover the same themes: citations in AI Overviews, cheaper Ahrefs alternatives, backlinks, cloud crawlers, Reddit, AI rank tracking, traffic loss at position one, Schema.org, YouTube, and llms.txt.

SliceQuery languagehlProxy locationAnswer textPopulated source rowsUnique domains
EN / USEnglishenUnited States29,062 characters8664
DE / USGermandeUnited States28,560 characters8267
DE / DEGermandeGermany29,616 characters6659

The character counts above cover the unique Gemini answers, not the CSV file size. A CSV repeats the answer once for every source row, so its file size is not a useful comparison.

2.1. AI Mode answers often continue with follow-up questions

Several answers in the English control slice ended by inviting the user to continue the conversation. Gemini asked for details such as the site type, industry, content format, budget, or existing tool stack. The German answers showed the same pattern in multiple queries.

For example, the answer to the Ahrefs-alternatives query ended with:

“If you want to narrow down your choice, tell me: What is your monthly budget? What is your core focus (backlinks, keyword research, or rank tracking)?”

This does not prove that Google is deliberately trying to keep every user inside the interface. It does show why an AI Mode collection should retain the complete answer rather than only the first paragraph and its sources: the returned text often includes the next step in the conversation.

2.2. A brand mention and a source citation are different signals

We counted brand mentions in the ten unique answers in each slice. The count includes source labels embedded in the answer text, such as HubSpot Community +2. We then counted a citation only when a source row pointed to the brand’s official domain. Query text, source snippets, and URLs were not counted as answer mentions.

Brand mentions in Gemini answers

BrandEN / USDE / USDE / DE
Ahrefs696
SE Ranking4106
Semrush361
Screaming Frog311
Sitebulb213
SISTRIX002

Official-domain source rows

BrandEN / USDE / USDE / DE
Ahrefs000
SE Ranking121
Semrush010
Screaming Frog001
Sitebulb011
SISTRIX002

The pattern is clear in this sample, but the sample is too small to treat it as a general rule. Ahrefs appeared 21 times across the three answer sets, but ahrefs.com did not appear in a single source row. SE Ranking appeared 20 times, while seranking.com appeared in four source rows. Other vendor domains appeared intermittently or not at all.

For monitoring, “Gemini mentioned the brand” and “Google showed the brand’s domain as a source” must therefore remain separate metrics. A small sample cannot tell us why a particular official domain was or was not selected; it does show that the two events are not interchangeable.

2.3. Changing the language did not change the shape of the output

The English and German US-based slices are close in volume: 29,062 versus 28,560 characters of answer text, and 86 versus 82 populated source rows. In this small set, they produced similarly sized answers and a similar number of populated source rows.

The individual pages changed, but the same broad source types kept recurring: YouTube, Reddit, LinkedIn, industry publications, independent reviews, vendor pages, and Google documentation all appeared in the logs.

That does not make language irrelevant. The English and German runs were separate collections with semantically equivalent rather than identical phrasing. A German query set needs its own monitoring rather than being treated as an English report in translation.

2.4. The answers stayed the same size. The source set did not.

The cleanest comparison is DE / US against DE / DE: the ten German queries and hl=de were unchanged. The proxy pool changed, and gl was explicitly set to match it (US and DE, respectively).

MetricDE / USDE / DE
Answer text28,560 characters29,616 characters
Populated source rows8266
Unique domains6759
Unique .de domains225
.de share of unique domains3.0%42.4%
Shared domains across both sets14 of 112 combined domains—

Answer length was nearly unchanged. The list of cited domains changed sharply.

The German-query run through the US pool contained only two .de domains among 67 unique domains: blogmojo.de and giga.de. The German-proxy run included 25 .de domains among 59, including sistrix.de, seokratie.de, seo-suedwest.de, seonative.de, rankeffect.de, rang-und-namen.de, planinja.de, and retresco.de.

Only 14 domains appeared in both source sets. Those shared pages include broadly available platforms such as YouTube, Reddit, LinkedIn, Google Developers, Sitebulb, SitePoint, SE Ranking, Contently, Yoast, and SchemaApp.

This is one paired observation, not proof that proxy location determines every citation. Gemini responses vary, and one collection per pool cannot separate location from response variability. But the difference is large enough to change the monitoring design: a German market report should not rely on a US-only proxy pool.

Observed result: with the same German prompts, the two runs cited mostly different domains, and the German-pool run contained a much larger share of German sources.

2.5. YouTube, Reddit, and LinkedIn recur across all three slices

PlatformEN / USDE / USDE / DE
YouTube7 of 86 source rows4 of 823 of 66
Reddit4 of 863 of 822 of 66
LinkedIn5 of 864 of 823 of 66

What the data shows: YouTube, Reddit, and LinkedIn appeared in all three slices. The counts do not show that any one platform dominates AI Mode, but they do show why a source audit cannot stop at publishers and vendor sites. A video, forum thread, or LinkedIn post can support an answer to a commercial SEO question.

What to do: retain the query, returned URL, domain, and source snippet for video rows. If the snippet contains a timestamp, retain that too. This export does not include a separate channel field, so enrich the record later only if the analysis requires it.

2.6. Source snippets are not always text: /goto tokens and inline images

What the data shows: some source records returned a root domain as s.link while placing Google’s internal /goto? redirect token in s.snippet. The pattern appeared twice in the EN / US collection and three times in each German slice:

SOURCE: https://www.reddit.com | reddit.com | /goto?url\u003dCAES...

The EN / US collection also contained two source rows where s.snippet was an inline image payload rather than a textual excerpt:

data:image/webp;base64,...
data:image/png;base64,...

What to do: retain the raw s.link, s.anchor, and s.snippet values and count the domain separately. The returned domain is useful for source-level reporting, but the deep URL may be unavailable and the snippet may not be readable text. Do not treat the root URL as the original article or thread.

2.7. A completed answer is not the same as an answer with usable source data

One result is particularly useful for operational monitoring. For the German query:

warum sinkt der traffic trotz ranking auf platz 1

AI Mode produced a full answer in both proxy slices. The source output was different:

DE / US: 9 source rows
DE / DE: 0 populated source rows

The German-proxy result was not an error: it contained a generated answer, but no populated source fields in the CSV output.

That is why a monitoring pipeline should store at least three separate indicators:

  • whether the task completed successfully (p1.info.success);
  • whether an answer was returned (p1.answer);
  • how many populated sources were returned (p1.sources.size).

The CSV template in step 3 outputs p1.info.success as its second column, so this status can be checked from the same export.

“An answer was received” is not the same as “citation visibility was measured.”

2.8. What the three slices support — and what they do not

The collection supports three practical conclusions:

  1. Top-10 rankings do not describe the source set in AI Mode. The generated answer and its sources need separate collection.
  2. Language and market are separate dimensions. German prompts through a US pool and German prompts through a German pool should not be treated as interchangeable reports.
  3. Source count is a metric of its own. It can change independently of answer length and task success.

It does not prove a universal causal rule for Google AI Mode. Repeat the same sets over time and use multiple runs per market before turning an observed difference into a stable benchmark.


3. How to collect Google AI Mode data with A-Parser

A-Parser includes FreeAI::GoogleAIFreeAI::GoogleAI, a built-in parser for Google AI Mode. According to the documentation, it uses a real browser via Playwright and supports natural-language queries and Template Toolkit output templates [2].

InputOutput
A list of research queriesThe generated Gemini answer (p1.answer)
Proxy country and exit IPAn AI Mode collection for that location
An output templateSources, domains, URLs, and snippets

Step 1. Configure the parser

In A-Parser’s task manager, choose FreeAI::GoogleAIFreeAI::GoogleAI.

For this test, these settings mattered:

SettingValue
Interface language (hl)en for English queries; de for German queries
Country (gl)Explicitly US for EN / US and DE / US; explicitly DE for DE / DE
Query inputTen natural-language SEO questions
ParserFreeAI::GoogleAIFreeAI::GoogleAI

In the runs described here, gl was set explicitly: US for the two US-pool slices and DE for the German-pool slice. In the UI, leave the country field blank only when you intentionally want its default behavior; do not type Auto (Based on IP) as a literal value.

Step 2. Connect proxies and start conservatively

AI Mode is served through a browser interface, so proxy quality and session stability matter. Start with a small test of five to ten queries before running a larger research set.

  1. Use A-Parser Premium proxies: choose a residential pool appropriate to the target market. A mobile pool can be an alternative.
  2. Validate availability and latency with an A-Parser proxy checker.
  3. Start with 3–5 threads rather than maximising concurrency immediately.
  4. Use a 60-second timeout and inspect failed rows, including Blocked: google.com/sorry if it appears.

A data center pool may work, but test it separately before relying on it. The practical requirement is simple: the pool must return stable browser sessions for the intended Google location.

For a country comparison, keep the query file and hl constant. Change only the pool:

DE / US: German queries + hl=de + gl=US + US residential pool
DE / DE: German queries + hl=de + gl=DE + Germany residential pool

Step 3. Export the answer and sources as CSV

For a first collection, CSV is the simplest useful output. The Common format field in the A-Parser UI is single-line, so paste this template as one physical line. It writes a query-level row first, with empty source fields, and then adds one row for every source. That preserves an answer even when p1.sources is empty.

[% tools.CSVline(query, p1.info.success, p1.answer.replace('\n',' '), '', '', '') %][% FOREACH s IN p1.sources %][% tools.CSVline(query, p1.info.success, p1.answer.replace('\n',' '), s.link, s.anchor, s.snippet.replace('\n',' ')) %][% END %]

The six CSV columns are query, success status, answer, URL, domain, and snippet. When counting citations, count only rows with a populated URL or domain; the first query-level row is an answer record, not a source citation.

The parser fields used in this article are:

FieldWhat it contains
p1.answerThe complete generated Gemini answer
p1.sourcesThe source collection returned with the answer
s.linkThe source URL returned by Google
s.anchorThe source domain or anchor label
s.snippetThe source excerpt or returned snippet
p1.info.successTask-completion status

Keep JSON or JSON Lines as a separate post-processing step. The CSV export is enough to audit answers, count source rows, normalize domains, and load the results into a spreadsheet or database.

Step 4. Separate language and location tests

This example used English questions through a US proxy pool and the same German question set through US and German pools. That separates a language comparison from a location comparison.

Example English queries used for the EN / US control slice
how to get cited in google ai overviews when ranking #1
best cheaper ahrefs alternatives in 2026
do backlinks help you get cited in google ai
cloud crawler alternatives to screaming frog for large sites
how to remove negative reddit threads from google ai results
best rank trackers for google ai overviews
why organic traffic drops while rankings stay #1
does schema markup help rank in gemini search
why google ai mode cites youtube instead of websites
does llms txt help with google seo
Example German queries used for the DE / US and DE / DE location comparison
wie man in google ai overviews erscheint, wenn die website bereits auf platz 1 rankt
günstige ahrefs alternativen 2026
beeinflussen backlinks zitate in google ai
cloud crawler alternativen zu screaming frog für große websites
wie man negative reddit diskussionen aus google ai antworten entfernt
tools zur positionsüberwachung in ai overviews
warum sinkt der traffic trotz ranking auf platz 1
hilft schema.org dabei, in gemini antworten zu erscheinen
warum zitiert google ai mode youtube häufiger als websites
hilft eine llms.txt datei bei google seo

For a language comparison, use thematically comparable questions in each language. For a clean location test, hold the language and question set constant and run the same set through both proxy pools. Otherwise, you will not know whether a difference came from language or location.

Save the result and run the task

In Results, enable saving to a file and enter a name such as:

google_ai_mode_$datefile.format().csv

If you will open the export in Excel, enable Write UTF-8 BOM. Then click Add task or Run. When the task is complete, download the CSV from the task queue.

Collection parameters

ParameterValue
Search environmentGoogle AI Mode (Search with AI)
A-Parser buildv1.2.3690 on Linux
Built-in parserFreeAI::GoogleAIFreeAI::GoogleAI
Query input10 natural-language SEO questions in the queries field
SlicesEN / US, DE / US, and DE / DE
Location handlingExplicit gl=US or gl=DE, matched to the residential proxy pool
Threads and timeout3 threads; 60 seconds
Result formatCSV through tools.CSVline
What to validate after the taskp1.info.success, answer presence, source count, URLs, domains, and snippets


4. SaaS or self-hosted collection: which fits AI Mode monitoring?

This decision makes sense after the first collection, when the team knows which answers, URLs, domains, snippets, and source counts it actually needs.

What recurring AI Mode monitoring costs

The table below is a snapshot of selected public plans. One “prompt” can represent a different mix of model, country, and tracking frequency in each product, so this is not the cost of one run. It is a way to compare the monitoring capacity included in those plans.

ServicePlan and monthly priceIncluded promptsPrice per included prompt
Semrush AI VisibilityToolkit — $9925$3.96
Peec AIStarter — $9550$1.90
Peec AIAdvanced — $495350$1.41
OtterlyAIStandard — $189100$1.89
OtterlyAIPro — $9891,000$0.99
A-ParserPerpetual licence + proxiesNo prompt credits in the licenceDepends on traffic and infrastructure

Every public plan in this table is below 2,000 tracked prompts. At that volume, SaaS normally needs extra capacity or a negotiated tier; with A-Parser, proxy spend and processing requirements grow instead of prompt credits.

* Pricing and plan details on provider sites can change, so check current pricing and terms before purchasing.

Bottom line: when A-Parser is the better value

SaaS is useful when you need a ready-made panel for a few brands without setting up collection. However, for recurring monitoring across hundreds or thousands of queries, A-Parser gives you more control over costs: the licence does not add a separate charge for each new brand, domain, or query group.

That does not make self-hosted collection free: it still requires the licence, proxies, and computing capacity. A-Parser lets you retain the full Gemini answer, URLs, anchors, and snippets; choose your own queries and markets; define counting rules; and keep the results in files or a database. If you need ongoing AI Mode monitoring built around your own method, A-Parser can be a better value than a standard report in a ready-made service.


5. From raw logs to action: what the collection means for SEO work

Once you have the raw logs, the goal is not to claim a universal AI Mode rule. Use each answer, source set, and market comparison to build a repeatable monitoring process.

  1. A brand can be present in the answer while another site receives the source card.
    What the data shows: Across the three slices, Gemini repeatedly relied on independent publications, communities, videos, and vendor pages. A source card supports one generated answer; it does not prove that the top-ranking brand is the site Google will cite.
    What to do: Track brand mentions in p1.answer separately from links to the brand’s domain in p1.sources. Build visibility reports around both signals.
  2. Video is part of the source mix, not an afterthought.
    What the data shows: YouTube appeared in all three slices: 7 of 86 EN / US source rows, 4 of 82 DE / US rows, and 3 of 66 DE / DE rows.
    What to do: Keep the returned URL, domain, snippet, and query together. If the snippet includes a timestamp, retain it. Add channel data later only when the analysis requires enrichment beyond the parser’s basic output.
  3. Communities need to be monitored as sources, not excluded from the source audit.
    What the data shows: Reddit and LinkedIn appeared in every slice. Their presence does not establish that either platform dominates AI Mode, but it does show that a source audit limited to publishers and vendor domains is incomplete.
    What to do: Add the relevant community domains to the source taxonomy. When a recurring discussion appears, read the original thread before drawing a conclusion from the Gemini summary.
  4. Proxy location is part of the methodology, not a reporting filter added later.
    What the data shows: With the US pool, the German question set produced 2 .de domains; with the German pool, it produced 25. The two domain sets shared only 14 domains out of 112 combined domains.
    What to do: Run country comparisons with the same query file, record the proxy country beside every row, and repeat the pair before declaring a stable regional pattern.
  5. Task success, answer presence, and source presence are separate checks.
    What the data shows: For one German query about traffic loss at position one, the DE / DE slice returned a full answer but no populated source rows; the DE / US slice returned nine.
    What to do: Store p1.info.success, p1.answer, and source count as different fields in the monitoring dataset. A completed task is not automatically a complete citation record.

6. Conclusion

The three slices point to one practical conclusion: organic rankings alone do not tell you what Google AI Mode shows a user.

The English and German collections produced answers of similar length and a comparable number of sources. Yet the same German queries, routed through US and German proxy pools, shared only 14 cited domains out of 112 combined domains. The German pool also shifted the source mix from two .de domains to 25.

A SaaS dashboard can give you a quick visibility snapshot. It cannot replace the underlying data collection when the question is “What did Gemini actually say, which sources did it show, and what changed in the German market?” A-Parser with FreeAI::GoogleAIFreeAI::GoogleAI lets a team run that collection on its own computer or server, retain the complete answers and sources, and build monitoring around the data the team actually needs.


Useful resources


Ready-to-use preset

In the Task Manager, in the Task preset row, click the import button to the right of the field and select Import preset. Open the spoiler and paste the code into the import field.

Show preset code for import

eJx9Vd9v2zgM/lcE3Ya2hyBYB9we8pZlza6HXrO12700RcHatK2LLGmiHDcI8r+P
kp047XX3kkgkP/74SMpbuUZPyho5OR/JALSiLx4JA8nJ3Va6dJYTmWMBjQ5yJB14
Ygir7+TcI04vJ5PP1paaT6w+GG5l2DhkqOUIXuXISpXzvdJ8WoNuohKN3P3atDw2
/T9D5+3TZlZhtkJ/BPld7u7vR5KL4JRobn0NsZg3Pxr0G3H3VswXNxfT2Z+CxOW1
cOdjso3PkMTbe1YGazWNZ7f/aGXwlLVgqEU/9ug0ZHh6slyak9GJODkbCRqz0Sr+
g8kq6+OJjHIOwyv2Z12Ai+tPfJCHBG9hjd8sJ1gojYN4zrdrqGNBZSL6AdRDbXN8
eJNDwGg8LlJtp2fjjNaMhDxXgbsKuis6tmsg4rtRPxI/xrJtJEMhzb2tWRTwKfTC
zZ6wu54xyS6ahP3aYeSkAE04ksSZz4ETyV9qVEAPwfqFi/mwfCutmWp9hWvUg1ny
/7FROufZmhYMuuyBr5ss/uNjdyjvOBTPSes5h4OXdPu4+HtA5fbKlnsytKpV4DvN
bGO49HcjuUJ0B8auo1FtPR6C9H772Lw8Dk0cyaF/UzeInhXxrCnPhZk1hSoX/Zjv
LRvzjTd0YWa2dhpjVabRmptCeDPMypT6JsTLkOBL8CyFeLbbaeL/uu1SdV7xLP4R
E6yZx+OovcsMtP5+c3WsiUAK1i3MhfcvmpfGQla25c0SJQaRcStyoYzoxlqAErFh
a4UtibZCIzyYlTKl+O18aR6RGFIhOPQCKo8FCdA8JQaCWvPSsqP3795/WJrcikfI
VnEjSVSondjY5hcRlybTtslF5qHV0fGxR86TMo9QxxwKb/nHeqHBlyiIXdHS9OV0
HAmDZYLyPW6gCJwm5BSx9VGVfcv7mmKRIniIjxelCK/wsTRttRHWl2BUFq2Lgv9z
b12kihu954oEBdgkxnLLNRBTVoOowa8a17GRAkYSkAtTghB8VnUBhsjxgUl8UWQv
NI/IEApcjrCFaPGxJyAF0bpmtp5C579Vodp7Ijx+Y9JApvnmh6u0/KTwbXd/+Koc
vj1bXsx/6UsnjbAk2/0Eupxbaw==

For the first run, keep hl, gl, and the proxy checker as configured in the preset, or replace them with values from your own setup. Run a few test queries first and check the answer, sources, and task status.


Sources

  1. Ahrefs: “AI Overviews vs AI Mode — What 730K Responses Reveal” — 86% semantic similarity and 13.7% cited-URL overlap (https://ahrefs.com/blog/ai-overviews-vs-ai-mode/).
  2. A-Parser documentation: “FreeAI::GoogleAI” — parser settings, fields, and output templates (https://a-parser.com/docs/en/parsers/freeai-googleai).

Back to blog