AI crawlers: what each one is for, and how to block or allow it
49 robots.txt tokens from 19 operators, each checked against the operator's own documentation between 22 Sep 2026 and 9 Oct 2026. Open one for copyable robots.txt lines, or paste your robots.txt into the checker to see which of them it blocks and which line decides. To see which of them actually visited, and which visits were fakes, drop your access log into the log reader. To see what a crawler that runs no JavaScript can read on your page, paste its HTML into the no-JavaScript check. To check an llms.txt you already have against the llmstxt.org format, line by line, paste it into the llms.txt validator.
| robots.txt token | Operator | Purpose | Obeys robots.txt | Verify |
|---|---|---|---|---|
GPTBot |
OpenAI | Training | robots.txt Yes | Verify: IP list (18 ranges) |
OAI-SearchBot |
OpenAI | AI search | robots.txt Yes | Verify: IP list (39 ranges) |
ChatGPT-User |
OpenAI | User fetch | robots.txt Not always | Verify: IP list (229 ranges) |
ClaudeBot |
Anthropic | Training | robots.txt Yes | Verify: IP list (26 ranges) |
Claude-SearchBot |
Anthropic | AI search | robots.txt Yes | Verify: IP list (26 ranges) |
Claude-User |
Anthropic | User fetch | robots.txt Yes | Verify: IP list (26 ranges) |
anthropic-ai Not in Anthropic’s docs |
Unconfirmed | Unconfirmed | robots.txt Unconfirmed | Verify: Unconfirmed |
Claude-Web Not in Anthropic’s docs |
Unconfirmed | Unconfirmed | robots.txt Unconfirmed | Verify: Unconfirmed |
PerplexityBot |
Perplexity | AI search | robots.txt Yes | Verify: IP list (8 ranges) |
Perplexity-User |
Perplexity | User fetch | robots.txt Not always | Verify: IP list (4 ranges) |
Google-Extended |
Training AI search | robots.txt Yes | Verify: Via Google's common crawlers | |
Googlebot |
AI search | robots.txt Yes | Verify: IP list (317 ranges) | |
GoogleOther |
Unconfirmed | robots.txt Yes | Verify: IP list (317 ranges) | |
Google-CloudVertexBot |
Unconfirmed | robots.txt Yes | Verify: IP list (317 ranges) | |
Google-Agent |
User fetch | robots.txt No | Verify: IP list (20 ranges) | |
Google-GeminiNotebook |
User fetch | robots.txt No | Verify: Documented | |
Google-NotebookLM Retired |
Unconfirmed | robots.txt Unconfirmed | Verify: Unconfirmed | |
Applebot-Extended |
Apple | Training | robots.txt Yes | Verify: Via Applebot |
Applebot |
Apple | AI search Training | robots.txt Yes | Verify: IP list (24 ranges) |
CCBot |
Common Crawl | Unconfirmed | robots.txt Yes | Verify: IP list (5 ranges) |
Bytespider |
Unconfirmed | Unconfirmed | robots.txt Unconfirmed | Verify: Unconfirmed |
Meta-ExternalAgent |
Meta | Training | robots.txt Yes | Verify: Unconfirmed |
Meta-WebIndexer |
Meta | AI search | robots.txt Yes | Verify: Unconfirmed |
Meta-ExternalFetcher |
Meta | User fetch | robots.txt Not always | Verify: Unconfirmed |
FacebookBot Not in Meta’s docs |
Unconfirmed | Unconfirmed | robots.txt Unconfirmed | Verify: Unconfirmed |
Amazonbot |
Amazon | Training | robots.txt Yes | Verify: IP list (1292 ranges) |
Amzn-SearchBot |
Amazon | AI search | robots.txt Yes | Verify: IP list (816 ranges) |
Amzn-User |
Amazon | User fetch | robots.txt Not always | Verify: IP list (1023 ranges) |
Bingbot |
Microsoft | AI search | robots.txt Yes | Verify: IP list (28 ranges) |
DuckAssistBot |
DuckDuckGo | AI search | robots.txt Yes | Verify: IP list (486 ranges) |
MistralAI-Index |
Mistral AI | AI search | robots.txt Yes | Verify: IP list (2 ranges) |
MistralAI-User |
Mistral AI | User fetch | robots.txt Yes | Verify: IP list (4 ranges) |
MistralAI-Training |
Mistral AI | Training | robots.txt Yes | Verify: Unconfirmed |
PetalBot |
Huawei (Petal Search) | AI search | robots.txt Yes | Verify: Documented |
YandexAdditional |
Yandex | AI search | robots.txt Yes | Verify: Via Yandex's indexing robots |
Diffbot |
Diffbot | AI search | robots.txt Not always | Verify: Unconfirmed |
Diffbot-User |
Diffbot | User fetch | robots.txt Unconfirmed | Verify: Unconfirmed |
ImagesiftBot |
Hive (ImageSift) | Unconfirmed | robots.txt Yes | Verify: Unconfirmed |
cohere-ai Not in Cohere’s docs |
Unconfirmed | Unconfirmed | robots.txt Unconfirmed | Verify: Unconfirmed |
amazon-kendra |
Amazon | Unconfirmed | robots.txt Yes | Verify: Unconfirmed |
amazon-QBusiness |
Amazon | Unconfirmed | robots.txt Yes | Verify: Unconfirmed |
bedrockbot |
Amazon | Unconfirmed | robots.txt Yes | Verify: Unconfirmed |
GoogleOther-Image |
Unconfirmed | robots.txt Yes | Verify: IP list (317 ranges) | |
GoogleOther-Video |
Unconfirmed | robots.txt Yes | Verify: IP list (317 ranges) | |
OAI-AdsBot |
OpenAI | Unconfirmed | robots.txt Unconfirmed | Verify: IP list (2 ranges) |
AIWebIndex |
Lyrenth | AI search | robots.txt Yes | Verify: IP list (22 ranges) |
Brightbot |
Bright Data | Unconfirmed | robots.txt Unconfirmed | Verify: Documented |
CloudflareBrowserRenderingCrawler |
Cloudflare | Unconfirmed | robots.txt Yes | Verify: Documented |
Cotoyogi |
ROIS-DS | Unconfirmed | robots.txt Yes | Verify: Documented |
No crawler matches both filters.
Who blocks each agent, on the 1,000 most-visited sites
On 2026-10-09 we fetched /robots.txt from the first 1,000 domains of Tranco list PY35J (generated 2026-10-08) and read 508 files. Each one was decided for every agent below by the same RFC 9309 matcher the checker uses, for the path /. By name means a group naming the agent blocks the whole site; through * means the file names no group for it and its catch-all group blocks everything; partial means a group names it but leaves the home page open.
Share is of the 508 readable files. robots.txt is only what a site asks for. A site can also turn a crawler away at its firewall or CDN, or let an operator in under a licensing deal, and neither shows in its robots.txt. A block through * stops every crawler the file does not name, so it says nothing about this one in particular. The files we could not read are not counted: 222 of the 1,000 domains are infrastructure names with no website at the bare domain (CDN and DNS zones, for example), 59 answered our request with 401 or 403, 93 failed (timeout, TLS or server error), 59 have no robots.txt (404 and similar) and 59 answered with an HTML page instead of a robots.txt file.
Three purposes, and why they block differently
Training tokens (GPTBot, ClaudeBot, Applebot-Extended, Meta-ExternalAgent, Amazonbot and MistralAI-Training) decide whether your pages may be used to train future models. Blocking one is an opt-out from training, not from answers: OpenAI, Anthropic, Apple, Meta, Amazon and Mistral each document a separate search token, so you can refuse training and stay findable. Google-Extended is the one to read carefully — Google says it covers Gemini grounding as well as training, but not Google Search. AI search crawlers (OAI-SearchBot, Claude-SearchBot, PerplexityBot, Googlebot, Meta-WebIndexer, Amzn-SearchBot, Bingbot, DuckAssistBot, MistralAI-Index, PetalBot, YandexAdditional, Diffbot and AIWebIndex) build the index an assistant searches when it answers; blocking one is how you stop appearing in that assistant's cited results. User-requested fetches happen when a person asks an assistant to read a page. ChatGPT-User, Perplexity-User, Google-Agent, Google-GeminiNotebook, Meta-ExternalFetcher and Amzn-User may not follow robots.txt for these, by their operators' own account; the operators of Claude-User and MistralAI-User say they do, and for Diffbot-User the operator does not say. Where a fetcher may ignore robots.txt, the operator's published IP list, if it has one, is the documented way to recognise it; each crawler's page says whether one exists.
Search engines whose index also feeds AI answers
Googlebot, Bingbot and PetalBot are search-engine crawlers first, and each one's operator says the same crawl serves its AI answers. Google says AI is built into Search, so there is no separate robots.txt token for AI Overviews or AI Mode: a Disallow for Googlebot stops Google crawling those pages for Google Search itself, and Google-Extended does not affect Search. Microsoft says Bing search, Copilot and grounding results share one crawl and index, and points to NOINDEX, NOARCHIVE and NOCACHE page directives, not robots.txt, to limit what Copilot uses. To stay in these search engines but out of their AI answers, the controls are page-level, and each crawler's page quotes them. The generator never names these 3 tokens unless you choose them one by one.
Tokens that may do nothing
anthropic-ai, Claude-Web, Google-NotebookLM, FacebookBot and cohere-ai still turn up in robots.txt files, but the current crawler documentation of Anthropic, Google, Meta and Cohere does not list them as a current token, so a line naming one may do nothing. Each page says when we checked, quotes the operator where it calls a token former or replaced, and names the tokens that operator documents now. The checker badges any group in your file that names one.
How to read this directory
- Obeys robots.txt is what the operator says. "Not always" means the operator documents an exception, usually for fetches a user asked for.
- Verify: anyone can send a user-agent string. An operator's published IP list or reverse-DNS check is how you tell the real crawler from an impostor. Where an operator publishes neither, the entry says so.
- Unconfirmed by the operator means the operator's own documentation does not state the fact, or its page refused our fetch. We do not fill gaps from third-party lists.
- Tokens such as
Google-Extended,Applebot-ExtendedandYandexAdditionalnever visit your site; they are rules the operator reads to decide how its other crawlers' data may be used. - A Not in … docs badge marks a token the operator's current crawler documentation does not list, as of the date on its page. "Retired" is used only where the operator itself says so.
Use the data
The whole directory is one JSON file: resulthack.com/crawlers.json. Each record has the token, operator, purpose, what it does, robots.txt behaviour, verification method and IP list, block effect, the operator's sentences quoted word for word, and every source with the date we checked it.