Measure
August 12, 2026 · Updated August 17, 2026 · 13 min read
By Marcus Bransbury · Founder, Robot Visible
ChatGPT citations and search visibility
How ChatGPT search discovers and cites pages, which OpenAI crawler controls apply, what publishers can measure, and what one reproducible API search showed.
Quick answers
What makes a page eligible for ChatGPT search citations?
Allow OAI-SearchBot and its published network ranges to reach the public page, then make the page a strong source for a specific information need with clear visible claims, primary or well-attributed evidence, current facts, identifiable authorship, and useful internal discovery. Access creates eligibility, not a guarantee. Verify a citation only by capturing the answer, query, OpenAI surface, cited URL, and timestamp.
What is the difference between OAI-SearchBot, GPTBot, and ChatGPT-User?
OAI-SearchBot automatically crawls pages for ChatGPT search features. GPTBot crawls content that may be used for foundation-model training. ChatGPT-User fetches pages for certain actions initiated by a ChatGPT or Custom GPT user and is not the Search inclusion control. OpenAI documents these as independent roles, and says robots.txt rules may not apply to user-initiated ChatGPT-User requests.
Can I allow ChatGPT search but block OpenAI model training?
Yes. OpenAI documents OAI-SearchBot and GPTBot as independent robots controls. A publisher can allow OAI-SearchBot for search discovery while disallowing GPTBot to indicate that the site's content should not be used for foundation-model training. Verify that CDN and firewall policy follows the same distinction.
Does an OAI-SearchBot visit prove that ChatGPT cited my page?
No. It proves only that a verified search-crawler request reached a particular URL at a particular time. It does not reveal the user's query, an answer, source selection, mention, citation, impression, click, or conversion. Preserve crawler access as Eligible evidence and capture an actual answer separately for Observed evidence.
Can the OpenAI API measure ChatGPT search visibility?
It can provide a repeatable OpenAI web-search measurement surface with answer text and URL-citation annotations. OpenAI documents gpt-5-search-api as direct access to the models and tool used by Search in ChatGPT, and now points new integrations at the Responses API web search tool while keeping gpt-5-search-api as the Chat Completions path. Whichever you use, an API request is still not a consumer ChatGPT session, and the two are separate surfaces rather than interchangeable ones. Label the surface precisely and do not generalize one API result to all ChatGPT users.
How should I measure ChatGPT referrals and citations?
Keep four records separate: verified crawler requests, captured answers and cited URLs, attributable referral sessions, and downstream conversions. A crawler visit is not a citation, a citation is not a click, and a referral does not reveal total answer impressions. Compare stable questions over time and retain the query, surface, state, location, answer, source URL, and timestamp.
The short answer
To be eligible as a source in ChatGPT search answers, a public page should be available to OAI-SearchBot, including requests from OpenAI's published IP ranges. That removes a discovery barrier; it does not guarantee that ChatGPT will retrieve the page for a question, use its claims, cite its URL, describe the brand accurately, or send a visit.1
OpenAI documents search discovery, potential foundation-model training, and user-triggered fetching as independent jobs. A publisher can allow search through OAI-SearchBot while disallowing GPTBot for training. ChatGPT-User is different again: it may fetch a page because a person asked ChatGPT or a Custom GPT to visit it, and OpenAI says robots.txt rules may not apply to those user-initiated requests. The crawler reference keeps the current user agents and verification links in one maintained table.1
Treat the outcome as three separate states. Successful access can support Eligible evidence. A page with a clearer answer, stronger primary evidence, fresher facts, and better corroboration may be more Competitive. Only a captured answer that preserves the query, OpenAI surface, cited URL, response context, and timestamp is Observed citation evidence. None of those states should be inferred from the other two.
The three OpenAI web roles publishers need to separate
OpenAI's crawler documentation is unusually explicit about scope. OAI-SearchBot is used to surface websites in ChatGPT search features. GPTBot collects content that may be used to train generative AI foundation models. ChatGPT-User supports certain actions initiated by a person in ChatGPT or a Custom GPT and is not an automatic web crawler. A rule written for one name does not automatically control the others.1
| User agent | Documented role | What a successful request proves |
|---|---|---|
| OAI-SearchBot | Automatic crawling for websites that can surface in ChatGPT search results | That this crawler reached that URL at that time; not that the page was retrieved or cited in an answer |
| GPTBot | Crawling content that may be used in foundation-model training | That a training-purpose crawler reached the URL; not that the content entered a dataset, changed a model, or appears in search |
| ChatGPT-User | A page visit triggered by certain user actions in ChatGPT or a Custom GPT | That a user-initiated fetch reached the URL; not why the user asked, what the answer said, or whether the page was cited |
How ChatGPT search sourcing can be observed
OpenAI's web-search API documentation exposes a useful model for observation without publishing a source-ranking formula. A search-enabled response can contain a web-search action, answer text, and URL-citation annotations with the cited page's URL, title, and location in the answer. The API can also return the broader set of sources consulted, which OpenAI distinguishes from the smaller set cited inline. Search context size does not guarantee a fixed number of sources or citations.2
That distinction matters for publishers. A system can consult a page without citing it, cite the same page against several answer passages, or cite several URLs from one publisher. Counting citation annotations, unique URLs, unique domains, brand mentions, and referral sessions answers different questions. Pick the unit before comparing runs.
The visible source set is also query- and run-specific. A broad category question can be rewritten or supported by pages covering definitions, comparisons, implementation steps, statistics, and examples. Build one strong page for a coherent information need and connect genuinely different supporting pages with descriptive internal links. Do not manufacture near-duplicate pages for imagined rewrites.
| Signal | What it records | What it cannot establish alone |
|---|---|---|
| Search action | That the API surface performed a web-search operation, sometimes with the query it searched | Every ranking candidate, retrieval rule, or why one source won |
| Consulted source | A URL made available to the model while it formed the response | That the final answer visibly attributed a claim to that URL |
| URL-citation annotation | A URL and title attributed to a defined location in the returned answer | Consumer ChatGPT exposure, repeat visibility, sentiment, or a click |
| Brand mention without a URL | The answer named the tracked entity | That the tracked site supplied the information or received attribution |
Publisher controls: search, training, and on-demand retrieval
For search inclusion, OpenAI recommends allowing OAI-SearchBot in robots.txt and allowing requests from its published IP ranges. OpenAI says sites opted out of OAI-SearchBot will not be shown in ChatGPT search answers, although they can still appear as navigational links. It also warns that a robots.txt change can take about 24 hours to reach its systems, so an immediate retest is not a reliable policy check.1
A separate GPTBot rule expresses the site's training choice. Blocking GPTBot does not, by itself, opt the site out of ChatGPT search. Conversely, allowing GPTBot does not make a page search-eligible when OAI-SearchBot is blocked. ChatGPT-User cannot substitute for OAI-SearchBot either: OpenAI says it is not used to determine whether content may appear in Search.1
Robots.txt is only one layer. A CDN, web-application firewall, bot challenge, rate limit, authentication wall, redirect loop, or origin error can still refuse a permitted request. Verify the exact production URL at the edge and origin, and verify claimed crawler traffic against OpenAI's published ranges rather than trusting a spoofable user-agent string.
# Permit automatic discovery for ChatGPT search
User-agent: OAI-SearchBot
Allow: /
# Make a separate decision about potential model-training collection
User-agent: GPTBot
Disallow: /
# Do not rely on a ChatGPT-User rule as the Search control.
# OpenAI says these fetches are user-initiated and robots.txt may not apply.This example permits search discovery and declines GPTBot training. It does not guarantee selection, override a firewall, or prove that OpenAI has already recrawled the site. Preserve any more specific rules your site needs and test the deployed file.
What to publish when access already works
Once access is verified, the constraint usually moves from eligibility to selection. State the page's answer early in complete sentences, then provide the evidence and qualifications that make it safe to reuse. A useful source gives a reader the definition, criteria, comparison, limitation, date, or first-hand observation needed for the exact question—not generic copy wrapped around keywords.
Make authorship, organization identity, dates, pricing, availability, and methodology visible where they matter. Cite primary sources for volatile product facts and label your own tests as observations. Accurate structured data can reinforce those visible facts, but OpenAI does not document a special ChatGPT citation schema. Treat schema as machine-readable clarification, not a submission or ranking control.
Compare the currently cited pages claim by claim. If they publish primary data, direct experience, a clearer definition, or better corroboration, close that evidence gap. If your page already supplies the strongest relevant evidence, improve discovery and external corroboration rather than adding length for its own sake. A page can be excellent and still lose a particular run because selection is competitive and variable.
- Assign one canonical public URL to each substantive information need and keep its title, canonical, visible heading, and content aligned.
- Put important facts in server-readable text rather than requiring login, interaction, or client-side rendering to reveal them.
- Name the author or accountable organization and show when volatile facts were checked or meaningfully updated.
- Support consequential claims with first-party data, primary documentation, reproducible observations, or clearly attributed sources.
- Keep product, pricing, availability, and entity facts consistent across the site and credible third-party profiles.
- Link the page from relevant hubs and supporting pages with anchor text that explains why it is useful.
Measurement: keep crawler, answer, referral, and outcome evidence apart
A crawler visit is not a citation, and a citation is not a click. The reviewed OpenAI crawler and web-search documentation does not provide publishers with a Search Console-style report of ChatGPT impressions or every query that exposed a URL. Build the measurement record from the evidence you can actually preserve, and label the gaps unknown. Absence from one answer is not an impression count of zero; absence of a crawler log is not proof that OpenAI has never discovered the page.
Use a stable question set and store the exact question, surface, model or app state where available, location, time, answer text, cited source URLs, and target-domain outcome. Repeat under comparable conditions. A first appearance is an observation; repeated appearances describe persistence; a before-and-after difference is still correlation unless the test isolates the change.
Keep human visits and conversions in the same analysis but not the same metric. A referral session shows that a person followed a link. It does not reveal how many answers displayed the link, whether the link was an inline citation or navigation, or what uncaptured answer text surrounded it. Preserve the referrer, full landing URL, timestamp, session, and downstream outcome rather than converting one visit into an estimated citation count.
| Evidence | Useful interpretation | Do not call it |
|---|---|---|
| Verified OAI-SearchBot request in edge or origin logs | Search crawler access to one URL at one time | A search impression, citation, recommendation, or human visit |
| Verified ChatGPT-User request | A user-triggered OpenAI fetch reached the URL | Proof that OAI-SearchBot indexed the page or that Search cited it |
| Captured answer with a target URL citation | Observed citation for that query, surface, state, and timestamp | Stable ranking, share of all ChatGPT answers, or causality |
| OpenAI API URL-citation annotation | Observed attribution on that API measurement surface | A consumer ChatGPT session unless the consumer session itself was captured |
| ChatGPT or OpenAI referral session | A person clicked through and the visit retained attributable referral data | The number of answer impressions or citations |
| Conversion after an attributable referral | A downstream outcome for that visit under the analytics attribution model | Proof that a particular content change caused the answer or the conversion |
First-party observation: one ChatGPT Search API answer
On 12 August 2026 Robot Visible sent the query “what is answer engine optimization” to OpenAI's `gpt-5-search-api`, the API path OpenAI documents as direct access to the models and tool used by Search in ChatGPT. We set search context to medium and supplied an approximate London, United Kingdom location. The returned snapshot was `gpt-5-search-api-2025-10-14`.2
The answer contained 22 URL-citation annotations covering eight unique URLs across seven domains: Rank.ai, The Pedowitz Group, Optimus Consulting, SearchPod, TechRadar, Yext, and AEO Labs. TechRadar contributed two distinct cited URLs. Robot Visible was not mentioned and no robotvisible.com URL was cited.3,4,5,6,7,8,9,10
Every returned citation URL in this run carried `utm_source=openai`. That is a property of this recorded API response, not evidence that every OpenAI surface always adds the parameter or that consumer ChatGPT uses the same value. It does show why storing the full cited URL and a normalized canonical domain are both useful: the full URL preserves attribution evidence, while normalization prevents a campaign parameter from splitting one page into several citation identities.
This observation is bounded. It is one API run, not a consumer ChatGPT session, population-wide visibility report, ranking study, or causal test. The response can change with time, model snapshot, location, search context, index state, and ordinary answer variation. Its value is that another publisher can repeat the exact request, preserve a new response, and compare source presence without pretending the two runs are identical users.
| Field | Recorded value |
|---|---|
| Observed at | 12 August 2026, 20:01:06 UTC |
| Query | what is answer engine optimization |
| Surface | OpenAI Chat Completions with gpt-5-search-api |
| Returned model snapshot | gpt-5-search-api-2025-10-14 |
| Location | Approximate London, United Kingdom; Europe/London |
| Search context | medium |
| Citation annotations | 22 |
| Unique cited URLs and domains | 8 URLs across 7 domains |
| Target-domain result | Robot Visible was not mentioned or cited |
| Response ID | chatcmpl-0f9761f8-eeca-4afb-9c1b-9d17e988845d |
How to reproduce and extend the observation
The request below follows OpenAI's documented Chat Completions search pattern and fixes the variables the API exposes for this test. Save the complete response securely, then extract the answer, model, response ID, and URL-citation annotations. Do not publish an API key, raw private prompt context, or user data with the evidence.2
Run it again only when you have a reason: a scheduled baseline, a meaningful page release, a crawl-policy change that has had time to propagate, or a material source update. Preserve failed or source-free runs as provider errors or no-citation observations rather than silently discarding them. If you also test chatgpt.com, record that separately as a consumer surface with its own signed-in state, plan, model, location, and conversation context.
import OpenAI from "openai";
const client = new OpenAI();
const completion = await client.chat.completions.create({
model: "gpt-5-search-api",
web_search_options: {
search_context_size: "medium",
user_location: {
type: "approximate",
approximate: {
country: "GB",
city: "London",
region: "London",
timezone: "Europe/London",
},
},
},
messages: [
{ role: "user", content: "what is answer engine optimization" },
],
});
console.log(JSON.stringify({
observedAt: new Date().toISOString(),
responseId: completion.id,
model: completion.model,
answer: completion.choices[0]?.message.content,
annotations: completion.choices[0]?.message.annotations,
}, null, 2));Requires an OpenAI API key and creates a billable search request. OpenAI now directs new integrations to the Responses API `web_search` tool and documents `gpt-5-search-api` as the path for keeping an existing Chat Completions integration, so this request still runs as written — but a Responses `web_search` run is a different surface and belongs in its own record rather than in a comparison with the run above. A later result is a new observation, not a failed attempt to reproduce the old wording. Store it beside the earlier record with its own timestamp and response ID.
The practical ChatGPT search workflow
- Choose whether to allow OAI-SearchBot and GPTBot independently; document the policy owner and reason rather than copying a generic robots file.
- Deploy the rule, allow roughly 24 hours for OpenAI's robots systems to adjust, then test the exact production URLs through the CDN, firewall, and origin.
- Verify claimed OAI-SearchBot and ChatGPT-User traffic with OpenAI's published IP ranges; retain path, time, status, and edge action.
- Confirm important facts are present in accessible text and agree with canonicals, metadata, structured data, product pages, and credible external profiles.
- Build a small representative question set and preserve negative, source-free, and provider-error results rather than measuring only successful examples.
- Capture consumer ChatGPT sessions and OpenAI API runs as different surfaces. Never relabel an API result as what every ChatGPT user sees.
- Count citation annotations, unique cited URLs, unique domains, mentions, referrals, and conversions separately, with each metric's denominator stated.
- After a release, wait for verified recrawl evidence and compare several like-for-like runs before attributing movement to the change.
Sources and further reading
- Overview of OpenAI Crawlers — OpenAI. Documents the independent OAI-SearchBot, GPTBot, and ChatGPT-User roles; search and training controls; published IP ranges; navigational-link exception; and approximate robots-policy propagation time.
- Web search — OpenAI. Documents gpt-5-search-api as direct access to the models and tool used by Search in ChatGPT and as the path for an existing Chat Completions integration, the Responses API web search tool it now directs new integrations to, Chat Completions location controls, URL-citation annotations, source lists, and the limits of search context size.
- Answer engine optimization (AEO) — Rank.ai. One of the unique source URLs attributed in the dated Robot Visible OpenAI search observation.
- What is Answer Engine Optimization (AEO) and how is it different from SEO? — The Pedowitz Group. One of the unique source URLs attributed in the dated Robot Visible OpenAI search observation.
- AEO vs SEO 2026: Key Differences Explained — Optimus Consulting. One of the unique source URLs attributed in the dated Robot Visible OpenAI search observation.
- SEO vs AEO vs GEO: What's the Difference? — SearchPod. One of the unique source URLs attributed in the dated Robot Visible OpenAI search observation.
- AEO vs SEO: What's the difference and do you need both? — TechRadar. One of two TechRadar URLs attributed in the dated Robot Visible OpenAI search observation.
- What is Answer Engine Optimization (AEO)? — Yext. One of the unique source URLs attributed in the dated Robot Visible OpenAI search observation.
- AEO vs GEO vs SEO: The Difference, Explained — AEO Labs. One of the unique source URLs attributed in the dated Robot Visible OpenAI search observation.
- How to use an AEO tool for your small business — TechRadar. The second TechRadar URL attributed in the dated Robot Visible OpenAI search observation.
Continue learning
See where your website stands
Run a free scan and get your AI readiness score across all six categories, with the gaps to fix first.