CrawlLedger
OpenAI · User-requested fetch

AI crawler directory / ChatGPT-User

ChatGPT-User robots.txt reference.

OpenAI's user-initiated fetcher for certain ChatGPT, Custom GPT, and GPT Action requests.

20observed domains
4disallowed
11partial policies
4allowed by matched rules

What ChatGPT-User is documented to do

This summary is tied to a first-party operator page reviewed on Sep 20, 2026. It should be rechecked when the registry version changes.

Operator
OpenAI
Documented purpose
User-requested fetch
Separate HTTP fetcher
Documented as a fetcher or crawler
Official documentation
https://developers.openai.com/api/docs/bots
Important operator note
OpenAI says this is not an automatic web crawler, robots.txt rules may not apply, and it does not control ChatGPT Search inclusion.

GPTBot vs OAI-SearchBot vs OAI-AdsBot vs ChatGPT-User

OpenAI documents these tokens for different purposes. A rule for one does not automatically control the others.

ChatGPT-User

User-requested fetch. OpenAI's user-initiated fetcher for certain ChatGPT, Custom GPT, and GPT Action requests.

GPTBot

Model training. OpenAI's automatic crawler for content that may be used to improve and train generative AI foundation models.

OAI-SearchBot

AI search. OpenAI's automatic search crawler, used to surface and link websites in ChatGPT search results.

OAI-AdsBot

Ad landing-page validation. OpenAI's fetcher for validating the safety and relevance of landing pages that advertisers submit for ChatGPT ads.

Common full-site robots.txt block pattern

This example states a crawl preference for the named token. It does not authenticate requests, enforce blocking, or automatically control another token from the same operator.

User-agent: ChatGPT-User
Disallow: /

Check the official operator source before publishing a policy. User-requested fetchers and non-fetcher control tokens can have different behavior from automatic crawlers.

Latest observed pilot policies

These states are calculated from each domain's latest available robots.txt record using the versioned CrawlLedger parser. They are observations of published text, not proof of crawler behavior.

DomainParsed stateMatched groupLast observed
anthropic.comallowed*
apnews.compartial*
apple.compartial*
cloudflare.comallowedChatGPT-User
commoncrawl.orgpartial*
google.compartial*, Yandex
medium.compartial*
openai.compartial*
oreilly.compartialChatGPT-User, ChatGPT-User/2.0, PerplexityBot, Perplexity-User, DuckAssistBot, Applebot, bingbot, Googlebot
perplexity.aipartial*
quora.comdisallowedChatGPT-User
reddit.comdisallowed*
rslcollective.orgallowed*
rslstandard.orgallowed*
stackoverflow.comunverifiedNo matching group observed
theguardian.compartial*
usatoday.comdisallowedChatGPT-User
voxmedia.compartial*
yahoo.comdisallowedADmantX, AlphaBot, anthropic-ai, AwarioRssBot, AwarioSmartBot, BLEXBot, Buzzbot, Bytespider, CCBot, ChatGPT-User, claritybot, Claude-Web, ClaudeBot, cohere-ai, Diffbot, FacebookBot, FriendlyCrawler, Google-Extended, GPTBot, huggingface, ImagesiftBot, img2dataset, magpie-crawler, Meltwater, Neevabot, news-please, NewsNow, Nutch, omgili, omgilibot, panscient.com, Perplexity-ai, PerplexityBot, PetalBot, PiplBot, scoop.it, Scrapy, Seekr, SentiBot, SeznamBot, TurnitinBot, YouBot, ZumBot
ziffdavis.compartial*

Interpret the state carefully

“Allowed” means a selected group was observed without a blocking rule for the tested policy shape. “Partial” means at least one non-empty disallow path was observed. “No matching group” is silence, not an affirmative grant. None of these states authenticate the requester or establish legal permission.