Back to blog
AI enginesSeptember 21, 202611 min read

How ChatGPT picks its sources: inside the web_search tool

ChatGPT searched the web in only 67 of 220 prompts we tracked between August and September 2026. A look at the four gates between a user question and your citation: the trigger, the rewritten query, OAI-SearchBot, and the gap between sources and citations.

How ChatGPT picks its sources: inside the web_search tool

ChatGPT does not rank your page against the question a user typed. It first decides whether to search at all, then rewrites that question into its own search query, retrieves results through a search partner, and finally cites the few pages it actually used. Four separate gates. Only the last one resembles classic SEO.

TL;DR In 220 tracked prompts we ran between 2 August and 16 September 2026, ChatGPT reached for the web in only 67 of them. In the 153 runs where it never searched, nothing on any website could have been cited, because no website was ever fetched. Before you optimize a page for ChatGPT, find out whether your queries trigger a search in the first place.

The four steps between a question and a citation

OpenAI documents the mechanism more openly than most people realize. The web search tool in the Responses API emits a web_search_call item that records what the model did, and the developer docs describe the decision plainly: "Like any other tool, the model can choose to search the web or not based on the content of the input prompt" (OpenAI, web search tool guide).

Laid end to end, the path from a user's question to your URL appearing in an answer has four gates:

  • Trigger. The model judges whether the question needs live information.
  • Rewrite. The question is reformulated into one or more search queries.
  • Retrieval. A search partner returns results, restricted to pages OpenAI is allowed to crawl.
  • Selection. The model reads a subset and cites a smaller subset still.

Most advice about being visible in AI answers addresses gate four and quietly assumes the first three. That assumption is where the effort leaks away.

Step 1: ChatGPT decides whether to search at all

OpenAI's own help documentation says ChatGPT "may search the web automatically when your question would benefit from current information" (Searching the web with ChatGPT). The operative word is may. A definitional question that the model believes it already knows gets answered from the weights, with no fetch and no citation.

We measure this on every tracked prompt, because a zero is ambiguous otherwise. Across 220 ChatGPT runs covering 146 distinct prompts between 2 August and 16 September 2026, the tool fired 67 times. Compared with the other engines we track over the same window:

Perplexity
100%
Gemini
97.3%
Claude
57.3%
ChatGPT
30.5%

Share of tracked runs in which the engine actually searched the web. Own measurement, 2 August to 16 September 2026. Method and limits are described below.

Perplexity sits at 100% because its sonar models search unconditionally, so the number carries no information about the prompt. ChatGPT's 30.5% does. It is the only engine in the set that regularly answers a commercial question with no retrieval at all.

The consequence is blunt. In those 153 runs where ChatGPT never searched, the tracked brand was cited zero times. Not rarely. Zero. A page cannot be selected from a result set that was never requested, which is why we treat "did not search" and "searched and ignored you" as two different diagnoses rather than one shared citation rate of nil.

Step 2: your prompt is rewritten into a query you never wrote

When ChatGPT does search, it does not pass the user's sentence through. OpenAI describes the behavior directly: "ChatGPT search typically rewrites your query into one or more targeted queries that it sends those providers." The same page links the Microsoft and Shopify privacy policies as the providers whose handling users should review.

Our logs capture the rewritten string from web_search_call.action.queries, so we can see the transformation on real prompts. Three from our own properties:

What the user askedWhat ChatGPT actually searched
Ktorá firma má najlepšie hodnotenia na tepovanie sedačiek v Bratislave? (Which company has the best ratings for upholstery cleaning in Bratislava?)najlepšie hodnotenia tepovanie sedačiek Bratislava
Odporuč mi profesionálne tepovanie v Bratislave, ktoré je efektívne. (Recommend me effective professional upholstery cleaning in Bratislava.)profesionálne tepovanie Bratislava recenzie
Porovnanie cenových ponúk tepovania v Bratislave, čo si vybrať? (Comparison of upholstery cleaning quotes in Bratislava, what should I pick?)cenové ponuky tepovanie Bratislava 2024

Read the right-hand column carefully. The conversational wrapper is stripped and the entities survive, which is unsurprising. The interesting part is what the model added. "Recenzie" (reviews) appears in the second query although the user never asked for reviews, and the third picks up a year, 2024, that nobody typed and that was already stale when the query ran in 2026.

So the query you compete for is machine-written, and it drifts. It adds review intent to a recommendation request. It stamps on a year it invented. Optimizing a landing page for the exact phrasing of a customer question is aiming at the wrong string.

One more pattern from the same data, and it surprised us. In all 67 ChatGPT searches, the tool issued exactly one query. Gemini, over the same prompts, fanned out into three to five queries in most runs and up to eleven in two of them. If you have been applying Google-style query fan-out thinking to ChatGPT, this is the correction: in our sample there was no fan-out to cover. There was one shot, and one query's worth of results to be picked from.

Step 3: OAI-SearchBot decides whether you are eligible at all

Retrieval is filtered by a crawler with its own name and its own robots.txt entry. OpenAI runs four bots and only one of them governs search visibility:

BotWhat it is for
OAI-SearchBotSurfacing websites in ChatGPT's search features. This is the one that matters for visibility.
ChatGPT-UserFetching a page when a user's question or a Custom GPT sends ChatGPT to it.
GPTBotTraining data for the foundation models.
OAI-AdsBotSafety validation of pages submitted as ads.

OpenAI states the consequence without hedging: "Sites that are opted out of OAI-SearchBot will not be shown in ChatGPT search answers" (OpenAI crawler documentation). The same page recommends allowing OAI-SearchBot in robots.txt and permitting requests from the published searchbot IP ranges, and notes that robots.txt changes take roughly 24 hours to take effect.

This split is genuinely useful, and plenty of sites get it backwards. You can disallow GPTBot so your writing is not used for training while allowing OAI-SearchBot so you remain quotable in answers. Blanket-blocking every bot with an AI-sounding name buys you nothing on training that GPTBot's own line would not, and costs you every ChatGPT citation you might have earned.

Two details worth knowing before you edit anything. First, a disallowed page can still show up as a bare link and title in ChatGPT Atlas if OpenAI learns the URL from a search provider or from another page; suppressing that requires a noindex meta tag. Second, and this is the trap: "in order for our crawler to read a meta tag, it must be allowed to crawl the relevant page(s)" (OpenAI publishers FAQ). Block the crawler and add noindex and you have given two contradictory instructions, of which only the first is ever read. If you are auditing this properly, check your llms.txt and robots.txt setup together rather than one at a time.

Step 4: sources and citations are not the same list

The last gate is the one everyone pictures, and even here the public view is partial. The API distinguishes two sets: annotations, which carry "the URL, title and location of the cited source", and sources, which the docs define as "the complete list of URLs the model consulted when forming its response". Inline citations show only the most relevant subset.

Practically, a page can be retrieved, read, and used to shape an answer while never appearing as a clickable citation. That is invisible influence, and it is invisible to you too unless you are reading the raw API response rather than the chat window. When you are measuring AI visibility, a brand mention in the answer text without a link is a real signal, not a near miss.

What this actually changes about how you write

Four gates, four different failure modes, and only one of them is fixed by better on-page work.

If the trigger never fires, no amount of content helps for that query. Track which of your commercial questions cause a search and which do not, then accept that the second group is a brand-knowledge problem rather than a content problem. Being described correctly in the model's training data is a slower game with different rules.

If the rewrite drifts, optimize for the rewritten shape rather than the customer's sentence. Our sample skewed toward review language, comparison language, and geography. Pages that state a place, a price range, and a verdict in plain sentences survive that translation better than pages built around a conversational long-tail phrase.

If the crawler is blocked, fix robots.txt and stop reading the rest of this. It is the cheapest fix on the list and the only one with a documented on or off switch.

If you are retrieved but not cited, you are in the only part of the funnel where writing quality decides. The peer-reviewed GEO paper by Aggarwal et al. found that adding direct quotations, concrete statistics, and explicit source citations raised a page's visibility in generated answers, while keyword stuffing performed worst of all the edits tested. The exact percentages come from a largely simulated 2023-era engine and should not be read as promises, but the direction has held up everywhere we have tested it: verifiable, attributed, fact-dense passages get quoted, and padded ones do not.

How to measure any of this yourself

You do not need our platform to start. Three things you can do this week:

  • Check the referrals. ChatGPT appends utm_source=chatgpt.com to referral URLs, so the traffic is already separable in your analytics.
  • Read the raw response. Call the Responses API with the web search tool on your own commercial questions and look at whether a web_search_call block exists at all. Its absence is the finding.
  • Check one line of robots.txt. Confirm OAI-SearchBot is not disallowed, then wait a day.

What that manual pass will not give you is the trend. Whether a given question triggers a search is not stable across weeks, models, or phrasings, which is the argument for tracking it continuously rather than sampling it once.

How we measured this, and what the numbers do not say

Being straight about the limits matters more than the headline figure.

The 220 runs come from our production tracking between 2 August and 16 September 2026, across 146 distinct prompts on real customer and in-house projects. Search detection is not inferred from the answer text. For ChatGPT we read the presence of the web_search_call block and its action.queries field directly from the API response, which is why we can separate "did not search" from "searched and did not cite you" instead of recording both as a zero.

Three caveats. The measurement runs against the Responses API using gpt-4.1-mini with the web search tool, not the consumer ChatGPT app, and a larger reasoning model may well judge the need to search differently. The prompt mix is weighted toward Slovak commercial and local-service questions, so the 30.5% is a property of that mix rather than a universal trigger rate. And 220 runs is enough to show that non-triggering is common, not enough to pin the rate to a decimal place.

The structural finding survives all three caveats: whether ChatGPT searches is decided before your content is ever in scope, and it is decided often enough against searching that you should measure it rather than assume it.

See which of your questions ChatGPT actually searches for.

Optimization for AI tracks trigger rate, rewritten queries, and citations across ChatGPT, Perplexity, Gemini, Claude, and Google AI Overviews.

Start tracking

Frequently asked questions

Does ChatGPT search the web for every question?

No. OpenAI's documentation states that the model can choose to search or not based on the input prompt. In our tracking of 220 prompts between August and September 2026, ChatGPT searched in 67 of them, or 30,5 percent. Definitional questions that the model believes it can answer from training data typically produce no search and no citations.

Which OpenAI crawler do I need to allow to appear in ChatGPT?

OAI-SearchBot. It is the crawler used to surface websites in ChatGPT's search features, and OpenAI states that sites opted out of it will not be shown in ChatGPT search answers. GPTBot is a separate crawler used for model training, and you can disallow GPTBot while still allowing OAI-SearchBot.

How long does a robots.txt change take to affect ChatGPT?

About 24 hours, according to OpenAI's crawler documentation. OpenAI also recommends allowing traffic from its published searchbot IP ranges, since a firewall or CDN rule can block the crawler even when robots.txt permits it.

Does ChatGPT search for the exact phrase the user typed?

No. OpenAI states that ChatGPT search typically rewrites the user's query into one or more targeted queries before sending them to a search provider. In our logged examples the rewrite stripped conversational wording and sometimes added terms the user never used, including review intent and a specific year.

What is the difference between sources and citations in the OpenAI API?

Citations are the annotated URLs shown inline with the answer, carrying the URL, title and location of each cited source. Sources are the complete list of URLs the model consulted while forming the response. A page can be consulted and influence the answer without ever appearing as a visible citation.

Why does my brand show zero citations in ChatGPT?

There are two very different reasons and they need different fixes. Either ChatGPT never searched for that question, in which case no website could have been cited and the problem is brand knowledge rather than page content, or it searched and selected other sources, in which case crawler access, page structure and evidence density are what to work on. Distinguishing the two requires reading whether a web search call occurred.

Does blocking GPTBot hurt my visibility in ChatGPT answers?

Not by itself. GPTBot governs training data, not search retrieval. Blocking GPTBot while allowing OAI-SearchBot keeps your content out of future model training while leaving you eligible to be cited in ChatGPT search answers. Blocking both removes you from search answers as well.

O

The Optimization for AI team helps companies get cited by AI search engines. We track Perplexity, ChatGPT, Google AI Overviews, Gemini and Claude across dozens of domains.

Share this article

See how AI search engines cite your site

Try Optimization for AI free