AI Search

Block or Allow AI Crawlers: GPTBot to PerplexityBot

Block or allow AI crawlers with a real framework: which bots fetch to answer a live query and can cite you, which only train models, and the exact syntax.

S SparkCliks 0 21 min read
Share
Block or Allow AI Crawlers: GPTBot to PerplexityBot

Whether to block or allow AI crawlers gets argued as one question, and it is at least two. Some of these agents fetch your page to answer a question a human is asking right now, and they can name you and link to you when they do. Others fetch it to build training data, and give you nothing back at the moment of the fetch. Blanket blocking treats those as the same decision, which is how sites quietly remove themselves from answers that would have cited them. Below is the split, the exact robots.txt syntax for each side, the parsing rule that silently breaks most of these files, and how to check what is really crawling you.

Two Jobs, Not One Decision

An AI company can send a crawler at your site for three different reasons, and each vendor runs a separate user agent for each reason.

Retrieval. The bot is building or refreshing an index that gets searched when a user asks a question. When your page wins a slot in the answer, the assistant usually shows a link to it. This is the door that produces referral traffic.

Live user fetch. Somebody pasted your URL into an assistant, or asked about a page by name, and the agent goes and gets it on their behalf. There is a human waiting on the other end.

Training. The bot is collecting text to train or improve a model. Nothing links back, nothing gets cited, and the fetch produces no visitor now or later. Any return arrives much later and cannot be measured.

Those three doors carry completely different consequences, and the user agent string is the only thing that tells them apart. GPTBot and OAI-SearchBot are both OpenAI. One is training, one is search. Block the wrong one and you have made a decision you never intended, with no error message and nothing in any analytics product to warn you.

Every Named Agent and What It Actually Does

Vendors document their own agents, and those pages are the only source worth trusting. The list below is current as of publication and it will age.

User agent tokenRun byJobCan it cite you?
`Googlebot`GoogleBuilds the Search index, which also serves AI Overviews and AI ModeYes
`bingbot`MicrosoftBuilds the Bing index, which also serves Copilot answersYes
`OAI-SearchBot`OpenAIIndexes pages so they can surface in ChatGPT search resultsYes
`Claude-SearchBot`AnthropicCrawls to build and improve Claude's search resultsYes
`PerplexityBot`PerplexityIndexes pages for Perplexity answers and their citationsYes
`Applebot`ApplePowers Siri and Spotlight SuggestionsYes
`ChatGPT-User`OpenAIFetches a page because a user asked for it in ChatGPTYes, and the human is already waiting
`Claude-User`AnthropicSame, on a user request inside ClaudeYes
`Perplexity-User`PerplexitySame, when a user asks about a specific URLYes
`GPTBot`OpenAICollects data used to train modelsNo
`ClaudeBot`AnthropicCollects data used to train modelsNo
`Google-Extended`GoogleNot a crawler. A robots.txt token governing use of your content in Gemini apps and Vertex AI generative APIsNo
`Applebot-Extended`AppleNot a crawler. A token to opt out of training Apple's foundation modelsNo
`CCBot`Common CrawlBuilds a free public web archive that many model builders train onNo
`Bytespider`ByteDanceCollects training dataNo
`meta-externalagent`MetaCollects data for training and product useNo

Primary sources for the four that matter most: OpenAI's bots documentation, Anthropic's crawler article, Perplexity's bots guide and Google's common crawlers list. Common Crawl documents CCBot separately.

Two entries in that table trip people constantly.

Google-Extended is not an agent that appears in your logs. It is a token you write into robots.txt, and Google's own documentation states it does not affect inclusion in Google Search. Since AI Overviews and AI Mode are served from the Search index Googlebot builds, blocking Google-Extended does not remove you from them. Plenty of sites added it in 2024 and 2025 believing it would.

Applebot-Extended works the same way: a training opt-out token that does not change what Applebot crawls for Siri and Spotlight.

Microsoft is the odd one out. There is no Copilot crawler to allow or block, because Copilot answers draw on the Bing index that bingbot builds. Microsoft's Bing Webmaster Tools help documents nocache and noarchive robots meta tags as the content usage controls there, so that lever is a meta tag on the page, not a user agent line in robots.txt.

For the fuller picture of how each engine assembles an answer once it has your page, see how AI assistants pick sources.

Free trial

Stuck on page two?

Real human clicks that lift your CTR and move you up the rankings.

What Each Side of the Trade Returns to You

Strip the ideology out and the two decisions have different ledgers.

Allowing retrieval crawlersAllowing training crawlers
What you give upPublic pages that are already readable by anyonePublic pages that are already readable by anyone
What comes back immediatelyEligibility to be the cited source in an answer, with a clickable linkNothing
What comes back eventuallyReferral visits from those links, plus your brand inside the answerYour brand and facts may end up in what the model knows, surfacing as unlinked mentions
What blocking costs youRemoval from answers that would have cited you, invisible in every report you ownLittle that you can measure
Is it reversible?Yes, but the effect returns only as fast as the crawler revisitsYes, and it does nothing about data already collected
Who is on the other endA user with a live questionA training pipeline

That table is the whole argument. Blocking a training crawler is a low cost decision with a defensible rationale. Blocking a retrieval crawler is a traffic decision, and it is the one people make by accident.

The invisibility is what makes it dangerous. Fall out of ordinary search results and Search Console shows it: impressions drop, positions vanish. There is no equivalent report for a citation that never happened. This matters more than your position data suggests, because AI answers frequently cite pages that do not rank in the top ten, so a site with mediocre rankings can have plenty to lose here.

One caveat on the upside. Retrieval traffic is not a substitute for search traffic and the volumes are not comparable. An assistant that answers in full is a zero click outcome for most readers, and only a minority follow the citation. Expect a smaller stream of unusually well qualified visitors, not a replacement channel.

The Parsing Rule That Breaks Most AI Crawler Blocks

Here is the mechanic that turns a careful robots.txt into an accident.

RFC 9309, the 2022 specification for the Robots Exclusion Protocol, says a crawler uses the group with the most specific matching user agent, and only that group. Rules are not inherited. Rules are not merged. The group headed User-agent: * applies only to crawlers that match no other group in the file.

So this file, which looks like a reasonable way to welcome Perplexity, does something else entirely:

User-agent: *
Disallow: /checkout/
Disallow: /wp-admin/
Disallow: /internal-search/

User-agent: PerplexityBot
Allow: /

PerplexityBot now has an explicit group of its own, so it ignores the three Disallow lines above completely. Your checkout flow, your admin path and your internal search results are open to it and closed to everybody else. The file reads as "allow Perplexity" and behaves as "exempt Perplexity from every rule on the site."

The fix is to restate the shared rules inside every group you create:

User-agent: *
Disallow: /checkout/
Disallow: /wp-admin/
Disallow: /internal-search/

User-agent: PerplexityBot
Disallow: /checkout/
Disallow: /wp-admin/
Disallow: /internal-search/

Tedious, and there is no way around it. A per agent group is a full replacement, not an amendment. Four more rules follow from the same spec:

  • One group can head several agents. Stack User-agent: lines with no blank line between them and the rules below apply to all of them. That is how you keep the file short without losing the inheritance battle.
  • Token matching is case insensitive but not fuzzy. Do not rely on a group headed User-agent: Claude to catch ClaudeBot, Claude-User and Claude-SearchBot. Write the exact tokens the vendor publishes, one per line.
  • The most specific path rule wins, and Google documents that a tie between Allow and Disallow goes to the least restrictive rule. So Allow: /blog/ beats Disallow: / under /blog/.
  • robots.txt is per host and per scheme. https://www.sparkcliks.com/robots.txt does not govern https://docs.sparkcliks.com/. Subdomains need their own file, and that is where a large share of real world misconfigurations live.

The Exact Syntax, Three Ways

Three coherent positions. Pick one, and do not end up mixing them by accident.

Position 1: allow retrieval, block training

The sensible default for most commercial sites, because it keeps the citation door open and closes the one that pays nothing.

# Training corpora: closed
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: CCBot
User-agent: Bytespider
User-agent: meta-externalagent
User-agent: Google-Extended
User-agent: Applebot-Extended
Disallow: /

# Retrieval and live user fetches: open, with the same exclusions as everyone else
User-agent: OAI-SearchBot
User-agent: Claude-SearchBot
User-agent: PerplexityBot
User-agent: ChatGPT-User
User-agent: Claude-User
User-agent: Perplexity-User
Disallow: /checkout/
Disallow: /account/
Disallow: /internal-search/

User-agent: *
Disallow: /checkout/
Disallow: /account/
Disallow: /internal-search/

Sitemap: https://www.sparkcliks.com/sitemap.xml

Google-Extended and Applebot-Extended sit in the first group because Disallow: / is exactly how those tokens are meant to be used. They are opt-out switches written in robots.txt syntax, not crawlers, so you will never see either one in an access log.

Position 2: allow everything

This is the default state. An agent that matches no group and finds no Disallow is allowed, so if you have never touched the file you are already here. For a lead generation site, a local business or a public documentation set, that is very likely the right place to be. Doing nothing is a legitimate answer.

Position 3: block all AI access

Coherent if your content is your product and you would rather license it than give it away.

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: CCBot
User-agent: Bytespider
User-agent: meta-externalagent
User-agent: Google-Extended
User-agent: Applebot-Extended
Disallow: /

Notice what is missing. Googlebot, bingbot and Applebot are not on that list, because blocking them removes you from ordinary search results, and since AI Overviews and Copilot are served from those same indexes there is no way to leave the AI surface without leaving search itself. A blocklist that names Googlebot is a way to disappear.

Why a Publisher and a Lead Gen Site Decide Differently

There is no universal answer, because the two models are not selling the same thing. A publisher sells attention by the page view, so an answer that satisfies a reader without a click is lost inventory. A lead generation site sells an action that happens after a visit, so being named as the answer is free distribution it would otherwise pay for.

Site typeRetrieval crawlersTraining crawlersWhy
Ad funded publisherAllow, and watch the referral share closelyBlockRevenue is per page view, so summarization is a direct loss, but exclusion from the answer set forfeits the residual clicks as well
Subscription or paywalled archiveAllow only the free surfaceBlockThe archive is the asset. The free tier is marketing and should stay findable
B2B lead generationAllowAllowYou need to be the named source, and being present in what the model knows is worth more than the fetch costs you
SaaS with public docsAllowAllowAssistants answering "how do I do X in your product" correctly is support deflection and product marketing at the same time
Ecommerce catalogAllowYour callProduct facts inside an answer create purchase intent, and training rarely costs a retailer anything measurable
Local service businessAllowAllowAlmost nothing to lose, and a real shot at being the named local answer
Original research or data licensingAllowBlockTraining is precisely the use you would rather sell than donate
Anyone with a content licensing dealFollow the contractFollow the contractThe agreement, not robots.txt, is the control that matters

The publisher row is the one with genuine disagreement inside it, and anybody who tells you it is settled is selling something. Large publishers have gone both ways inside the same year, some blocking and then reversing, some signing licensing deals that make the robots.txt question moot. In that category, treat your decision as a hypothesis with a review date, not a policy.

Block or Allow AI Crawlers: Four Questions That Settle It

Run these in order. They resolve most cases in about ten minutes.

  1. Does a reader who sees a good summary of this page still need to visit it? If yes, retrieval is free distribution and you should allow it. If no, you are a page view business and the retrieval question is a real trade rather than an obvious win.
  2. Do you get paid per page view, or per action after the visit? Per view pushes you toward caution on retrieval. Per action pushes you hard the other way, because one qualified visitor is worth thousands of impressions.
  3. Is your content the product, or the marketing for the product? Content that is the product is the strongest case for blocking training. Content that is marketing has no case at all.
  4. Six months from now, will you be able to tell what the decision did? With no baseline and no way to check, the honest move is to allow retrieval, block training, and revisit once measurement exists. Reversing a block is easy. Recovering the answers you were never in is not.

One check before you write anything: see whether you already have a rule you forgot about. Plenty of sites blocked GPTBot in 2023, when it was the only AI user agent anyone had heard of, and never reopened the file after OAI-SearchBot appeared. That file is now expressing a 2023 opinion about a 2026 landscape.

Worked Example: Verify the Directives Actually Work

Writing the rule is the easy half. Confirming that it does what you meant, at every layer, takes about twenty minutes.

Step 1: fetch the file the way a crawler does

curl -sI https://www.sparkcliks.com/robots.txt

You want a 200 status and content-type: text/plain. Two failures show up constantly. A single page app that returns your HTML shell with a 200 status for every unknown path means every crawler is parsing an HTML document as robots.txt and finding no rules at all. A 5xx response is worse, because search engines commonly treat a persistently failing robots.txt as a reason to back off crawling. Repeat the request on the apex domain and on www, and on http as well as https: each combination is a separate robots.txt as far as the spec is concerned.

Step 2: resolve the groups by hand

There is no widely available tester for these agents. Search engine robots.txt testers evaluate their own crawler and nothing else, so none of them will tell you what PerplexityBot sees.

For each agent you care about, find the single group whose User-agent line names it. If no group names it, the * group applies. Then check your paths against that one group only. Build a table like this and keep it in the repository beside the file:

AgentGroup that appliesResult for `/blog/`Result for `/checkout/`
`OAI-SearchBot`its ownAllowedBlocked
`GPTBot`its ownBlockedBlocked
`PerplexityBot`its ownAllowedBlocked
`Googlebot``*`AllowedBlocked

If you cannot fill that table in from the file in front of you, neither can the crawler.

Step 3: check the layer above robots.txt

This is the step almost nobody runs, and it is where the surprise usually is. Your CDN or WAF sits in front of the file and never consults it.

curl -s -o /dev/null -w "%{http_code}\n" \
  -A "Mozilla/5.0 (compatible; OAI-SearchBot/1.0; +https://openai.com/searchbot)" \
  https://www.sparkcliks.com/blog/

A 200 means the edge is letting the request through. A 403, a 503 or an HTML challenge page means a bot management rule is blocking an agent your robots.txt explicitly welcomes, and robots.txt loses that argument every time. Cloudflare announced in July 2025 that new domains on its network default to blocking AI crawlers unless the owner allows them, so a site that never opted into anything can still be closed at the edge. Check the managed rules, not just the file.

Repeat the command for each agent you decided to allow. Spoofing a user agent against your own server is fine for this test, but a 200 proves nothing about identity in the other direction, which is Step 4's job.

Step 4: read the logs, then verify who was really there

Count what has actually reached you over the last 30 days:

for ua in GPTBot OAI-SearchBot ChatGPT-User \
          ClaudeBot Claude-SearchBot Claude-User \
          PerplexityBot Perplexity-User Googlebot bingbot CCBot; do
  printf "%-20s %s\n" "$ua" "$(grep -c "$ua" access.log)"
done
What the counts showWhat it means
Training bots present, retrieval bots at zeroYou have closed the door that costs you, almost certainly by accident
Retrieval bots present, zero user fetch agentsNobody is pasting your URLs into assistants yet. That is a demand problem, not a configuration one
Everything at zero, `Googlebot` includedStart with basic crawlability. AI crawler policy is not your current problem
Counts unchanged 30 days after an editGo back to Step 3. Something above robots.txt is deciding for you

Then verify identity, because a user agent string is a claim and not proof. Anyone can send a request labeled ClaudeBot. OpenAI, Anthropic, Perplexity and Google each publish IP range files for their crawlers, and several support reverse DNS verification. Look up the current URLs in the vendor documentation linked earlier and check your log addresses against them before concluding that a well behaved crawler is misbehaving, or that a scraper is legitimate.

Measuring the change without fooling yourself. Take a 28 day baseline before the edit and a 28 day window after it, and hold back a control set of comparable pages you deliberately do not touch. Track crawler hit counts in the logs and assistant referral sessions in analytics: in Google Analytics 4, Reports, then Acquisition, then Traffic acquisition, with the primary dimension set to Session source / medium and a filter for the assistant hostnames. Expect small, noisy numbers, and expect a chunk of genuine assistant referrals to land in Direct because no referrer was sent. Any figures here are illustrative, not campaign results. A swing of a handful of sessions on a base of a few dozen is noise. Signal means a change large enough to see without squinting, holding across two consecutive windows, and absent from the control set.

What robots.txt Cannot Do for You

Be clear about what you are buying, because several popular reasons for blocking are not served by this file at all.

  • It is a request, not a fence. RFC 9309 defines a format and a parsing model. It defines no enforcement. Compliance is voluntary, and the agents that ignore it are the ones that worried you in the first place.
  • It is not retroactive. Blocking GPTBot today does nothing about content collected last year, or about copies of your pages in Common Crawl archives stretching back more than a decade. If removal is the goal, this is not the instrument.
  • It is not a copyright notice and not a licence. It expresses a crawl preference. It creates no rights and waives none, and it is no substitute for terms of use.
  • It cannot stop an agent that does not announce itself. In August 2025 Cloudflare published findings that it had observed crawling attributed to Perplexity from undeclared user agents and rotating addresses, and Perplexity publicly disputed the analysis. The dispute is unresolved, and the lesson holds either way: a text file governs only the crawlers that read it.
  • It cannot express "index but do not train." The protocol grants or denies a fetch and stops there. Anything finer depends on a vendor honoring a separate token, which is why Google-Extended and Applebot-Extended exist as bolt-ons.
  • Blocking a page also blocks the noindex on it. A crawler barred from fetching the page cannot read the meta tag telling it to stay out of an index. That failure mode is covered in full in robots.txt vs noindex, and it applies to AI crawlers exactly as it does to search engines.

Where the Picture Is Still Moving

Anything written on this topic has a short shelf life. Four areas are genuinely unsettled, and pretending otherwise would be dishonest.

The agent lists keep growing. OAI-SearchBot did not exist when GPTBot launched. Claude-SearchBot came after ClaudeBot. Every vendor has revised its published list at least once, so any blocklist pasted from an article, this one included, starts aging the day it is written. Diary a quarterly re-read of the four vendor pages above.

There is no standard vocabulary yet. The IETF has a working group drafting a way to express content usage preferences, carried in an HTTP header or a robots.txt extension, precisely because "allow crawling, refuse training" cannot be said in the current protocol. Those drafts are in progress, not a published standard, and nothing you write today can depend on them. llms.txt is not the answer either: it is a content index rather than a crawler directive, and no major vendor documents obeying it.

Paid access is being tested. Cloudflare launched a pay per crawl beta in 2025, letting site owners charge AI crawlers for access instead of choosing between open and closed. Whether that becomes normal infrastructure or a footnote is not knowable yet.

Agentic browsing does not fit the taxonomy. An agent booking a table or completing a purchase for somebody is not training a model and is not building a search index. It is a customer's proxy. The categories above predate that use case, and the vendors have not settled how to label it.

One thing has not changed. The fetch matters far less than what the crawler finds when it arrives. A page that is allowed but unreadable, buried in client rendered JavaScript or written so that no passage stands on its own, loses the citation anyway. That is a content problem, and it is the subject of how AI answer engines retrieve chunks rather than pages.

Frequently asked questions

FAQ

Should I block or allow AI crawlers like GPTBot?

Split the decision by purpose rather than answering it once. Allowing retrieval crawlers such as OAI-SearchBot, Claude-SearchBot and PerplexityBot keeps you eligible to be the cited source in an answer, while blocking a training crawler such as GPTBot is low cost, because it returns no link, no citation and no visitor.

Does blocking ClaudeBot stop Claude from citing my site?

No. Anthropic documents ClaudeBot as the training crawler and Claude-SearchBot as the agent that crawls for search results, so blocking ClaudeBot in robots.txt leaves your eligibility to be cited intact. Blocking Claude-SearchBot is the change that removes you from Claude's search results.

What is the difference between PerplexityBot and Perplexity-User?

PerplexityBot is the indexing crawler that builds the pool Perplexity searches when it answers a question. Perplexity-User is the fetch that happens because a specific person asked about a specific URL, and Perplexity documents that user triggered fetches are handled differently from scheduled crawling, so blocking one does not necessarily stop the other.

Does blocking AI crawlers in robots.txt actually stop AI training?

Only for the crawlers that choose to obey it, and only going forward. Content already collected stays collected, public archives such as Common Crawl still hold copies of your pages, and robots.txt has no enforcement mechanism of any kind, so treat it as a stated preference rather than a control.

Will blocking AI crawlers hurt my Google rankings?

Blocking GPTBot, ClaudeBot or PerplexityBot has no effect on Google Search, because Googlebot is a separate crawler with its own group of rules. The dangerous mistake is copying a blocklist that also names Googlebot or bingbot, which drops you out of ordinary search results and out of AI Overviews and Copilot at the same time, since those are served from the same indexes.

How do I check which AI crawlers are actually visiting my site?

Grep your access logs for each documented user agent token over a 30 day window and count the hits, then confirm the requests really came from that vendor by checking the source addresses against the IP range files the vendor publishes, or by reverse DNS. User agent strings are trivially spoofed, so the raw count tells you what something claimed to be rather than what it was.

About the Author

Written by the SparkCliks Team. SparkCliks builds search click and website traffic services, so we spend most of our working hours in Search Console, analytics dashboards and server logs, figuring out what a number actually proves. Every vendor claim above links to that vendor's own documentation, and those pages change more often than most: re-check them before writing a rule that depends on one. Where a question is genuinely unsettled, such as the publisher trade-off or the pending standards work, we say so rather than pick a side for you.

Keep reading

Related articles

GEO vs AEO vs AIO: What Actually Differs

GEO vs AEO vs AIO: What Actually Differs

GEO vs AEO vs AIO: which acronym has a real definition, where the three genuinely diverge, and how to settle it inside your own Search Console data.

SparkCliks·AI Search