Guide · 9 min read · Updated September 2026
AI bot allowlist — robots.txt + Cloudflare configuration.
An AI bot allowlist is the robots.txt block plus the two Cloudflare dashboard settings that together decide whether GPTBot, ClaudeBot, and PerplexityBot can read your site at all. Three minutes of work — and the most common reason small reference sites never get cited is getting one of the three wrong without ever seeing an error.
Why explicit allowlist (vs implicit)
robots.txt defaults to "allow all" if you don't mention a User-Agent. So technically, an emptyrobots.txt would allow GPTBot, ClaudeBot, PerplexityBot, etc.
In practice we recommend an explicit allowlist for two reasons:
- Signal intent. An explicit
Allow: /per crawler makes your decision readable to anyone auditing the file, including you six months from now. It also documents which bots you considered. - Defensibility against accidental blocks. If you add a global
User-agent: *rule later (for example to block scraping bots), an explicit AI-bot allowlist above it survives the change.
Retrieval bots vs training bots
AI companies now run separate crawlers for separate jobs, and each one reads its own User-agent group in your robots.txt. That lets you make two different decisions:
- Retrieval (search and user) bots fetch pages to answer a question and link to the source. These are the ones that produce citations. Blocking them removes you from AI answers.
- Training bots collect content that may be used to train future models. Blocking them does not remove you from AI search answers.
The tokens below come from each vendor's own crawler documentation (checked September 2026):
- OpenAI.
OAI-SearchBotsurfaces websites in ChatGPT search.ChatGPT-Userfetches pages for user actions in ChatGPT and Custom GPTs.GPTBotcrawls content that may be used for training. OpenAI notes that sites opted out of OAI-SearchBot will not be shown in ChatGPT search answers. - Anthropic.
Claude-SearchBotimproves search result quality.Claude-Uservisits pages when people ask Claude questions.ClaudeBotcollects content that could contribute to training. - Perplexity.
PerplexityBotsurfaces and links websites in Perplexity search results and, per Perplexity, is not used to crawl content for AI foundation models.Perplexity-Uservisits pages for user questions. - Google.
Google-Extendedis a control token, not a separate crawler. It decides whether content Googlebot crawls may be used for Gemini training and grounding. It does not affect Google Search. - Apple.
Applebot-Extendedopts content out of training Apple's foundation models. Apple states it does not crawl webpages itself; the regularApplebotdoes the crawling. - Common Crawl.
CCBotcollects the open Common Crawl web archive. - Meta.
meta-webindexerimproves Meta AI search results.meta-externalagentindexes content for purposes such as training AI models. - Amazon.
Amzn-SearchBotandAmzn-Usersupport search and Alexa answers and are not used for generative AI training, per Amazon.Amazonbotmay be used to train Amazon AI models.
The canonical robots.txt block
Here's the allow-everything block for a reference site that wants maximum AI visibility. Paste it at the top of your robots.txt, before any other User-agent rules:
# AI search + user-action bots (these produce citations) User-agent: OAI-SearchBot User-agent: ChatGPT-User User-agent: Claude-SearchBot User-agent: Claude-User User-agent: PerplexityBot User-agent: Perplexity-User User-agent: meta-webindexer User-agent: Amzn-SearchBot Allow: / # AI training bots User-agent: GPTBot User-agent: ClaudeBot User-agent: Google-Extended User-agent: Applebot-Extended User-agent: CCBot User-agent: Amazonbot User-agent: Bytespider User-agent: Meta-ExternalAgent Allow: / # Standard search User-agent: * Allow: / Sitemap: https://yoursite.com/sitemap.xmlSeveral User-agent lines above one rule form a single group, which the robots.txt standard (RFC 9309) allows. The standard wildcard block lets all other crawlers (Bing, DuckDuckGo, etc.) in. Put your real sitemap URL on the last line.
Allow AI search, block AI training
If you want to be cited in AI answers but don't want your content used to train models, allow the retrieval bots and disallow the training bots. This is a common choice for publishers:
# Allow: AI search + user-action bots User-agent: OAI-SearchBot User-agent: ChatGPT-User User-agent: Claude-SearchBot User-agent: Claude-User User-agent: PerplexityBot User-agent: Perplexity-User Allow: / # Block: training-only bots (optional) User-agent: GPTBot User-agent: ClaudeBot User-agent: Google-Extended User-agent: CCBot Disallow: / # Everyone else, including Googlebot and Bingbot User-agent: * Allow: / Sitemap: https://yoursite.com/sitemap.xmlTwo things to know. Blocking Google-Extended leaves Google Search untouched, because Googlebot follows its own group. And bots acting for a user may not follow these rules at all: OpenAI says robots.txt rules may not apply to ChatGPT-User, and Meta says the same of its user-triggered fetcher. So a Disallow is a request to well-behaved crawlers, not access control.
The two Cloudflare settings that silently override
If your site is behind Cloudflare (and most are), there are two dashboard settings that can silently block AI crawlers even with the perfect robots.txt above. They live at Overview → AI crawlers in the CF dashboard:
- Block AI training bots — has three modes:
Block on all pages(the default for new zones as of 2025) — HTTP 403 to GPTBot/ClaudeBot/etc. at the edge before your robots.txt is even consultedBlock only on hostnames with ads— conditional blockDo not block (allow crawlers)— this is what you want
- Manage your robots.txt — has three modes:
Content Signals Policy(default) — Cloudflare INJECTS a# BEGIN Cloudflare Managed contentblock at the top of your served robots.txt withDisallow: /for all major AI crawlersInstruct AI bot traffic with robots.txt— same injection patternDisable robots.txt configuration— this is what you want
Both settings must be at the "allow crawlers" / "disable configuration" values for your applicationrobots.txt to actually serve. If either is set to a blocking mode, your robots.txt is overridden at the edge and citation becomes structurally impossible regardless of how well-optimized your content is.
The same applies outside Cloudflare. A WAF rule, a bot-management product, or a hosting plan's "block bad bots" toggle can return 403 to these user agents. Check every layer that sits in front of your site.
How do you verify it's working?
Four terminal commands:
# 1. Read the robots.txt that is actually served; look for a "Cloudflare Managed" block at the top curl -sL https://yoursite.com/robots.txt | head -20 # 2. ChatGPT search bot should get 200, not 403 curl -sI -A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; OAI-SearchBot/1.4; +https://openai.com/searchbot)" https://yoursite.com/ | head -1 # 3. Perplexity search bot curl -sI -A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)" https://yoursite.com/ | head -1 # 4. A training bot, to confirm your block or allow decision took effect curl -sI -A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot" https://yoursite.com/ | head -1Expected results:
- Step 1: your
robots.txtstarts with your User-Agent blocks (not the Cloudflare-managed wrapper) - Steps 2–4:
HTTP/2 200(a 301/302 redirect is fine — what you don't want is 403)
A curl with a bot user agent only tests rules that match on the user-agent string. Rules that verify a bot by its IP address can treat your test differently from the real crawler. So also open your CDN or WAF dashboard and confirm no "block AI bots" setting or custom rule is on, and check your server logs for real hits from these user agents.
The Citation Readiness Score runs an automated version of this check as part of the Bot-Crawl Health dimension.
When (rarely) you should block a specific bot
For most reference + comparison + calculator sites, we recommend allowing the AI crawlers above. Niche exceptions:
- Sensitive content / private data. If your site exposes content that must not appear in LLM training (e.g. user-uploaded PII, paid-only content cached publicly), block specific crawlers — but better, gate the content behind auth.
- Bandwidth-cost concerns. Some crawlers (Bytespider has been historically aggressive) can hammer your server with hundreds of thousands of requests. If you observe rate-related cost pressure, throttle via CF or block. But that's a bandwidth-mitigation decision, not a citation decision.
- Legal / licensing concerns. If your jurisdiction requires opt-out from AI training (some European publisher regulations), block the relevant training crawlers explicitly and document the legal rationale. The search-only block above does exactly that while keeping you citable.
For everything else: allow them. Treat AI crawler inventory as a marketing channel, not a cost.
Questions people ask
Which user agent does ChatGPT use to find pages for its answers?
OpenAI lists three. OAI-SearchBot surfaces websites in ChatGPT search results, ChatGPT-User fetches a page when a user action in ChatGPT needs it, and GPTBot collects content that may be used to train OpenAI models. OpenAI states that sites opted out of OAI-SearchBot will not be shown in ChatGPT search answers, so OAI-SearchBot is the one to allow if you want citations.
If I block GPTBot, will my site still show up in ChatGPT?
Blocking GPTBot opts you out of training, not search. OpenAI treats GPTBot and OAI-SearchBot as separate controls. Keep OAI-SearchBot allowed and ChatGPT search can still show and link your pages.
Does blocking Google-Extended remove my site from Google Search?
No. Google states that Google-Extended does not affect inclusion in Google Search and is not a ranking signal. It controls whether content Google crawls may be used for Gemini model training and grounding. Googlebot still crawls your site as normal.
My robots.txt allows every AI bot. Why do they still get blocked?
Usually a layer in front of your site answers first. A Cloudflare "block AI bots" setting or a WAF rule returns a 403 at the edge, and a managed robots.txt setting can inject Disallow lines above your own rules. Check the served robots.txt and test with curl as shown in the verify section.
See how real sites scored on Bot-Crawl Health
Score your own site against this guide.
The free Citation Readiness Score runs every signal from this guide against any URL. ~90 seconds, no signup.
Or skip pasting a URL — email me a free sample AI-visibility report instead.