GPTBot, ClaudeBot, PerplexityBot, Google-Extended, Bytespider: each AI crawler does a different job. A robots.txt + Cloudflare allowlist that keeps citations.
Contents7 sections
Letting an AI crawler in is a trade, and it is worth stating in the terms an owner would use. You give away a copy of content you already publish for free. You get back the chance to be the source an assistant names when your customer asks it what to buy.
Whether that trade is good depends on the crawler, because they do four different jobs and only some of them pay you back. Below: what each bot actually does, a working robots.txt, the Cloudflare rules that enforce it, and how to check it holds.
The four jobs a crawler does
Before you allow or block, understand which job the bot is doing. One vendor often runs several crawlers, each for a different purpose: OpenAI documents four (OpenAI) and Anthropic three (Anthropic).
| Job | What it does | Block means |
|---|---|---|
| Training | Fetches pages to train future models | No future LLM "knows" your domain |
| Search index | Builds a search index the LLM queries at inference | Not cited in answers, period |
| In-session browse | Fetches a URL the user (via the LLM) just asked about | The model can't summarize your live page |
| Embed / RAG | Pulls into a third-party embedding store | Less control of how your content is repackaged |
The mistake most sites make: blocking all four to "protect content" — which deletes the search-index and in-session-browse jobs at the same time. Those two are the jobs that put your page into an answer.
The bot identity table (May 2026)
| User-agent | Vendor | Job | 2026 policy |
|---|---|---|---|
GPTBot | OpenAI | Training | Training-only (allow if you want to be in training) |
OAI-SearchBot | OpenAI | Search index | Allow |
ChatGPT-User | OpenAI | In-session browse | Allow (OpenAI says robots.txt may not apply to it) |
ClaudeBot | Anthropic | Training | Training-only |
Claude-SearchBot | Anthropic | Search index | Allow |
Claude-User | Anthropic | In-session browse | Allow |
anthropic-ai | Anthropic (legacy) | Training | Block (not in Anthropic's current list, still seen) |
Google-Extended | Gemini training and grounding | Training-only (no effect on Google Search) | |
Googlebot | Google Search | Allow (the OG) | |
PerplexityBot | Perplexity | Search index + cite | Allow (citation backbone) |
Perplexity-User | Perplexity | In-session browse | Allow |
Applebot-Extended | Apple | Apple Intelligence training | Training-only |
Bingbot | Microsoft | Search + Copilot index | Allow |
CCBot | Common Crawl | Open web archive, widely used for training | Training-only |
Bytespider | ByteDance | Training | Block (no citation upside, heavy load) |
Meta-ExternalAgent | Meta | Training | Block |
FacebookBot | Meta | Embed for AI | Block |
Amazonbot | Amazon | Alexa AI training | Block |
cohere-ai | Cohere | Training | Block (no consumer surface) |
Diffbot | Diffbot | Commercial scraping | Block unless paying |
Omgilibot | Webz.io | Commercial scraping | Block |
MistralAI-User | Mistral | In-session browse | Allow |
Kagibot | Kagi | Premium search index | Allow (small but high-value) |
Webzio-Extended | Webz.io | Commercial scraping | Block |
YouBot | You.com | Search index | Allow |
A working robots.txt
For a B2B site that wants maximum citation eligibility and zero training contribution:
# Citation-grade — allow everything
User-agent: OAI-SearchBot
Allow: /
User-agent: ChatGPT-User
Allow: /
User-agent: Claude-SearchBot
Allow: /
User-agent: Claude-User
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: Perplexity-User
Allow: /
User-agent: MistralAI-User
Allow: /
User-agent: Kagibot
Allow: /
User-agent: YouBot
Allow: /
# Training-only — block
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: Applebot-Extended
Disallow: /
User-agent: CCBot
Disallow: /
# Hostile / no citation upside
User-agent: anthropic-ai
Disallow: /
User-agent: Bytespider
Disallow: /
User-agent: Meta-ExternalAgent
Disallow: /
User-agent: FacebookBot
Disallow: /
User-agent: Amazonbot
Disallow: /
User-agent: cohere-ai
Disallow: /
User-agent: Diffbot
Disallow: /
User-agent: Omgilibot
Disallow: /
User-agent: Webzio-Extended
Disallow: /
# Everyone else
User-agent: *
Allow: /
Sitemap: https://yourdomain.com/sitemap.xml
Flip the training lines (GPTBot, ClaudeBot, Google-Extended, Applebot-Extended, CCBot) to Allow if you want to be in next-generation model training (most B2B brands benefit from this — it teaches the model your terminology). Keep them Disallow if you've published proprietary research you don't want absorbed. Google-Extended is a robots.txt token rather than a separate crawler, and Google says it does not affect inclusion or ranking in Google Search (Google).
Cloudflare enforcement
robots.txt is honored by compliant bots. Bytespider, scrape-as-a-service vendors, and residential-proxy scrapers ignore it. The 2026 enforcement layer is Cloudflare's AI Bot management dashboard (Security → Bots → AI Bots); the one-click AI block has been available on every plan, Free included, since July 2024 (Cloudflare, 2024):
- Check what the blanket AI block covers. Cloudflare describes the original setting as blocking bots that crawl for AI training, and the newer presets split Search, Agent and Training (Cloudflare docs). Blocking all three takes the citing crawlers down with the scrapers.
- Enable per-bot rules with these settings:
- PerplexityBot, OAI-SearchBot, Claude-SearchBot: Allow
- GPTBot, ClaudeBot, Applebot-Extended: Allow or Managed Challenge depending on training policy (Google-Extended has no user-agent of its own, so it lives in robots.txt only)
- Bytespider, Amazonbot, Meta-ExternalAgent, FacebookBot: Block
- Add a WAF custom rule matching
(cf.client.bot eq false) and (http.user_agent contains "ai" or http.user_agent contains "bot")with action Managed Challenge to catch impersonators using user-agents that look AI-flavoured but aren't on the verified list. - Drop a honeytrap URL at
/disallow-honeypot/linked only fromllms.txt, set rate-limit-per-IP to 1, action Block 24h. Catches scrapers that ignore robots.txt — by design no legitimate AI crawler fetches that path.
Verification
After you ship the policy, verify weekly:
tail -f /var/log/nginx/access.log | grep -E "PerplexityBot|OAI-SearchBot|Claude-SearchBot"— confirm citation bots are still fetching.- Cloudflare Analytics → Security → Bot traffic — chart Allowed/Challenged/Blocked over time. The training scrapers you blocked should show up in the Blocked line, and the citation bots should stay in Allowed.
- Perplexity citation share (queries that should cite you) — should start to rise in the weeks after allowing PerplexityBot if you weren't already cited.
- Google Search Console → Performance — should not move, since Google-Extended has no effect on Google Search.
If PerplexityBot fetches stop after rollout, your Cloudflare rule order is wrong (a broader Block rule is matching first). Reorder so per-bot Allows come before Challenge/Block. The downstream metric to watch is covered in citation tracking AEO metrics - if your share-of-cite is climbing, the allowlist is working.
Why the default block is wrong
Three of the four jobs do something you want: index your content so it gets cited, browse your live page when a user asks, train future models to know your brand exists. Only one — pure scrapers like Bytespider — does nothing useful for you.
The 2026 default ("block all AI") was right in 2024 when there were no citation pathways and the crawlers were taking content with no return. In 2026 the pathways exist (PerplexityBot citations now drive measurable referral traffic; Google AI Overview cites with link attribution; ChatGPT-User pulls live data into answers) and the asymmetry has reversed: blocking is the expensive choice.
A short robots.txt and a handful of Cloudflare rules are the difference between being cited in the answers your customers ask AI tools and being invisible. The work is small; the lift compounds for years. Pair the allowlist with a proper llms.txt file and you have the full identity surface AI crawlers expect to find.
One caveat on the traffic this buys you. A growing share of what arrives after a crawler reads you is not a person clicking through but software acting on someone's behalf, which is a different visitor with different needs — see what a site owes an automated visitor. And the identity file the same crawlers look for is covered in the llms.txt update.
Sources
- Do sites that block GPTBot get cited less by ChatGPT? — 1,058 domains, July 2026. The engine-specific citation figures and block rates above.
- Cloudflare press release, 1 July 2025 — AI crawlers blocked by default for new domains.
- Cloudflare — block AI bots — the Search, Agent and Training presets.
- OpenAI — crawlers and Anthropic — crawlers — what each bot does.
- Google — common crawlers — Google-Extended and Google Search.
- Common Crawl — CCBot — who operates it and what it does.
Frequently Asked Questions
Does blocking GPTBot stop ChatGPT from citing my site?
Not by itself. GPTBot is OpenAI's training crawler: disallowing it tells OpenAI not to use your content to train its foundation models. ChatGPT search is fed by OAI-SearchBot, and pages a user asks about are fetched by ChatGPT-User, and OpenAI says each setting is independent of the others. Block GPTBot if you want to opt out of training; leave OAI-SearchBot and ChatGPT-User allowed to stay eligible for citations.
Should I block Cloudflare's AI bots category by default?
Not as a blanket rule. Cloudflare's original one-click setting targets crawlers that fetch for AI training, and its current presets treat Search, Agent and Training separately. Block Training if you object to it, and keep Search and Agent open if you want to be cited, because the effect is engine-specific and measured: in a 1,058-domain sample, domains blocking PerplexityBot had a median Perplexity citation propensity of 0, against 1.167 for domains allowing it (cloro.dev, July 2026).
What's the difference between Google-Extended and Googlebot?
Googlebot crawls for Google Search. Google-Extended is not a separate crawler but a robots.txt token: it controls whether content Google crawls may be used to train future Gemini models and for grounding in Gemini Apps and Vertex AI. Google states that Google-Extended does not affect a site's inclusion in Google Search and is not a ranking signal, so disallowing it is a training decision, not a search one.
How do I block bots that ignore robots.txt?
Three layers: (1) Cloudflare WAF / Bot Fight Mode rules matched on user-agent regex, (2) reverse-proxy (nginx, Caddy) rules at the edge, (3) honeytrap URLs in your llms.txt that no legitimate bot will fetch — any IP that hits them gets a 24h block. Bytespider and unidentified residential-proxy scrapers need all three layers; user-agent alone won't catch them.
Do I need separate rules for ClaudeBot vs Claude-SearchBot?
Yes. Anthropic documents three bots. ClaudeBot collects content that could contribute to training. Claude-User fetches pages when a person asks Claude a question. Claude-SearchBot crawls to improve the quality of search results. Allow Claude-SearchBot and Claude-User if you want Claude to find and cite you; ClaudeBot is your training decision. The older anthropic-ai token is not in Anthropic's current list, and a Disallow on it costs nothing.



