For the complete documentation index, see llms.txt. Every page on this site is also served as Markdown: append `.md` to any URL, or send `Accept: text/markdown`.
Skip to content

The AI crawler guide: bots, jobs and robots.txt · chapter 1

AI crawler user agents and robots.txt tokens

Each AI crawler sends a User-Agent header containing a short product token, such as GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot or Meta-ExternalAgent, plus a version and a link to its operator's documentation. Write robots.txt rules against the token, match logs on the token without the version, and verify the sender by IP, because anyone can send any string.

7 days free · card required

AI crawler requests by tokenn=120,143 requests
attensira.com, by the token each request carried; not verified · to
NameAI crawler requests by token
meta-externalagent90.3%
OAI-SearchBot, GPTBot, ChatGPT-User5.9%
Bytespider2.7%
PerplexityBot0.5%
bingbot0.4%
Googlebot0.2%
ClaudeBot, Claude-User0.1%
Analyst agentAnalystattensira.com AI traffic, Attensira MCP · · counted at the edge
Karl-Gustav KallasmaaKarl-Gustav Kallasmaa, Founder & CEO

Last updated

Key facts

Which crawler tokens actually show up in a real log?

The chart at the top of this page is the ones that reached our own site, by the token each request carried, in the 30 days to 4 October 2026. Attensira counts crawler requests to attensira.com at the edge, because AI crawlers do not run JavaScript and never trigger browser analytics. One operator's token carried about nine in every ten requests; Anthropic's two tokens carried fewer than a hundred between them.

These are counts of what each request said it was. A header is free text, so they are not proof of who sent it; the verification chapter covers that. They are, though, exactly what your robots.txt rules are matched against.

Then we checked our own robots.txt against the operators' current documentation, and found it had drifted: six tokens out of step, two of them stale and four missing. The band after the Anthropic and Mistral tables below lists them. Agents without a group of their own fall to our wildcard group, which allows most of the site. That happens to be what we want. It would not be, for a site that meant to block training.

The lesson is the reason this chapter exists: tokens change, operators add agents, and a robots.txt written once drifts out of date. The tables below come from each operator's own documentation, fetched on 4 October 2026.

How do you read an AI crawler's user-agent string?

A modern crawler header has three parts, and only one of them identifies anything.

plain text
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot
└──────── browser compatibility preamble ────────┘  └── token/version ──┘  └──── docs URL ────┘

The preamble (Mozilla/5.0 ...) is inherited convention. Servers have sniffed for "Mozilla" since the 1990s, and a crawler without it gets turned away by old code. It says nothing about the crawler.

The token and version (GPTBot/1.4) are what matter. robots.txt groups are addressed to the token. Match the token, never the version: versions change when the operator ships, and a firewall rule or log filter pinned to GPTBot/1.4 stops matching silently on the next release.

The trailing URL points at the operator's own page for that agent. When an unfamiliar token turns up in your logs, that page, not a third-party bot list, is the place to check what it does.

What are OpenAI's crawler tokens?

OpenAI documents four agents, each with its own token, job and IP list.

  • OAI-SearchBot

    Job
    Surface websites in ChatGPT's search features
    Follows robots.txt
    Yes
    IP list
    openai.com/searchbot.json
  • GPTBot

    Job
    Make its foundation models more useful and safe (training)
    Follows robots.txt
    Yes
    IP list
    openai.com/gptbot.json
  • ChatGPT-User

    Job
    Certain user actions in ChatGPT and custom GPTs
    Follows robots.txt
    Rules may not apply
    IP list
    openai.com/chatgpt-user.json
  • OAI-AdsBot

    Job
    Validate the safety of pages submitted as ads on ChatGPT
    Follows robots.txt
    Not stated
    IP list
    openai.com/adsbot.json

Full headers, as documented:

plain text
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36; compatible; OAI-SearchBot/1.4; +https://openai.com/searchbot

Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot

Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot

Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; OAI-AdsBot/1.0; +https://openai.com/adsbot

Note that OAI-SearchBot sends a full desktop Chrome preamble and the others do not. A rule that blocks "headless-looking" agents can catch three and miss the one that decides ChatGPT search. OpenAI says a robots.txt change can take about 24 hours to reach its systems.

What are Anthropic's, Perplexity's and Mistral's tokens?

  • Anthropic

    Token
    ClaudeBot
    Job
    Collect content that could contribute to model training
    robots.txt
    Honoured, including Crawl-delay
  • Anthropic

    Token
    Claude-SearchBot
    Job
    Improve search result quality
    robots.txt
    Honoured
  • Anthropic

    Token
    Claude-User
    Job
    Fetch pages when people ask Claude questions
    robots.txt
    Honoured
  • Perplexity

    Token
    PerplexityBot
    Job
    Surface and link websites in Perplexity results
    robots.txt
    Honoured; Perplexity recommends allowing it
  • Perplexity

    Token
    Perplexity-User
    Job
    Visit a page when a user's question needs it
    robots.txt
    Generally ignored, as the fetch is user-requested
  • Mistral

    Token
    MistralAI-User
    Job
    Visit pages for user actions in its assistant
    robots.txt
    Governs user-initiated requests
  • Mistral

    Token
    MistralAI-Index
    Job
    Automated indexing, not used for training
    robots.txt
    Not stated separately
  • Mistral

    Token
    MistralAI-Training
    Job
    Build training datasets
    robots.txt
    Can be disallowed

Anthropic publishes one IP file for its bots at claude.com/crawling/bots.json and warns that blocking its IPs may stop it reading your robots.txt. Perplexity publishes one file per agent and says changes can take up to 24 hours to show. Perplexity's documented strings are:

plain text
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)

Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Perplexity-User/1.0; +https://perplexity.ai/perplexity-user)

Where had our own robots.txt drifted?

Our file against the operators' pages, token by token. Two groups name agents Anthropic no longer lists. Four agents that operators now document have no group, so they get our wildcard rules. Harmless for us; wrong for a site that meant to block training.

Tokens out of step · attensira.com/robots.txt
  • Claude-Web

    Operator's page, 4 Oct
    not listed
    Our robots.txt
    has its own group
  • anthropic-ai

    Operator's page, 4 Oct
    not listed
    Our robots.txt
    has its own group
  • MistralAI-Index

    Operator's page, 4 Oct
    documented
    Our robots.txt
    no group: wildcard rules
  • MistralAI-Training

    Operator's page, 4 Oct
    documented
    Our robots.txt
    no group: wildcard rules
  • OAI-AdsBot

    Operator's page, 4 Oct
    documented
    Our robots.txt
    no group: wildcard rules
  • Meta-ExternalFetcher

    Operator's page, 4 Oct
    documented
    Our robots.txt
    no group: wildcard rules
attensira.com/robots.txt as served, against each operator's crawler page ·

What are Google's and Apple's tokens?

Both use one crawler for search and a separate robots.txt token, with no crawler behind it, for AI training.

  • Googlebot

    Is it a crawler?
    Yes
    What it controls
    Google Search, including all its search features
  • Google-Extended

    Is it a crawler?
    No user agent of its own
    What it controls
    Whether crawled content is used for Gemini training and grounding; Google says it does not affect Search inclusion or ranking
  • Applebot

    Is it a crawler?
    Yes
    What it controls
    Search in Spotlight, Siri and Safari; its data may also help train Apple's models
  • Applebot-Extended

    Is it a crawler?
    No, it does not crawl
    What it controls
    Opt-out from training Apple's foundation models; disallowed pages can still appear in search

So you will never see Google-Extended or Applebot-Extended in a log. They exist only as names in robots.txt, read by the main crawler.

What are Meta's, Amazon's and Common Crawl's tokens?

  • meta-externalagent

    Operator
    Meta
    Job
    Training foundation models or indexing content for products
    Notes
    Sent as meta-externalagent/1.1
  • Meta-ExternalFetcher

    Operator
    Meta
    Job
    Fetch links at a user's request
    Notes
    May bypass robots.txt
  • facebookexternalhit

    Operator
    Meta
    Job
    Fetch pages shared in Meta's apps for previews
    Notes
    Not an AI crawler
  • Amazonbot

    Operator
    Amazon
    Job
    Improve products; may train Amazon AI models
    Notes
    Does not support crawl-delay
  • Amzn-SearchBot

    Operator
    Amazon
    Job
    Search experiences; not used for generative training
    Notes
  • Amzn-User

    Operator
    Amazon
    Job
    User actions such as Alexa queries; not used for generative training
    Notes
  • CCBot

    Operator
    Common Crawl
    Job
    An open web corpus that many model builders use
    Notes
    Sent as CCBot/2.0 (https://commoncrawl.org/faq/)

Common Crawl says plainly that it is aware of crawlers falsely identifying themselves as CCBot, and publishes IP ranges so you can check.

Bytespider, the third-busiest agent on our site, has no operator documentation we could cite, so we list it without a description.

Which tokens are easiest to confuse?

Five pairs cause most of the expensive mistakes, because each pair shares an operator and does opposite jobs.

GPTBot and OAI-SearchBot. Both are OpenAI. GPTBot is for training; OAI-SearchBot decides whether you can appear in ChatGPT's search answers. A rule written for one does nothing to the other. A site that means to opt out of training but writes User-agent: OAI-SearchBot removes itself from ChatGPT search instead.

ClaudeBot and Claude-User. ClaudeBot collects training data. Claude-User fetches a page because a person just asked Claude about it. Blocking the second, Anthropic says, may reduce your visibility in user-directed search.

Googlebot and Google-Extended. Googlebot is the crawler for Google Search, and Google's AI features draw on its index. Google-Extended is only a word in robots.txt. Disallowing it opts content out of Gemini training and grounding and, by Google's statement, does not touch Search.

Applebot and Applebot-Extended. The same split at Apple: Applebot crawls for search, Applebot-Extended is a training opt-out that does not crawl at all.

meta-externalagent and facebookexternalhit. The first is Meta's training and indexing crawler, the busiest agent on our own site. The second fetches a page to build a preview when someone shares your link in Meta's apps. Blocking the second breaks your link previews and has nothing to do with AI.

Do the engines keep the tokens straight?

Perplexity's answer to a question we track, verbatim. It files GPTBot under training and real-time indexing, and calls ChatGPT-User access for testing. OpenAI documents neither. Copy a token list from an answer and you inherit its mistakes.

Answer · Perplexityasked

Question: list of AI crawler user agents

Perplexity answered: Here are common AI crawler user agents: GPTBot (OpenAI) — used for AI training data collection and real-time indexing; OAI-SearchBot (OpenAI) — AI search/indexing; ChatGPT-User — user-initiated access for testing; ClaudeBot (Anthropic) — AI training data collection; Claude-SearchBot (Anthropic) — AI search indexing; … Exact strings and variants vary by source; verify in your logs or robots.txt for your site.

Sources cited

  1. 1searchenginejournal.com
  2. 2chrisleverseo.com
  3. 3pulserank.ai
  4. 4clickfrom.ai
  5. 5presenc.ai
  6. 6texta.ai
  7. +1 more

Not namedAttensira is missing from this Perplexity answer.

attensira.com workspace, Attensira MCP · · sample 3 of 3 that day

How do you filter logs for AI crawlers?

Search the User-Agent field for each token as a case-insensitive substring, then group the hits by token, not by operator. Grouping by operator hides the job: OpenAI's 7,060 requests to our site were mostly its search agent, with a smaller share from its training agent and a few user-triggered fetches, and each of those needs a different decision. Keep the list of tokens in one place, such as a small file your log queries read, and update it when you re-read the operators' pages. A list that lives inside a dashboard query is a list nobody updates.

How are tokens matched against robots.txt groups?

By the product token, without regard to case. RFC 9309, the robots.txt standard, says crawlers must match their product token against each group's user-agent lines case-insensitively, and must use the most specific group that matches. If no group names the crawler, it uses the wildcard group.

Three consequences are worth knowing. A group can list several user-agent lines, so you can apply one rule set to GPTBot, ClaudeBot and CCBot together. A crawler that finds a group naming it ignores the wildcard group, so rules you put only under * do not apply to an agent you also named. And a token you never named, such as a new agent an operator adds, gets your wildcard rules, which is exactly what happened to the Mistral agents on our site.

How should you use these tokens in practice?

Four rules cover nearly every case.

  1. One robots.txt group per token you care about. Do not rely on the wildcard to express a decision about a named agent. The robots.txt chapter has the syntax and the precedence rules.
  2. Match logs on the token as a case-insensitive substring, without the version. meta-externalagent arrives in lower case; most others do not.
  3. Verify before you act. Before blocking a surprising agent or celebrating a new one, check the request's IP against the operator's published list.
  4. Re-read the operators' pages every quarter. Ours drifted in a few months. Each operator's page is linked in the sources below and in each agent's entry in the crawler directory.

The next chapter, training versus search crawlers, explains what allowing or blocking each of these jobs actually costs you.

What else do people ask?

What is the user agent for ChatGPT's crawler?
OpenAI runs several agents. GPTBot (training) sends 'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot'. OAI-SearchBot (ChatGPT search) and ChatGPT-User (user actions) send their own strings with their own tokens. Address robots.txt rules to each token separately.
Is Google-Extended a user agent?
No. Google says Google-Extended has no separate HTTP user-agent string; crawling is done with Google's existing user agents and the token is used only in robots.txt, to control whether content is used for Gemini training and grounding. You will never see it in a log.
Should I match the version number in a crawler's user agent?
No. Versions such as GPTBot/1.4 change when the operator ships, and a rule pinned to a version silently stops matching. Match the product token as a substring, and treat the version as information only.
Does a user-agent string prove which company sent a request?
No. It is a header the client chooses, and scrapers routinely borrow well-known crawler names. Common Crawl says it is aware of crawlers falsely identifying themselves as CCBot. Confirm the source with the operator's published IP ranges or reverse DNS before acting on it.
How do I know when an operator adds a new crawler?
Check the operator's own crawler page on a schedule, not a third-party list. Mistral, for example, now documents three agents, MistralAI-User, MistralAI-Index and MistralAI-Training, where our own robots.txt names only the first. Each new token you do not name falls to your wildcard group.

Where do these facts come from?

13 sources, 15 statements: each statement with the page it came from and the day it was checked.

  1. OpenAI documents GPTBot as 'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot', OAI-SearchBot/1.4 with a full desktop Chrome preamble, ChatGPT-User/1.0 and OAI-AdsBot/1.0, each with its own IP list at openai.com.

    developers.openai.com · retrieved

  2. OpenAI documents OAI-SearchBot as surfacing websites in ChatGPT's search features, GPTBot as making its foundation models more useful and safe, ChatGPT-User as used for certain user actions in ChatGPT where robots.txt rules may not apply, and OAI-AdsBot as validating pages submitted as ads.

    developers.openai.com · retrieved

  3. Anthropic documents ClaudeBot for training data, Claude-User for fetches when people ask Claude questions, and Claude-SearchBot for search quality, says its bots honour robots.txt including Crawl-delay, and publishes IP ranges at claude.com/crawling/bots.json.

    support.claude.com · retrieved

  4. Perplexity documents PerplexityBot/1.0 for surfacing and linking sites in its search results and Perplexity-User/1.0 for fetches during user questions, which generally ignores robots.txt, with IP lists at perplexity.com/perplexitybot.json and perplexity.com/perplexity-user.json.

    docs.perplexity.ai · retrieved

  5. Google documents that Google-Extended has no separate HTTP user agent string, that crawling is done with existing Google user agents, and that the token is used in robots.txt in a control capacity for Gemini training and grounding.

    developers.google.com · retrieved

  6. Apple documents that Applebot powers search features in Spotlight, Siri and Safari and that its data may help train Apple foundation models, that Applebot-Extended does not crawl and is an opt-out from training, and that Applebot traffic resolves to *.applebot.apple.com.

    support.apple.com · retrieved

  7. Amazon documents Amazonbot ('Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Amazonbot/0.1)') as improving its products and possibly training Amazon AI models, publishes its IP addresses, says it does not support crawl-delay, and names Amzn-SearchBot and Amzn-User as agents that do not train generative models.

    developer.amazon.com · retrieved

  8. Meta documents Meta-ExternalAgent (meta-externalagent/1.1) as crawling for uses such as training foundation models or indexing content, and Meta-ExternalFetcher as fetching links at a user's request and possibly bypassing robots.txt.

    developers.facebook.com · retrieved

  9. Common Crawl documents CCBot's user agent as 'CCBot/2.0 (https://commoncrawl.org/faq/)', publishes IP ranges at index.commoncrawl.org/ccbot.json, and says it is aware of crawlers falsely identifying themselves as CCBot.

    commoncrawl.org · retrieved

  10. Mistral documents three agents, MistralAI-User for user actions, MistralAI-Index for automated indexing not used for training, and MistralAI-Training for building training datasets, each with its own IP list.

    docs.mistral.ai · retrieved

  11. attensira.com/robots.txt, fetched 4 October 2026, names each AI agent in its own group, including Claude-Web and anthropic-ai, which Anthropic's current page does not list, but has no group for MistralAI-Index, MistralAI-Training, OAI-AdsBot or Meta-ExternalFetcher, which therefore fall to its wildcard group.

    attensira.com · retrieved

  12. Read over the Attensira MCP on 4 October 2026 (attensira.com AI traffic, 30 days): Meta-ExternalAgent 108,487 requests; OpenAI's ChatGPT-User, GPTBot and OAI-SearchBot 7,060; Bytespider 3,205; PerplexityBot 595; bingbot 515; Googlebot 182; ClaudeBot and Claude-User 99.

    docs.attensira.com · retrieved

  13. RFC 9309 says crawlers must use case-insensitive matching of their product token to find the group that matches, must obey the most specific matching group, and must obey the group with a wildcard user-agent when no other group matches.

    rfc-editor.org · retrieved

  14. Read over the Attensira MCP on 5 October 2026 (attensira.com workspace): one of Perplexity's answers on 3 October 2026 to the tracked question 'list of AI crawler user agents' described GPTBot as used for training data collection and real-time indexing and ChatGPT-User as user-initiated access for testing.

    attensira.com workspace, read over the Attensira MCP on

  15. attensira.com/robots.txt as served on 5 October 2026 has groups for Claude-Web and anthropic-ai, and no group for MistralAI-Index, MistralAI-Training, OAI-AdsBot or Meta-ExternalFetcher.

    attensira.com · retrieved

Want software that does your AI-search visibility work, with you in control of every change?

7 days free · card required