How ChatGPT Search Picks the Sources It Cites

· 5 min read · PromptRanking team

ChatGPT search answers cite sources, but OpenAI does not publish the ranking logic behind those citations. What we have is a set of documented mechanics: a web search tool, a crawler named OAI-SearchBot, and a small number of publisher controls. Everything else is inference. This piece separates the two, then covers what you can actually do about it.

What OpenAI documents

OpenAI's bot documentation describes four user agents with different jobs. The distinction matters more than most people assume, because blocking the wrong one can remove you from answers without doing anything to protect your training data.

User agentWhat it doesEffect of blocking
OAI-SearchBotSurfaces websites in ChatGPT searchSites opted out are not shown in ChatGPT search answers
GPTBotCollects content to improve foundation modelsDoes not affect ChatGPT search
ChatGPT-UserUser-initiated actions in ChatGPT and custom GPTsRobots.txt may not apply, since the user requested it; not used to decide search inclusion
OAI-SearchBot (again, worth repeating)The only one tied to search visibilitySee above

Two operational details are documented and easy to miss. Robots.txt changes can take about 24 hours to take effect. And ChatGPT-User is not the agent that decides whether your content appears in search results, so blocking it does not remove you from answers — it just stops the fetches a user asked for.

That is the full extent of what OpenAI states publicly. There is no published ranking formula, no list of ranking signals, and no documentation of how citations are selected among competing pages.

What is speculation

Most of what circulates about ChatGPT sources falls into this category. Treat each of these as unverified:

  • That ChatGPT cites a fixed number of sources per answer. The number varies by query and has not been documented.
  • That there is a domain authority threshold. No such threshold is published. It is a reasonable guess borrowed from classic SEO, not a documented rule.
  • That structured data directly increases citation odds. Structured data helps machines parse a page. Whether OpenAI's search stack uses it as a ranking input is not stated.
  • That freshness is a weighting factor. Plausible, unconfirmed.
  • That ChatGPT prefers certain source types. Some answers lean on vendor docs, some on forums, some on news. No published policy explains the mix.

If someone presents any of these as fact, ask for the source. In most cases there isn't one.

The part that is mostly out of your hands

Even with perfect technical setup, you do not control whether ChatGPT cites you. Citation selection sits inside OpenAI's system. Your leverage is limited to three things: being crawlable by the right agent, having pages that answer the question clearly, and being present in the index at the moment a user asks.

The first is a configuration decision. The second is editorial work. The third is a function of the first two plus time.

What you can control

Check which bots you are blocking

Start with robots.txt. Because RFC 9309 says a crawler follows the most specific group that names it and ignores the * group in that case, a rule intended for one bot can silently apply to another. A common failure looks like this:

User-agent: GPTBot
Disallow: /

User-agent: *
Disallow: /private/

This blocks GPTBot from training crawls, which is a legitimate choice. It does not block OAI-SearchBot, because OAI-SearchBot is not named and therefore falls under *. If you actually want out of ChatGPT search, you have to name OAI-SearchBot explicitly.

The reverse mistake is more common on content sites: a broad Disallow under * that was meant to keep scrapers out, which also removes the site from search-driven answers. Check whether OAI-SearchBot is named anywhere, and check what the * group does to it.

Remember the roughly 24-hour propagation window before concluding a change worked.

Make pages that are easy to quote

Since the selection logic is undocumented, the practical approach is to remove reasons a system might skip your page. That means:

  • One clear question per page, answered in the first two paragraphs.
  • Specific claims with specifics attached — numbers, versions, dates, limits — rather than adjectives.
  • Definitions stated plainly, in the form someone would repeat them.
  • Headings that match how people phrase the question.
  • No critical information locked inside images, tabs, or interactive widgets.

This is not a trick. It is the same writing that makes a page useful to a human who arrived from a search result and wants to leave in thirty seconds.

Keep the crawlable version complete

If your site renders content client-side, verify that the HTML a crawler receives contains the substance of the page. A page that looks complete in a browser but ships an empty shell to crawlers is invisible regardless of which bot is allowed in.

Do not over-rotate on one assistant

ChatGPT is one surface. Anthropic and Perplexity document their own crawlers with their own rules, and Google's AI Overviews sit inside normal Search, governed by Googlebot. A site that is citable in one system is not automatically citable in another, and the controls differ. If AI visibility matters to you, treat it as a multi-surface problem from the start.

Checking whether any of this is working

There is no dashboard that shows which ChatGPT answers cite you. You can spot-check by asking ChatGPT questions your buyers would ask and reading the cited links, but that is manual, inconsistent, and shaped by your own account history.

For a faster read on whether a brand is being named at all, our free AI visibility check generates three buyer questions for a brand and category, asks Perplexity with web search, and shows whether the brand is named, which competitors are named, and which sources are cited. It allows three free checks per day and does not track over time, so it is a snapshot rather than a trend line. It is a reasonable way to see whether the source mix for your category skews toward pages you can realistically compete with.

A note on intent versus enforcement

Robots.txt expresses intent. It is not access control, and it does not stop a determined scraper. What it does reliably is tell compliant crawlers — including the ones documented above — whether they are welcome. For ChatGPT search specifically, that is the lever that exists: OAI-SearchBot either has permission or it does not, and the answer to that question is the difference between being eligible for a citation and being absent from the pool.

Everything past that point is editorial quality and time.

Next step

Open your robots.txt file and search for OAI-SearchBot. If it is not named, check what your * group does to it. If the * group disallows the paths you want cited, either narrow that rule or add an explicit Allow group for OAI-SearchBot. Then wait a day before testing, and re-check a page you care about by asking ChatGPT the question that page is written to answer.

Related reading