Learn
AI crawler list 2026: robots.txt tokens, who runs each and where they publish IP ranges
The 2026 AI crawler list: 18 robots.txt tokens, who runs each and what it fetches. Whether each obeys robots.txt, and where operators publish IP ranges.
6 min read 1826 words
- robots.txt
- AI crawlers
- user agents
- IP ranges
- RFC 9309
An AI crawler token is the name a robots.txt group uses to address one crawler, such as GPTBot or ClaudeBot. The 18 tokens below do 3 different jobs: collecting training data, building a search index, and fetching a page when a person asks. Their operators also differ on robots.txt. Anthropic and Amazon say their crawlers honour it, and OpenAI and Perplexity say their user-initiated fetchers may not follow it.
The page also covers tokens outside the 18, such as Google-Agent, and where each operator publishes its IP ranges.
The 18 tokens and what each one does
This is the list the AI crawler policy check resolves. Each row comes from the operator's own page, read on 27 October 2026.
| Token | Operator | Fetches for | robots.txt, per the operator | Docs |
|---|---|---|---|---|
GPTBot |
OpenAI | Model training | Disallowing it opts out of training | OpenAI |
OAI-SearchBot |
OpenAI | ChatGPT search | Opted-out sites are not shown in ChatGPT search answers | OpenAI |
ChatGPT-User |
OpenAI | Actions a user starts | Rules “may not apply” | OpenAI |
ClaudeBot |
Anthropic | Model training | Honoured | Anthropic |
Claude-User |
Anthropic | Questions a user asks | Honoured | Anthropic |
Claude-SearchBot |
Anthropic | Search results | Honoured | Anthropic |
PerplexityBot |
Perplexity | Search results, not training | Use robots.txt to manage it | Perplexity |
Perplexity-User |
Perplexity | Questions a user asks | “Generally ignores” robots.txt | Perplexity |
Google-Extended |
Gemini training and grounding | A control token with no crawler of its own | ||
Applebot-Extended |
Apple | Training Apple's models | A control token: it “does not crawl webpages” | Apple |
CCBot |
Common Crawl | An open crawl archive | Checks robots.txt before it fetches | Common Crawl |
Bytespider |
ByteDance | Not documented by the operator | No operator page found | None found |
Amazonbot |
Amazon | Amazon products, and may train Amazon AI models | Respects the Robots Exclusion Protocol | Amazon |
anthropic-ai |
Anthropic | Not on Anthropic's current page | Not documented | None found |
cohere-ai |
Cohere | Cohere lists no crawler | Cohere requires crawlers to respect robots.txt | Cohere |
DuckAssistBot |
DuckDuckGo | AI-assisted answers, not training | A Disallow stops it | DuckDuckGo |
MistralAI-User |
Mistral AI | User actions in Vibe, not training | The token governs which sites it fetches | Mistral AI |
Meta-ExternalAgent |
Meta | Model training and product indexing | Add a Disallow to block it | Meta |
A token in this table is a request header the client writes. Anyone can send GPTBot, so a rule for it binds the honest operator and nobody else. Cloudflare reported in August 2025 that Perplexity used an undeclared browser user agent after its declared crawlers were blocked, and removed it from its verified list. The post carries no reply from Perplexity. Blocking AI crawlers without locking out agents covers what to do about the rest.
Training, search and user fetches are separate decisions
OpenAI's page says each of its settings is independent. A site can allow OAI-SearchBot to appear in search results, and disallow GPTBot to keep its content out of training. Anthropic splits the same way, with ClaudeBot, Claude-SearchBot and Claude-User. Perplexity says PerplexityBot is not used to crawl content for foundation models.
Two tokens are controls, not crawlers. Google says Google-Extended has no user agent string of its own: existing Google crawlers do the crawling. Disallowing it limits Gemini training and grounding, and it does not affect inclusion in Google Search. Apple says Applebot-Extended does not crawl: a Disallow for it limits how content Applebot already fetched is used to train Apple's models.
Amazonbot and Meta-ExternalAgent mix uses. Amazon says Amazonbot may be used to train Amazon AI models. Meta says Meta-ExternalAgent crawls for training foundation models or for indexing content to improve products.
What the user-initiated fetchers do with robots.txt
OpenAI and Perplexity treat a fetch that a person asked for differently from a crawl. OpenAI says of ChatGPT-User that, because a user starts these actions, robots.txt rules may not apply. Perplexity says Perplexity-User generally ignores robots.txt rules, for the same reason. Google says its user-triggered fetchers, a group that includes Google-Agent, generally ignore robots.txt rules too.
Anthropic differs from OpenAI and Perplexity here. Its page says Anthropic's crawlers honour robots.txt, and it lists Claude-User among them. Mistral AI says its MistralAI-User token governs which sites user requests can be made to.
So a Disallow for ChatGPT-User or Perplexity-User is a request. To refuse those fetches outright, enforce it at the edge, and accept that you also refuse the person who asked.
Tokens with no current documentation
Three of the 18 have no operator page that describes them today. A rule for one costs a few lines and may govern nothing.
anthropic-ai: Anthropic's page names ClaudeBot, Claude-User and Claude-SearchBot, and not this token.cohere-ai: Cohere's page says it does not use crawlers to collect web content at this time, and its table of crawlers is empty.Bytespider: no English page from ByteDance documents it. Its Toutiao webmaster platform loaded with no readable content on 25 October 2026.
Tokens outside the 18, including Google-Agent and Meta-WebIndexer
The check does not resolve these documented tokens, but robots.txt accepts a rule for any of them.
| Token | Operator | What the operator says | Docs |
|---|---|---|---|
Google-Agent |
Agents on Google infrastructure browse and act when a user asks. Google signs some of its requests with Web Bot Auth. | ||
Meta-WebIndexer |
Meta | Crawls to improve Meta AI search results. Meta lists no robots.txt exception for it. | Meta |
meta-externalfetcher |
Meta | Fetches links a user asks for, and may bypass robots.txt rules. | Meta |
OAI-AdsBot |
OpenAI | Checks pages submitted as ads, and visits only those. | OpenAI |
Amzn-SearchBot |
Amazon | Search, for example in Alexa, not training. It follows the rules for other search crawlers if its token is absent. | Amazon |
Amzn-User |
Amazon | Live lookups when a user asks Alexa. It may not follow all robots.txt directives. | Amazon |
Applebot |
Apple | Search in Spotlight, Siri and Safari. It respects robots.txt. | Apple |
MistralAI-Index |
Mistral AI | A search index for Vibe, never training. | Mistral AI |
MistralAI-Training |
Mistral AI | Datasets for training. Block it in robots.txt. | Mistral AI |
Meta's Muse has no token to list
Meta's crawler page documents 5 crawlers, and none is named Muse. Search Engine Journal reports that Muse has no published user agent. It also reports that Amazon blocked Muse on 20 September 2026, and that Amazon says Muse does not identify itself.
A robots.txt group needs a name to address, so a rule cannot reach Muse. What a site can do about agents with no user agent covers the options.
IP ranges: where each operator publishes them
An operator's IP list is the second check: compare the request's source address with it. Each URL below comes from the operator's own page, read on 27 October 2026. We did not download the lists.
| Operator | What it publishes | Where |
|---|---|---|
| OpenAI | One JSON file per crawler, 4 in all | gptbot.json, searchbot.json, chatgpt-user.json, adsbot.json |
| Anthropic | One list for all its crawlers | JSON list |
| Perplexity | One JSON file per crawler, 2 in all | perplexitybot.json, perplexity-user.json |
5 JSON files by crawler type, one for Google-Agent |
Verifying requests from Google | |
| Apple | One JSON file for Applebot | applebot.json |
| Common Crawl | A JSON file for CCBot | ccbot.json |
| Amazon | One page per crawler, 3 in all | Amazonbot, Amzn-SearchBot, Amzn-User |
| DuckDuckGo | A JSON list for DuckAssistBot | duckassistbot.json |
| Mistral AI | JSON files for 2 of its 3 crawlers, not MistralAI-Training | user, index |
| Meta | Nothing on its crawler page | Meta web crawlers |
| Cohere, ByteDance | Nothing found. Cohere lists no crawler. | Cohere |
Google, Apple and Common Crawl also document reverse DNS names for their crawlers. Use a list to identify traffic, not to block it. Anthropic warns that an IP block can stop its crawler reading robots.txt, as the blocking guide explains.
How RFC 9309 picks the group a crawler obeys
RFC 9309 has a crawler find the group that names its product token, with case-insensitive matching. It obeys the * group only “if no matching group exists”. So a named group replaces the * group for that crawler. Google's robots.txt page says the same.
A group can name several tokens, and groups that name the same token are merged.
The trap looks like this:
User-agent: *
Disallow: /account/
Disallow: /api/
User-agent: GPTBot
Allow: /
GPTBot may now fetch /account/ and /api/, because its own group has no Disallow. Repeat every * rule you still want in each named group.
Example robots.txt policy
Refuse training, and leave search and user fetches on the rules everyone else gets:
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Google-Extended
Disallow: /
User-agent: OAI-SearchBot
User-agent: ChatGPT-User
User-agent: Claude-SearchBot
User-agent: Claude-User
Disallow: /account/
Allow: /
Blocking AI crawlers without locking out agents has the full file. Add a Content-Signal line to each group to state the use you allow, as Content-Signal in robots.txt explains.
The AI crawler policy check reads a token as having rules only when its group allows /. A file whose every named group is Disallow: / reads as Not used: the named groups block their crawlers and state nothing else. The second group above is what makes this file state a policy.
How to check what each crawler will read
The AI crawler checker resolves the governing group for all 18 tokens on your site.
Fetch the file the crawler fetches, and read the group for one token:
curl -sS https://agenticwebscore.com/robots.txt | grep -i -A3 '^user-agent: gptbot'
User-agent: GPTBot
Disallow: /api/
Allow: /
Content-Signal: ai-train=no, search=yes, ai-input=yes
This site's file names 17 of the 18 tokens. Claude-SearchBot has no group, so it follows *, which holds the same 3 lines.
In the scan records of 20 October 2026, 3 of the 5 sites name none of the 18 tokens. Every token follows the * group at Vercel, Resend and MDN. GitHub names 6 and disallows Bytespider, and Cloudflare names 7.
The check reports, for each token, whether its governing group allows it, partly disallows it, or disallows it. It earns points in the agent-conventions part and holds no level. To see the group each token gets on your site, scan your site.