AI Crawlers Explained: Search, Training and User-Triggered Bots
Not every AI bot does the same job. Here are the documented categories, the agents each company publishes, and what blocking one actually costs you.
"Block AI bots" is one instruction, but there is no single AI bot to block. Every major provider now runs several agents with different jobs, publishes them separately, and states different consequences for disallowing each one. A site that adds a blanket rule usually blocks the agent that would have cited it and leaves the one collecting training data untouched, or the other way round. This article sets out the categories the providers themselves document, lists the agents each company currently publishes, and explains what each disallow decision does and does not affect.
Three jobs, not one
The useful distinction is not "AI versus search". It is what the fetch is for, because that is the axis every provider's documentation is organised on.
Search and retrieval crawlers build an index that the provider's answer product queries at question time. They behave like a conventional search crawler: scheduled, breadth-first, robots.txt-respecting. OpenAI's OAI-SearchBot, Anthropic's Claude-SearchBot and Perplexity's PerplexityBot are all in this group. Disallowing one removes you from that provider's answers, which is the same trade you make when you disallow Googlebot.
Training crawlers collect content that may become part of a model's training corpus. They are not connected to whether you appear in that provider's answer product today. OpenAI's GPTBot, Anthropic's ClaudeBot, Google's Google-Extended and Apple's Applebot-Extended are the documented examples. Disallowing one is a licensing decision about future models, not a visibility decision.
User-triggered fetchers retrieve a specific URL because a person asked for it in the product — pasted a link, asked a question that needs a page, added a source to a notebook. ChatGPT-User, Claude-User, Perplexity-User and Google's family of fetchers are in this group. This is the category where the rules change: because a human initiated the request, several providers state their fetcher generally ignores robots.txt.
There is a fourth, narrower group worth knowing about: product and safety validators such as OpenAI's OAI-AdsBot, which only visits pages submitted as ads and whose data OpenAI states is not used to train foundation models.
Why the categories are load-bearing
Every provider that documents multiple agents also documents that the settings are independent. OpenAI states each setting is independent of the others and gives the worked case explicitly: allow OAI-SearchBot to appear in search results while disallowing GPTBot to signal that content should not be used for training. Anthropic documents three bots precisely to "enable website owner transparency and choice". Perplexity says each setting works independently.
So the mental model of a single AI on/off switch is wrong in a way that costs money. Disallow: / under GPTBot says nothing at all about whether ChatGPT's search feature can surface your pages, and Disallow: / under OAI-SearchBot removes you from those answers while leaving training crawls governed by a separate rule.
One more asymmetry: OpenAI notes that if a site allows both OAI-SearchBot and GPTBot, it may use the results of a single crawl for both purposes rather than crawling twice. Allowing both is not two crawl budgets.
The agents, by company
Verified against each company's own documentation on 9 September 2026. Bot rosters change; re-check the linked page before writing a rule. Evidence tier for every row in this table: OFFICIAL PROVIDER GUIDANCE.
| Token | Company | Job | Documented robots.txt behaviour | Source |
|---|---|---|---|---|
OAI-SearchBot |
OpenAI | Surfaces sites in ChatGPT's search features | Respects it; opted-out sites are not shown in ChatGPT search answers | OpenAI crawlers |
GPTBot |
OpenAI | Crawls content that may be used in training foundation models | Respects it; disallow signals no training use | OpenAI crawlers |
OAI-AdsBot |
OpenAI | Validates the safety of pages submitted as ChatGPT ads | Visits submitted ad pages only; not used for training | OpenAI crawlers |
ChatGPT-User |
OpenAI | Fetches pages for user actions in ChatGPT and Custom GPTs | User-initiated, so "robots.txt rules may not apply" | OpenAI crawlers |
Claude-SearchBot |
Anthropic | Improves search result quality inside Claude | Respects it; disallow prevents indexing for search | Anthropic crawlers |
ClaudeBot |
Anthropic | Collects web content that may contribute to model training | Respects it; disallow excludes future material from training sets | Anthropic crawlers |
Claude-User |
Anthropic | Accesses sites when a Claude user's question needs them | Documented as controllable via robots.txt | Anthropic crawlers |
PerplexityBot |
Perplexity | Surfaces and links sites in Perplexity results; not used for foundation model training | Respects it; allow it to appear in results | Perplexity crawlers |
Perplexity-User |
Perplexity | Visits a page when a user's question needs it | "Since a user requested the fetch, this fetcher generally ignores robots.txt rules" | Perplexity crawlers |
Googlebot |
Search crawling and indexing | Respects it; blocking removes you from Google Search | Google's common crawlers | |
Google-Extended |
Controls use of content for training and grounding Gemini models in Gemini Apps and the Vertex AI API | Respects it; does not affect Google Search inclusion and is not a ranking signal | Google's common crawlers | |
GoogleOther |
Generic crawler used by various Google product teams | Respects it | Google's common crawlers | |
Google-CloudVertexBot |
Crawls sites on a Vertex AI customer's instruction for agent building | Respects it | Google's common crawlers | |
Google-GeminiNotebook, Google-Agent, Google-Read-Aloud, Google-Pinpoint, Google-CWS, GoogleMessages, GoogleProducer, FeedFetcher-Google, Google-Site-Verification |
User-triggered fetches inside specific products | Google states that because the fetch was requested by a user, these fetchers generally ignore robots.txt | Google user-triggered fetchers | |
Applebot |
Apple | Powers Spotlight, Siri and Safari search; crawled data may also help train Apple foundation models | Respects it; falls back to Googlebot rules if no Applebot rules exist | About Applebot |
Applebot-Extended |
Apple | Opt-out for using Applebot-crawled data to train Apple's general-purpose foundation models | Respects it; pages that disallow it can still appear in Apple search results | About Applebot |
meta-externalagent |
Meta | Crawls for training foundation AI models and indexing content | Respects it | Meta web crawlers |
meta-webindexer |
Meta | Improves Meta AI search result quality | Respects it | Meta web crawlers |
meta-externalfetcher |
Meta | Fetches individual links at a user's request | "May bypass robots.txt rules" | Meta web crawlers |
meta-externalads |
Meta | Crawls for advertising and business products | Respects it | Meta web crawlers |
facebookexternalhit |
Meta | Fetches shared links for previews | May bypass robots.txt for security or integrity checks | Meta web crawlers |
Amazonbot |
Amazon | Improves Amazon products; may be used to train Amazon AI models | Respects robots.txt and honours noarchive, noindex and none meta tags; caches robots.txt for up to 30 days |
Amazonbot |
CCBot |
Common Crawl | Builds the open Common Crawl corpus, widely used as a training input by third parties | Respects it; documented disallow example given | CCBot |
Microsoft's bingbot belongs in any complete picture — it crawls for Bing and Bing results ground Copilot answers — but Bing's crawler help page would not render usable content when fetched on 9 September 2026, so nothing about Bing's current roster or its AI-specific meta directives is asserted here. Treat any second-hand claim about Bing's NOARCHIVE/NOCACHE behaviour as unverified until you have read the guidelines page yourself.
The user-triggered category deserves its own decision
This is where most site owners are surprised. Google, Perplexity and Meta all state in writing that user-triggered fetchers generally ignore robots.txt, and OpenAI says robots.txt rules "may not apply" to ChatGPT-User. The reasoning is consistent across providers: the request is a person acting on your public page, more like a browser than a crawler.
Two consequences follow.
First, a Disallow rule for these tokens is a request, not a control. Anthropic is the exception worth noting — it documents Claude-User as one of the three bots controllable through robots.txt, and states that disabling it prevents content being retrieved in response to a user query. That is a meaningfully different position from Perplexity's, and it is the kind of difference that dissolves if you write one blanket rule for "AI bots".
Second, if you genuinely need to stop user-triggered fetches, robots.txt is the wrong layer. Only authentication, a paywall, or an edge block enforces anything. Everything in robots.txt is voluntary compliance by the operator. That is not a criticism of the protocol — RFC 9309 describes an advisory mechanism and always has — but it is the difference between a policy and a control.
Writing rules that say what you mean
Group by intent, not by company. A policy that allows AI search products to cite you while declining training use looks like this:
# Allow AI search and answer products to find and cite the site
User-agent: OAI-SearchBot
Allow: /
User-agent: Claude-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /
# Decline use of content for foundation model training
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: Applebot-Extended
Disallow: /
User-agent: meta-externalagent
Disallow: /
User-agent: CCBot
Disallow: /
Sitemap: https://example.com/sitemap_index.xml
The inverse policy — allow training, decline search indexing — is legitimate and rarer; it is what a site that wants long-term presence in model weights but not in live answer products would write. There is no correct default here. Access is a licensing and bandwidth decision, not an optimisation, and no honest audit can score it.
Three mechanical points that catch people out:
- Rules are per host, including subdomains. Anthropic states this explicitly: apply the rule to every subdomain you want to opt out from.
example.com/robots.txtdoes not governdocs.example.com. - Changes are not instant. OpenAI and Amazon both document roughly a 24-hour lag before their systems reflect a robots.txt change. Amazon caches robots.txt for up to 30 days for some purposes.
- Never drop existing rules or
Sitemap:lines when you rewrite the file. This is the single most common way a robots.txt edit causes damage.
Anthropic also documents support for the non-standard Crawl-delay extension, which is not part of RFC 9309 and is not honoured by every operator:
User-agent: ClaudeBot
Crawl-delay: 1
Use it only where the operator documents support. Asserting a crawl-delay, wildcard or Allow behaviour that a specific operator has not documented is guesswork dressed as configuration.
Verifying that a bot is what it claims
A user-agent string is a header. Anyone can send it, and impersonation of AI crawlers is common enough that Common Crawl warns about it on its own documentation page. A hit in your logs is not evidence that a provider visited you.
Verification is by IP. OpenAI publishes a JSON file per agent (searchbot.json, gptbot.json, adsbot.json, chatgpt-user.json under openai.com), Anthropic publishes one combined list at claude.com/crawling/bots.json, and Perplexity publishes perplexitybot.json and perplexity-user.json under perplexity.com. Google and Bing support reverse DNS verification. Perplexity's own guidance for firewall rules is to combine user-agent matching with IP verification rather than trusting either alone.
Do not reach for IP blocking as an opt-out mechanism. Anthropic states directly that blocking its IP addresses may not work correctly or guarantee an opt-out, because it stops the crawler reading your robots.txt in the first place. Blocking the address you use to communicate your preferences is self-defeating.
What none of this buys you
Allowing every AI crawler does not produce citations. The chain is crawled → retrieved → cited → recommended, and each arrow is a separate, mostly undocumented step. Access is a precondition for the first arrow and nothing more. Google says it plainly for its own products: there are no additional requirements to appear in AI Overviews or AI Mode, and no special optimisations are necessary.
The corollary is that crawler policy is not an SEO score component and cannot be presented as one. SiteRank AI inspects your robots.txt against a registry of these agents, reports the effective rule for each operator with the documented consequence beside it, and proposes a policy as a diff you approve. It never pre-selects "allow all" or "block all", and it never reports a missing Allow as a defect. Blocking a training crawler is a defensible business choice; so is allowing one.
Evidence classification
| Claim or practice | Tier |
|---|---|
| Each operator's documented agents, purposes and stated consequences | OFFICIAL PROVIDER GUIDANCE |
| robots.txt syntax and precedence | ESTABLISHED STANDARD (RFC 9309) |
| User-agent strings are spoofable; verify by IP | ESTABLISHED STANDARD |
| Allowing a search crawler is a precondition for being cited by that product | OFFICIAL PROVIDER GUIDANCE |
| Allowing a search crawler produces citations | Not supported at any tier |
| Blocking training crawlers affects search or answer visibility | Contradicted by Google and Apple documentation |
Key takeaways
- AI crawlers do three documented jobs — search indexing, training collection, and user-triggered fetching — and every provider controls them independently.
- Blocking a training crawler is a licensing decision. Blocking a search crawler is a visibility decision. They are not interchangeable.
- User-triggered fetchers generally ignore robots.txt by documented policy at Google, Perplexity and Meta; Anthropic documents
Claude-Useras controllable. - Verify crawlers by published IP list, never by user-agent string.
- Re-read the provider pages before writing a rule. Rosters change, and asserting a token from memory is how invalid rules get shipped.
Official sources & further reading
- Overview of OpenAI crawlers — OpenAI
- Does Anthropic crawl data from the web, and how can site owners block the crawler? — Anthropic
- Perplexity crawlers — Perplexity
- Google's common crawlers — Google Search Central
- Google's user-triggered fetchers — Google Search Central
- AI features and your website — Google Search Central
- About Applebot — Apple
- Meta web crawlers — Meta
- Amazonbot — Amazon
- CCBot — Common Crawl
- RFC 9309: Robots Exclusion Protocol — IETF
- Microsoft's Bing crawler documentation at
bing.com/webmasters/help/which-crawlers-does-bing-use-8c184ec0requires JavaScript and returned no readable content when fetched on 9 September 2026; no claim about Bing's roster is made here on the basis of an unread page.
Related reading
Frequently asked questions
Does a Disallow rule actually stop a crawler fetching my pages?
Only if the operator chooses to honour it. The Robots Exclusion Protocol is advisory by design, so a rule is a stated preference that well-behaved operators follow and others ignore. Every consequence in the table above is one the provider has documented for its own agents; none of it is enforced by your server. If content genuinely must not be fetched, the control is authentication, a paywall or an edge block, and nothing less.
How do I check whether a request calling itself GPTBot is genuine?
Verify by IP address, never by the header. OpenAI, Anthropic and Perplexity each publish lists of the addresses their agents use, and Google and Bing support reverse DNS verification; the user-agent string on its own is a claim that anyone can send. Perplexity's own firewall guidance is to match the user agent and verify the address rather than trusting either alone. Until that check has been done, treat the agent name in your logs as untrusted input.
Will a CDN or WAF rule override what my robots.txt says?
Yes, and usually in the direction people do not expect. An edge rule blocks at the network layer regardless of robots.txt, so a site can publish Allow: / for a search agent and still refuse every one of its requests at the edge, with nothing in the robots.txt to explain the absence. Address blocking also carries the self-defeating property Anthropic states directly: a crawler that cannot reach your site cannot read your robots.txt, so it never sees the preferences you wrote. Where the edge and the file disagree, the edge wins.
Do these rules need repeating on every subdomain?
Yes. Rules are per host, so example.com/robots.txt says nothing about docs.example.com or shop.example.com — Anthropic makes the point explicitly for its own agents, and it follows from the protocol rather than from any one provider's policy. Sites commonly opt out on the marketing domain and leave a documentation or support subdomain wide open without noticing. List your hosts and check each one separately.
If I allow every AI crawler, will I get cited?
No, and no provider documents a mechanism by which access would produce a citation. Access is a precondition for the first step of crawled → retrieved → cited, and the later steps are decided by systems that are largely undescribed. Google states there are no additional requirements or special optimisations for appearing in its AI features beyond ordinary search practice. Allowing a crawler removes an obstacle; it does not create an outcome — see crawled is not cited.