AI grounding by engine: which index each assistant searches, and how to measure it
Grounding is the step where an AI engine retrieves content, usually from a search index, and writes its answer from it, linking the pages it used. The index behind that step decides which pages are even candidates for citation, so “which search engine does ChatGPT use?” has practical weight. Some of the answer is documented by each vendor and much of it isn’t.
The first half below lists, per engine, what the vendor states about its search provider and citation display, with source and check date, and marks the rest “not publicly documented”. The second half is a method for estimating, on your own prompts, how closely each engine’s citations track Google organic results.
It builds on two earlier posts without repeating them: how AI engines choose citations covers the retrieval-then-selection model and selection hypotheses, and ChatGPT query fan-out covers aggregating ChatGPT’s searches into a keyword list. This post covers the index layer and how to attribute citations to it.
Documented vs not documented, per engine
All sources checked 2026-09-17.
ChatGPT search
| Question | Documented answer | Source |
|---|---|---|
| Search provider | “Sometimes partners with other search providers”; privacy links name Bing and Shopify | ChatGPT Search help |
| Query handling | Rewrites the prompt into one or more targeted queries; may send more specific follow-up queries after reviewing initial results; may use memories and general IP-based location | same |
| Own crawler role | OAI-SearchBot is “used to surface websites in search results in ChatGPT’s search features”; opted-out sites are not shown in search answers but can appear as navigational links |
OpenAI crawlers |
| Citation display | Inline citations when shown; otherwise a Sources panel with cited sources and other relevant links | ChatGPT Search help |
| Share of queries per provider, when each provider is used, how results are merged | Not publicly documented | none |
The two documented facts combine in a useful way: ChatGPT uses outside providers, and it also runs its own search crawler. Which of the two surfaced a given citation is not documented.
Perplexity
| Question | Documented answer | Source |
|---|---|---|
| Search provider | Its own index; the Search API exposes “the same global-scale infrastructure that powers Perplexity’s public answer engine” | Introducing the Perplexity Search API |
| Index scale | “Hundreds of billions of webpages” (launch post); “over 200 billion unique URLs” tracked | same; Architecting and evaluating an AI-first search API |
| Retrieval design | Hybrid lexical and semantic retrieval merged into a candidate set, then multi-stage ranking; documents split into sub-document units | Architecting and evaluating an AI-first search API |
| Own crawler role | PerplexityBot surfaces and links websites in search results; not used for foundation-model training |
Perplexity crawlers |
| Citation display | Numbered citations on each answer | How does Perplexity work? |
| Whether the consumer answer uses any third-party index as well | Not publicly documented | none |
Gemini (app)
| Question | Documented answer | Source |
|---|---|---|
| Search provider | “External sources such as Google Search”, described as retrieval augmentation | Gemini app overview (last updated July 25, 2024, per the page) |
| Other sources | Public information from Google Search, Flights, Hotels, Maps and YouTube is used automatically | Gemini Apps Help: Connected Apps |
| Publisher control | Google-Extended governs use of crawled content for Gemini training and for grounding in Gemini Apps; it does not affect Google Search |
Google common crawlers |
| Citation display | Sources button at the bottom or in-line, opening a side panel; not every response has sources | Gemini Apps Help: sources |
| How queries are formed, how many searches run per answer | Not publicly documented for the app | none |
For developers, Google’s Grounding with Google Search docs say the model “automatically generates one or multiple search queries” and returns them. That describes the Gemini API tool, not necessarily the consumer app.
Microsoft Copilot (consumer)
| Question | Documented answer | Source |
|---|---|---|
| Search provider | “Grounded in web search results”, centering on “high-ranking content from the web”; the note does not name the engine | Transparency Note for Microsoft Copilot (for individuals), August 18, 2026 |
| Related Microsoft product | Copilot Chat (work) sends short generated queries to the Bing search service | Copilot Chat privacy and protections |
| Publisher reporting | Bing Webmaster Tools reports citations across Microsoft Copilot, AI summaries in Bing and select partners, including “grounding queries” | AI Performance in Bing Webmaster Tools |
| Citation display | Hyperlinked citations listed below the text | Transparency Note |
| Query rewriting details for the consumer app | Not publicly documented in the transparency note | none |
The Bing Webmaster Tools report is the strongest public link between consumer Copilot citations and Bing: Microsoft reports those citations inside Bing’s publisher tool. It describes reporting, and says nothing directly about the retrieval pipeline.
Grok
| Question | Documented answer | Source |
|---|---|---|
| Search provider | Searches “public X posts” and performs “real-time web searches” | Grok consumer FAQ |
| API tools | Separate Web Search and X Search tools; X Search supports keyword, semantic, user and thread lookups | Web Search, X Search |
| Citation display (API) | Full list of encountered sources plus optional inline [[N]](url) citations; not every listed URL is used in the answer |
Citations |
| Web index provider, crawler user agents, consumer citation UI | Not publicly documented in first-party pages we found | none |
Google AI Overviews and AI Mode
| Question | Documented answer | Source |
|---|---|---|
| Search provider | Google Search; supporting links must be indexed and snippet-eligible, with no additional technical requirements | AI features and your website |
| Query handling | May use query fan-out, “issuing multiple related searches across subtopics and data sources” | same |
| Differences between the two | May use different models and techniques, so responses and links vary | same |
| Publisher control | Googlebot robots.txt rules; nosnippet, data-nosnippet, max-snippet, noindex |
same |
| The fan-out queries for a given answer | Not exposed in the interface or documented per answer | none |
What follows from the documented part
The tables suggest three hypotheses. None is established, and each can be tested:
- Engines documented as grounded in Google Search should overlap more with Google organic results. Gemini, AI Overviews and AI Mode are grounded in Google. If their cited domains don’t overlap with Google organic results for the same topic more than other engines’ do, the fan-out queries, which Google doesn’t show per answer, are diverging from the prompt.
- Engines with their own or mixed providers should overlap less. Perplexity runs its own index; ChatGPT mixes providers and its own crawler; Copilot is tied to Bing through Microsoft’s reporting. Lower overlap with Google is expected, but its size is an empirical question per category.
- Grok should cite x.com more than other engines. It is the only engine that documents X search. The share of
x.comsources per engine is a direct test.
The measurement method
For each engine, estimate what share of its cited domains also appear on Google’s first organic results page (and first two pages) for the searches behind the answer, on your prompt set, with a margin of error.
Step 1: choose the fields per engine
| Engine | Citations | Searches the engine ran | Notes |
|---|---|---|---|
| ChatGPT | sources[], citationPills[] |
searchQueries[] with include.searchQueries: true |
+2 credits |
| Perplexity | sources[], citationPills[] |
search_model_queries[] |
|
| Copilot | sources[], citationPills[] |
searchQueries[], included automatically |
No surcharge |
| Grok | sources[] |
searchQueries[] |
|
| Gemini | sources[], citationPills[] |
Use the prompt as the Google query | |
| AI Mode | sources[], citationPills[] |
Use the prompt as the Google query |
Where an answer has no search queries, run the prompt itself through Google and record that you did. It is a weaker comparison, so report those rows separately.
Step 2: normalize to registrable domains
Compare at domain level (www. stripped, lower case). The index question is about sites: did this engine’s retrieval reach the sites Google ranks for the same searches?
Step 3: collect and compute
import os
from urllib.parse import urlsplit
import requests
API = "https://api.answerline.dev"
HEADERS = {"Authorization": f"Bearer {os.environ['ANSWERLINE_API_KEY']}"}
ENGINES = {
"chatgpt": ("/v1/monitor/chatgpt", {"include": {"searchQueries": True}}),
"copilot": ("/v1/monitor/copilot", {}),
"grok": ("/v1/monitor/grok", {}),
"gemini": ("/v1/monitor/gemini", {}),
}
def post(path: str, body: dict) -> dict:
resp = requests.post(API + path, json=body, headers=HEADERS, timeout=360)
resp.raise_for_status()
return resp.json()["result"]
def domain(url: str) -> str:
return (urlsplit(url).hostname or "").lower().removeprefix("www.")
def organic_by_page(query: str, country: str) -> tuple[set[str], set[str]]:
serp = post("/v1/monitor/google", {"query": query, "country": country, "pages": 2})
results = [r for r in serp.get("organicResults", []) if r.get("link")]
page1 = {domain(r["link"]) for r in results if r.get("page") == 1}
pages12 = {domain(r["link"]) for r in results}
return page1, pages12
def measure(prompt: str, country: str = "US") -> list[dict]:
rows = []
for name, (path, extra) in ENGINES.items():
result = post(path, {"prompt": prompt, "country": country, **extra})
cited = {domain(s["url"]) for s in result.get("sources", []) if s.get("url")}
queries = result.get("searchQueries") or result.get("search_model_queries") or []
basis = "engine_queries" if queries else "prompt_fallback"
top10, top20 = set(), set()
for q in queries or [prompt]:
page1, pages12 = organic_by_page(q, country)
top10 |= page1
top20 |= pages12
rows.append({
"engine": name,
"basis": basis,
"cited": len(cited),
"in_top10": len(cited & top10),
"in_top20": len(cited & top20),
"x_com": sum(1 for d in cited if d in ("x.com", "twitter.com")),
})
return rows
top10 and top20 here mean Google result pages 1 and 1–2, read from each organic result’s page field. The example is synchronous for readability. In a real study, deduplicate queries across engines and prompts, cache each query’s organic results, and submit everything as async batches with webhooks.
Report per engine, aggregated over the prompt set:
- Overlap on page 1: sum of
in_top10/ sum ofcited, and the same for pages 1–2 within_top20. - x.com share: sum of
x_com/ sum ofcited. - The count of answers on
prompt_fallback, reported separately fromengine_queries.
Step 4: size the sample
Treat each cited domain as an observation for the overlap rate, but remember observations within one answer are correlated. The conservative unit is the answer: compute overlap per answer, then average across answers. Standard margins for a proportion at 95% confidence:
| Independent observations (n) | Margin at a 50% rate | Margin at a 20% rate |
|---|---|---|
| 50 | ±13.9 points | ±11.1 points |
| 100 | ±9.8 points | ±7.8 points |
| 400 | ±4.9 points | ±3.9 points |
These use 1.96 × √(p(1−p)/n). To detect a difference between two engines, or a before/after change, the requirement is larger: moving from 20% to 30% at 80% power and 5% significance needs about 290 observations per group, and from 30% to 40% about 360. If your prompt set is 50 prompts, plan several runs per prompt across days and analyze the prompt as a cluster, rather than pretending 50 × 5 runs are 250 independent draws. Sampling vs census and answer volatility cover the repeated-runs side.
Step 5: interpret with care
- Higher overlap for Gemini than for ChatGPT on your prompts is consistent with the documented providers. It does not prove the pipeline.
- Low overlap on
prompt_fallbackrows mostly measures the gap between the prompt and the engine’s hidden searches, not the index. - A high x.com share for Grok on news-like prompts and a low one on product prompts is plausible; measure prompt categories separately.
- Overlap with Google says nothing about Bing. For Copilot, pair this measurement with Bing Webmaster Tools’ AI Performance report for your own site.
What it costs
As async tasks: ChatGPT with searchQueries 7 credits, Copilot 5, Grok 5, Gemini 4, so 21 per prompt for these four engines. Each Google query costs 3 credits for the first page and 2 per extra page, so 5 with pages: 2. Synchronous calls add 2 credits each.
An illustrative study: 60 prompts, 3 runs each, 4 engines is 60 × 3 × 21 = 3,780 credits. If the engines’ searches plus fallback prompts yield 900 unique queries at 5 credits each, add 4,500, for 8,280 in total. That is beyond the free tier’s 500 monthly credits, so validate the pipeline on five prompts first. See credits and cost planning.
Pitfalls
- A pooled organic set flatters every engine. Keep each engine’s queries and organic results separate.
- Several vendor pages above changed during 2026. Re-check them and date the check in your report.
- ChatGPT documents location-aware query rewriting, so keep
countryfixed per comparison. - “Not publicly documented” means unknown. It doesn’t mean no.
Field details per engine are on the engine pages; the first call takes a few minutes with the quickstart.
Questions
What is grounding in AI search?
Grounding is the step where an assistant retrieves content, usually from a web search index, and bases its answer on it, returning links to the pages used. Which index is searched decides which pages can be cited at all.
Does ChatGPT use Bing?
OpenAI's ChatGPT Search help article lists Bing and Shopify as third-party search providers and says ChatGPT sometimes partners with other search providers. It does not say what share of searches goes to each provider, so the split is not publicly documented.
Which engines document their search provider?
Google documents Google Search for the Gemini app and Google indexing for AI Overviews and AI Mode. Perplexity documents its own index. Microsoft documents Bing for Copilot Chat, while its consumer Copilot transparency note says only web search results. xAI documents web and X search for Grok without naming an index provider.
How can I tell which index an engine relies on for my topic?
Measure overlap. Collect each engine's cited domains and, where available, the searches it ran, then run those searches through Google and compute what share of cited domains also rank there. Compare the shares across engines rather than reading one number in isolation.
How many prompts do I need for a grounding study?
For a single proportion, 100 independent observations give a 95% margin of error of about plus or minus 10 points at a 50% rate, and 400 give about plus or minus 5. Detecting a change from 20% to 30% with 80% power takes roughly 290 observations per group.