Skip to content

AI crawlers, robots.txt and llms.txt: a startup guide

A technical reference for founders who run their own site: every major AI crawler sorted by what it does with your pages, with the vendor documentation behind each row.

By the CodeTrendy Editorial Team. Published , revised . 18 minute read, 15 sources.

ShareXLinkedInFacebook
A robots.txt with one group each for training, search and user-fetch bots: training is refused, the other two reach the site.

The short answer

Should a startup block AI crawlers in robots.txt?

Not as one group. AI bots do three different jobs: collecting training data (GPTBot, ClaudeBot), building a search index (OAI-SearchBot, Claude-SearchBot, PerplexityBot) and fetching a page because a user asked (ChatGPT-User, Perplexity-User). Each has its own robots.txt token. Most startups should allow the search and user-fetch bots and decide separately about training. llms.txt is an optional community proposal, not an access control.

Time needed
About 1 hour
Cost
Free
Skill level
Edit a text file, read a log
Best for
Sites you host or deploy yourself

What you will leave with

  • You can tell a training crawler from a search indexer from a user-triggered fetcher, and you know which token controls which.
  • You have a robots.txt you can paste for three policies: allow everything, allow search but not training, or block all AI bots.
  • You know which bots their own vendors say may ignore robots.txt: ChatGPT-User, Perplexity-User and meta-externalfetcher.[1][3][10]
  • You know that blocking Google-Extended does not remove you from Google Search, and that it is not the control for AI Overviews.[4][5]
  • You can check your own access logs and confirm a request really came from the vendor it claims.

What kinds of AI bots visit a startup site?

Three kinds, and they are not interchangeable: crawlers that collect training data, crawlers that build a search index, and fetchers that load one page because a person asked an assistant about it.

of desktop sites name gptbot in robots.txt (Web Almanac 2025)[14]
4.5%
growth in GPTBot requests, May 2024 to May 2025, on Cloudflare[15]
305%
for OpenAI search systems to adjust to a robots.txt change[1]
~24 hours
of desktop sites serve a valid llms.txt (Web Almanac 2025)[14]
2.13%

The mistake that costs founders the most is a single rule for "AI bots". A blanket block written to keep your content out of model training also removes you from the search index that ChatGPT or Claude consult when a buyer asks for a tool like yours.

The vendors split these jobs on purpose and give each one its own token. OpenAI states that "each setting is independent of the others".[1] Perplexity says the same about its two agents.[3] The useful question is which of the three jobs you want done on your pages.

The vocabulary you need

Training crawler
Crawls on its own schedule to collect content that may be used to train models. Blocking it is an opt-out from future training, not a way to remove what was already collected. Examples: GPTBot, ClaudeBot.[1][2]
Search indexer
Crawls on its own schedule to build the index an assistant searches when it answers with links. Examples: OAI-SearchBot, Claude-SearchBot, PerplexityBot.[1][2][3]
User-triggered fetcher
Loads a specific page at the moment a person asks the assistant something that needs it. It is not a crawl. Examples: ChatGPT-User, Claude-User, Perplexity-User.[1][2][3]
Usage token
A robots.txt token that does not crawl at all. It tells a vendor how content already fetched by its main crawler may be used. Google-Extended and Applebot-Extended work this way.[4][8]

Which AI crawlers exist and what is each one for?

Fifteen tokens from nine operators cover almost everything a startup will see. The table lists each with the purpose its operator documents and what that operator says about robots.txt.

Figure 1AI crawlers and fetchers: robots.txt token, operator, documented purpose and robots.txt behaviour, per first-party docs checked in October 2026

AI crawlers and fetchers: robots.txt token, operator, documented purpose and robots.txt behaviour, per first-party docs checked in October 2026
GPTBot (OpenAI)JobTrainingPurpose as the operator documents itCrawls content that "may be used in training our generative AI foundation models".[1]robots.txt, per the operatorDisallowing it is the documented signal that content should not be used for training.
OAI-SearchBot (OpenAI)JobSearch indexPurpose as the operator documents itSurfaces websites in search results in ChatGPT search features.[1]robots.txt, per the operatorOpted-out sites are not shown in ChatGPT search answers, though they can still appear as navigational links.
ChatGPT-User (OpenAI)JobUser fetchPurpose as the operator documents itCertain user actions in ChatGPT and Custom GPTs. Not used for automatic crawling.[1]robots.txt, per the operator"Because these actions are initiated by a user, robots.txt rules may not apply."
ClaudeBot (Anthropic)JobTrainingPurpose as the operator documents itCollects web content that "could potentially contribute to their training".[2]robots.txt, per the operatorHonoured. Blocking signals that future material should be excluded from training datasets. Supports Crawl-delay.
Claude-SearchBot (Anthropic)JobSearch indexPurpose as the operator documents itNavigates the web to improve search result quality for users.[2]robots.txt, per the operatorHonoured. Blocking prevents indexing for search.
Claude-User (Anthropic)JobUser fetchPurpose as the operator documents itAccesses sites when a person asks Claude a question.[2]robots.txt, per the operatorHonoured. Blocking prevents retrieval in response to a user query.
PerplexityBot (Perplexity)JobSearch indexPurpose as the operator documents itSurfaces and links websites in Perplexity search results. Not used to crawl content for AI foundation models.[3]robots.txt, per the operatorrobots.txt is the documented control. Perplexity recommends allowing it.
Perplexity-User (Perplexity)JobUser fetchPurpose as the operator documents itSupports user actions within Perplexity. Not used for crawling or training.[3]robots.txt, per the operator"Since a user requested the fetch, this fetcher generally ignores robots.txt rules."
Google-Extended (Google)JobUsage tokenPurpose as the operator documents itControls whether content Google has crawled may be used to train future Gemini models and for grounding in Gemini Apps and Vertex AI.[4]robots.txt, per the operatorrobots.txt only. It has no separate HTTP user agent string and does not affect inclusion or ranking in Google Search.
Applebot-Extended (Apple)JobUsage tokenPurpose as the operator documents itOpts content out of training Apple generative models. It does not crawl webpages.[8]robots.txt, per the operatorrobots.txt only. Pages can still appear in search results.
CCBot (Common Crawl)JobOpen datasetPurpose as the operator documents itBuilds an open repository of web crawl data for public use and research.[9]robots.txt, per the operatorA robots.txt disallow is the documented way to stop it.
meta-externalagent (Meta)JobTraining and indexingPurpose as the operator documents itCrawls for "training foundation AI models or improving products by indexing content directly".[10]robots.txt, per the operatorMeta documents a robots.txt disallow as the way to block it.
meta-externalfetcher (Meta)JobUser fetchPurpose as the operator documents itFetches individual links at a user request.[10]robots.txt, per the operatorMeta says this crawler "may bypass robots.txt rules" because its fetches are requested by a user.
Amazonbot (Amazon)JobTraining (possible)Purpose as the operator documents itUsed to improve Amazon products and services; content "may be used to train Amazon AI models".[11]robots.txt, per the operatorRespects the Robots Exclusion Protocol. Does not support Crawl-delay.
Bytespider (ByteDance)JobNot documentedPurpose as the operator documents itWe found no first-party documentation page for it.robots.txt, per the operatorNo vendor statement found. Treat any claim about its behaviour as unverified.
Anthropic lists its three bots by name but does not publish full HTTP user agent strings on that page.[2] Amazon also documents Amzn-SearchBot (search, not training) and Amzn-User (user fetch, "may not follow all robots.txt directives").[11] Sources[1][2][3][4][8][9][10][11]

Figure 2Share of AI-only crawler requests on Cloudflare, May 2025

  • GPTBot5% in May 2024

    30%
  • ClaudeBot27% in May 2024

    21%
  • Meta-ExternalAgentNew entry

    19%
  • Amazonbot21% in May 2024

    11%
  • Bytespider42% in May 2024

    7.2%
The mix changes fast: Bytespider fell from 42% to 7.2% of AI-only crawler requests in a year while GPTBot rose from 5% to 30%. A robots.txt written once and never reviewed goes stale. These are 2025 figures from one network, not a measure of your site.[15] Source[15]

Do AI bots actually obey robots.txt?

The documented crawlers say they do, several user-triggered fetchers say they may not, and the standard itself says robots.txt is a request, not a lock.

RFC 9309, the 2022 standard for the Robots Exclusion Protocol, is blunt: "These rules are not a form of access authorization."[13] A robots.txt file is a published preference that well-behaved crawlers choose to follow. Anthropic says its bots honour it.[2] Amazon says automated crawling from its listed agents respects it.[11]

The user-triggered fetchers are the documented exception. OpenAI, Perplexity, Meta and Amazon each say their user-initiated agent may not follow robots.txt, on the reasoning that a person asked for that page.[1][3][10][11] Anthropic is the outlier: it documents Claude-User as blockable through robots.txt.[2] To keep a page from every fetcher, use a login. A firewall rule is real enforcement too, but Anthropic warns that IP blocking can stop its bot reading your robots.txt at all.[2]

How the standard resolves your rules

  • A crawler looks for the group that matches its own token. Only "if no matching group exists" does it obey the wildcard group.[13]
  • A robots.txt that returns a 4xx means crawlers may access anything. One that is unreachable (5xx) means they must assume a complete disallow.[13]
  • Crawlers should not use a cached copy for more than 24 hours, so expect about a day before a change takes effect. OpenAI and Perplexity both quote roughly 24 hours.[13][1][3]
  • Crawl-delay is not in the standard. Anthropic supports it; Apple and Amazon say they do not.[2][8][11]

Which AI crawler policy should a startup choose?

If your public pages exist to sell the product, allow everything. If the pages are the product, allow search and user fetches and refuse training. Block everything only when being absent from AI answers costs you nothing.

Pick a policy from what your public pages are

  • If Marketing site, docs, changelog, pricing page

    Allow all. You wrote these pages to be read and repeated. In our judgement a model learning that your product exists, and what it does, costs you nothing.

  • If Original writing, research, datasets or paid-quality content is what you sell

    Allow search and user fetches, refuse training. Assistants can still find and link you; the training crawlers are asked to stay out.

  • If Mixed: public marketing plus a content library you want to protect

    Split by path. Allow everything on the marketing paths and disallow the training tokens on the library path only.

  • If Logged-in app, customer data, staging

    Authentication, not robots.txt. A disallow line is public and names the paths you want hidden.

  • If A bot is generating real hosting cost and you get nothing from it

    Disallow that one token, wait a day, then check the logs. Escalate to a firewall rule only if it keeps coming.

  • If Legal or contractual reasons mean no AI reuse at all

    Block all AI tokens and accept that the user-triggered fetchers which document a bypass may still load pages.

One honest caveat on "refuse training": no vendor document we opened says that allowing a training crawler makes a model more likely to mention you, and none says that blocking one makes it less likely. Vendors only document what the token controls. Choose on what you are comfortable with.

What should the robots.txt look like for each policy?

Three files cover it. Each one names tokens explicitly and repeats the private paths inside the named group, because a bot with its own group stops reading your wildcard group.

Policy 1: allow all AI bots

For marketing sites and docs. The named group repeats the private paths, because a bot with its own group ignores the wildcard group. Deleting the named group gives the same result.

# Search indexers, user-triggered fetchers, training crawlers and usage tokens
User-agent: OAI-SearchBot
User-agent: ChatGPT-User
User-agent: Claude-SearchBot
User-agent: Claude-User
User-agent: PerplexityBot
User-agent: Perplexity-User
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Google-Extended
User-agent: Applebot-Extended
User-agent: CCBot
Disallow: /admin/
Disallow: /api/

# Everyone else
User-agent: *
Disallow: /admin/
Disallow: /api/

Sitemap: https://example.com/sitemap.xml

Policy 2: allow search and user fetches, refuse training

For sites where the content itself is the asset. Replace /admin/ and /api/ with your own private paths, in both groups where they appear.

# Refuse training crawlers and training usage tokens
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Google-Extended
User-agent: Applebot-Extended
User-agent: CCBot
User-agent: meta-externalagent
User-agent: Amazonbot
User-agent: Bytespider
Disallow: /

# Allow search indexers and user-triggered fetchers
User-agent: OAI-SearchBot
User-agent: ChatGPT-User
User-agent: Claude-SearchBot
User-agent: Claude-User
User-agent: PerplexityBot
User-agent: Perplexity-User
Disallow: /admin/
Disallow: /api/

# Everyone else
User-agent: *
Disallow: /admin/
Disallow: /api/

Sitemap: https://example.com/sitemap.xml

Policy 3: block all AI bots

Googlebot and Bingbot are not listed, so classic search is unaffected.

User-agent: GPTBot
User-agent: OAI-SearchBot
User-agent: ChatGPT-User
User-agent: ClaudeBot
User-agent: Claude-SearchBot
User-agent: Claude-User
User-agent: PerplexityBot
User-agent: Perplexity-User
User-agent: Google-Extended
User-agent: Applebot-Extended
User-agent: CCBot
User-agent: meta-externalagent
User-agent: meta-externalfetcher
User-agent: Amazonbot
User-agent: Bytespider
Disallow: /

User-agent: *
Disallow: /admin/
Disallow: /api/

Sitemap: https://example.com/sitemap.xml

Three things in Policy 2 are judgement calls, so adjust them. Google-Extended also governs grounding in Gemini, not only training, so refusing it has a search-like cost inside Gemini products.[4] CCBot feeds an open dataset used for research as well as by AI developers.[9] And Amazonbot is described as improving Amazon products, with training as a possible use, so blocking it is broader than a pure training opt-out.[11]

Serve the file at the root of each host. Anthropic notes that an opt-out has to be repeated on every subdomain you want covered.[2]

What is llms.txt and do AI vendors actually use it?

llms.txt is a community proposal for a markdown file that helps an agent find the useful pages on a site. It is not a standard, it grants or denies nothing, no vendor crawler documentation we opened lists it as a signal, and Google says Google Search ignores it.

Jeremy Howard published the proposal on September 3, 2024 at llmstxt.org. The page was revised on August 10, 2026 and now describes itself as "v2 of the proposal".[12] It asks sites to publish a markdown file that offers "brief background information, guidance, and links to detailed markdown files". The only required element is an H1 with the site or project name; a blockquote summary and H2 sections of links are optional.

It does a different job from robots.txt. The proposal says robots.txt tells automated tools what access is acceptable, while llms.txt is "used on demand, when an agent needs information about a topic while assisting a user".[12] It is a map, written for inference time. It cannot block or allow a crawler.

Figure 3What first-party sources say about llms.txt (checked October 2026)

What first-party sources say about llms.txt (checked October 2026)
llmstxt.org (the proposal)What it saysIt is a proposal. It notes that "the AI labs themselves publish llms.txt files for their own developer docs".[12]What it does not sayIt does not claim that any vendor crawler fetches llms.txt automatically.
Google Search CentralWhat it saysCreating an llms.txt file "will neither harm nor help your site's visibility or rankings in Google Search, as Google Search ignores them."[6]What it does not sayIt speaks for Google Search only, and adds that it is fine to keep the file for other services that use it.
OpenAI crawler docsWhat it saysDocuments robots.txt tokens only. The docs site links to its own llms.txt.[1]What it does not sayNothing about its crawlers reading your llms.txt.
Anthropic crawler help pageWhat it saysDocuments robots.txt and Crawl-delay only.[2]What it does not sayNo mention of llms.txt.
Perplexity crawler docsWhat it saysDocuments robots.txt and IP lists only.[3]What it does not sayNo mention of llms.txt.
Sources[12][6][1][2][3]

Figure 4Share of desktop sites whose robots.txt names each AI token, 2025

  • gptbot

    4.5%
  • claudebot

    3.6%
  • ccbot

    3.5%
  • google-extended

    3.4%
  • perplexitybot

    2.8%
Naming AI bots is still rare: the Web Almanac 2025 found gptbot in the robots.txt of 4.5% of desktop sites, up from 2.9% in 2024. Naming a token is not the same as blocking it. Separately, the same chapter found a valid llms.txt on 2.13% of desktop sites and attributes that adoption mostly to CMS plugins rather than deliberate strategy.[14] Source[14]

A minimal llms.txt

Follows the structure in the proposal: H1, blockquote summary, H2 link lists, an Optional section.

# Example Product

> Example Product is a hosted API for resizing images. This file lists the pages that explain what it does and how to use it.

## Docs

- [Quickstart](https://example.com/docs/quickstart.md): Install the SDK and make a first request
- [API reference](https://example.com/docs/api.md): Every endpoint, parameter and error code
- [Pricing](https://example.com/pricing.md): Plans and limits

## Optional

- [Changelog](https://example.com/changelog.md): Release history

Our view: publish one if you have developer docs. It is a small job, the labs publish them for their own docs, and it gives a coding agent, or anyone pasting context into an assistant, a clean starting point. On a five-page marketing site it is harmless and low priority. Either way it is not a ranking lever. CodeTrendy publishes an llms.txt of its own as a markdown index of the site.

How do you check which AI bots are fetching your site?

Search your access logs for the user agent tokens, then confirm the source IP against the list the vendor publishes. The user agent alone proves nothing, because anyone can send it.

How to audit AI crawler traffic in your server logs

  1. Find where raw requests are logged10 min

    You need the log that records every request with its user agent and IP: the nginx or Apache access log, or the request log of your host or CDN. Browser-side analytics will not do.

  2. Count requests per AI token5 min

    Run the first command in the template below against at least seven days of logs. Substring matching on the token is enough: the full strings look like compatible; GPTBot/1.4; +https://openai.com/gptbot or CCBot/2.0 (https://commoncrawl.org/faq/).[1][9] Two tokens will never appear: Google-Extended has no HTTP user agent string and Applebot-Extended does not crawl.[4][8]

  3. Verify the IPs for the bots that matter15 min

    OpenAI publishes one JSON list per agent (openai.com/gptbot.json, searchbot.json, chatgpt-user.json), Anthropic publishes claude.com/crawling/bots.json, and Perplexity publishes perplexitybot.json and perplexity-user.json.[1][2][3] For CCBot and Applebot, do a reverse DNS lookup and then a forward lookup on the result: genuine hosts sit under crawl.commoncrawl.org (IPv4 only; Common Crawl also publishes its ranges as JSON) and applebot.apple.com.[9][8]

  4. Check robots.txt is being fetched and returns 2005 min

    Look for requests to /robots.txt from the same agents. OpenAI says it may add a robots.txt marker to the user agent on those requests.[1] A 5xx on that URL tells compliant crawlers to assume a complete disallow.[13]

  5. Change the file, wait a day, compare10 min, a day later

    After editing robots.txt, allow about 24 hours, then rerun the count. Requests from a disallowed training crawler should stop; user-triggered fetchers may continue, as their vendors document.[1][3]

Log commands (nginx or Apache combined format)

Adjust the log path. The second command shows what a bot requested; the third is the reverse-then-forward DNS check.

# 1. Requests per AI agent (counts log lines that contain each token)
for bot in gptbot oai-searchbot chatgpt-user claudebot claude-searchbot claude-user perplexitybot perplexity-user ccbot bytespider meta-externalagent meta-externalfetcher amazonbot applebot; do
  printf '%8d  %s\n' "$(grep -ic "$bot" /var/log/nginx/access.log)" "$bot"
done | sort -rn

# 2. Top 20 paths one bot requested
grep -i "gptbot" /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20

# 3. Source IPs for one bot, then verify one of them
grep -i "ccbot" /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head
host 203.0.113.10        # should return a vendor hostname
host the-hostname-it-returned   # should return the same IP

What mistakes do founders make with AI crawlers?

Nearly all of them come from treating the bots as one group, or from expecting robots.txt or llms.txt to do something they were never designed to do.

  • Avoid: Blocking by copy-pasted list Check any "block AI bots" snippet for OAI-SearchBot and PerplexityBot before you paste it. Disallowing them removes you from the search answers you were hoping to appear in.[1][3]
  • Avoid: Blocking Googlebot to avoid AI Overviews There is no robots.txt token for AI Overviews, and blocking Googlebot removes you from Google Search itself. Use the Search generative AI control in Search Console, or snippet limits such as nosnippet and max-snippet if you want finer control.[7][5]
  • Avoid: Hiding private paths with Disallow robots.txt is public and "not a form of access authorization".[13] Listing /internal-pricing/ there advertises it.
  • Avoid: Forgetting that Applebot can inherit Googlebot rules If your robots.txt mentions Googlebot but not Applebot, Apple says Applebot follows the Googlebot instructions.[8]

When is none of this worth your time? If your site is a week old with a handful of pages, a default robots.txt with a sitemap line is enough: with no AI rules, every documented bot is already allowed. Come back to this when the logs show real volume, or when you publish something you would mind seeing reused.

Being crawlable is only the first condition for being mentioned; what an assistant says depends on what the open web says about you. For places where a product can be described publicly, see where to promote a startup; a profile on CodeTrendy is one such page, and it promises no traffic, ranking or AI citation (plans are on pricing).

AI crawler audit for one site

0 of 11 done

Decide

Publish

Verify

Your ticks are saved in this browser.

5 quick answers

Common questions

Short answers to the follow-up questions readers ask most.

Not here? Ask us
  • No. OpenAI documents GPTBot as the crawler for content that may be used in model training. Appearing in ChatGPT search answers is governed by a different token, OAI-SearchBot, and OpenAI says each setting is independent. Blocking GPTBot alone leaves search untouched. It also does not remove anything a model already learned before you added the rule.

Sources

  1. [1]Overview of OpenAI crawlersOpenAI
  2. [2]Does Anthropic crawl data from the web, and how can site owners block the crawler?Anthropic, 2026
  3. [3]Perplexity crawlersPerplexity
  4. [4]Google's common crawlersGoogle Search Central, 2026
  5. [5]AI features and your websiteGoogle Search Central, 2025
  6. [6]Google's guide to optimizing for generative AI features on Google SearchGoogle Search Central, 2026
  7. [7]Search generative AI controlGoogle Search Console Help, 2026
  8. [8]About ApplebotApple Support
  9. [9]CCBotCommon Crawl
  10. [10]Meta web crawlersMeta for Developers
  11. [11]AmazonbotAmazon Developer
  12. [12]The /llms.txt file, v2llmstxt.org (Jeremy Howard), 2026
  13. [13]RFC 9309: Robots Exclusion ProtocolIETF / RFC Editor, 2022
  14. [14]Web Almanac 2025, chapter 5: SEOHTTP Archive, 2026
  15. [15]From Googlebot to GPTBot: who's crawling your site in 2025Cloudflare, 2025

How this guide was put together. Every user agent token, purpose, quotation and robots.txt statement in this guide was checked against the text of the operator's own documentation page on 11 October 2026; where a page was silent (Bytespider, JavaScript rendering outside Apple, Anthropic full user agent strings) we say so instead of filling the gap. The robots.txt templates follow the group-matching rules of RFC 9309, but test your own file before relying on it. Adoption and traffic figures come from the HTTP Archive Web Almanac 2025 and a 2025 Cloudflare analysis of its own network, so they describe those samples, not your site. The policy recommendations, the decision rules and the checklist are editorial judgement, and vendor documentation changes often, so recheck the linked pages before relying on a specific row.