Guide · AI crawlers and access
Are AI crawlers blocked by your server? A 5-minute check robots.txt will not give you
Short answer
robots.txt only states your preference. A CDN, a firewall, your host's security rules or a plugin can still refuse a crawler with a 403, 406 or 429 before it reads a page, and none of them shows up in your SEO plugin. Test it: send a request to your own site with each AI bot's user agent and compare the status code with a normal browser. Anything other than 200 means a rule is in the way. Then find the layer, and decide on purpose whether to keep the block.
This is a documented guide. The bot facts come from OpenAI, Anthropic, Perplexity, Google and Cloudflare documentation, read in October 2026. The test is a simulation of the user agent only; the limits are listed below, and the worked example is a check we ran on our own site. Run it only on sites you own or manage.
Four places a crawler can be refused
| Layer | What it does | Where you see it |
|---|---|---|
| robots.txt | States which bots may crawl. Honored by well-behaved crawlers, enforced by nobody | yoursite.com/robots.txt; your SEO plugin |
| CDN or firewall | Rejects requests by user agent, IP, bot score or category before they reach your server | Cloudflare: Security events and AI Crawl Control; other CDNs have equivalents |
| Host security | Server-level rules such as web application firewalls and bad-bot lists, often on by default | The hosting control panel, the server error and access logs |
| Application or plugin | A security plugin or a rule in .htaccess or the CMS blocking by user agent | Plugin settings and your .htaccess |
Layers two to four are invisible to robots.txt checkers and SEO plugins, which is why a site can look correct and still return 403 to a crawler.
The crawlers worth testing, and what each is for
| Bot | Purpose | If it is blocked |
|---|---|---|
| OAI-SearchBotOpenAI | Surfaces sites in ChatGPT search | Not shown in ChatGPT search answers |
| GPTBotOpenAI | Training of OpenAI's models | Content not used for training |
| ChatGPT-UserOpenAI | Fetches a page when a user asks | User-initiated, so robots.txt rules may not apply |
| Claude-SearchBotAnthropic | Indexing for Claude's search results | May reduce visibility and accuracy in search results |
| Claude-UserAnthropic | Fetches a page when a user asks Claude | May reduce visibility in user-directed search |
| ClaudeBotAnthropic | Collects content that may contribute to training | Future content excluded from training |
| PerplexityBotPerplexity | Surfaces and links sites in Perplexity search; not used for training | Less likely to appear in results; Perplexity recommends allowing it |
| Perplexity-UserPerplexity | Fetches a page for a user's question | Generally ignores robots.txt, since a user triggered it |
From OpenAI's bots page, Anthropic's Help Center article on its crawlers (updated April 2026) and Perplexity's bots guide. Each setting works independently, so you can appear in search and still opt out of training. Which side of that line to pick is the decision in the AI search checklist.
The 5-minute test
First, a normal request, so you have a baseline. Replace the address with your own:
curl -s -o /dev/null -w "%{http_code}\n" https://yoursite.com/
Then the same request with each bot's name in the user agent. This loop covers the bots in the table:
for ua in "OAI-SearchBot/1.0" "GPTBot/1.4" "ChatGPT-User/1.0" \
"PerplexityBot/1.0" "Perplexity-User/1.0" \
"ClaudeBot/1.0" "Claude-SearchBot/1.0" "Claude-User/1.0"; do
printf "%-22s" "$ua"
curl -s -o /dev/null -w "%{http_code}\n" -A "Mozilla/5.0 (compatible; $ua)" https://yoursite.com/
done
Repeat for an inner page, your CSS file, robots.txt and, if you publish one, llms.txt. Some rules are path-specific, and the worked example below found one that was.
| You see | It usually means | Do this |
|---|---|---|
| 200 | The server answered | Check the page size matches your browser's; a tiny 200 can be a challenge page |
| 403 | A rule forbade the request | Find the layer that applies it (next section) |
| 406 | The server rejected the request as not acceptable, often from a security rule on request headers | Same: look at host security and firewall rules |
| 429 | Rate limit hit | Check rate-limiting rules, and whether your own repeated tests triggered it |
| 503 or a challenge page | A bot check or an overloaded server | Check bot-protection settings |
If a bot is refused, find the layer
- Test the origin directly. Send the same request straight to your server's IP, bypassing the CDN. If the origin answers 200 and the public site answers 403, the CDN or firewall is the layer. If both refuse, it is the host or the application. Use
curl --resolve yoursite.com:443:ORIGIN_IP -kwith the bot's user agent. - Check the CDN. On Cloudflare, look at Security events filtered by the bot's name, and at AI Crawl Control, whose Crawlers tab lists AI crawlers with a Block action. Cloudflare also has Configure AI bot policies under Security Settings, with Search, Agent and Training categories, each set to Block, Block on pages with ads, or Allow.
- Check the host. Look at the control panel's firewall or security section and at the access and error logs for the refused requests.
- Check the application. A security plugin or a user-agent rule in .htaccess can do this too.
Note a Cloudflare change that affects the decision. Its documentation says that from 15 September 2026, new domains block bots classed as Training or Agent on pages that show ads, and that its Block options apply to mixed-use crawlers such as Googlebot and Bingbot, so a Block setting can affect search as well as training. Read the options before you switch one on, and check what applies to your domain.
What this test cannot tell you
- It only sends a name. Real crawlers also come from published IP ranges, and some firewalls check both. A 200 on a simulated request does not prove the real crawler gets through, and a simulated 403 may not apply to it.
- It cannot prove a bot is who it says. A user agent is easy to fake. Google documents verifying Googlebot with a reverse and forward DNS lookup or its published IP ranges; Anthropic publishes a list of its crawler IPs; Perplexity recommends allowing its bots by user agent combined with its published IP ranges.
- Blocking by IP can backfire. Anthropic notes that IP-based blocking may not work reliably, because it stops the bot from reading robots.txt.
- Your real evidence is the log. Search the server access log for each bot's name and look at the status codes it actually received.
A worked example: our own check
On 16 October 2026 we ran this test on cheaperstack.com for more than 25 user agents, including every bot in the table. All of them received 200 and the full page, including GPTBot, ClaudeBot, PerplexityBot and CCBot. One did not: Bytespider, ByteDance's crawler, got a 403 on the home page and the CSS file, and at first on some inner pages, and 200 on robots.txt, llms.txt and the sitemap. The 403 page came from the web server. The same request sent straight to the origin returned 200, so the rule sits between the two and not in the site's files.
That is the situation the check exists for: our robots.txt allows Bytespider, and something below it refused. Whether to allow it is a policy choice; the lesson is that the choice should be made in robots.txt and in your firewall at the same time, not by accident in one of them.
Disclosure: This post contains affiliate links. If you sign up through one and later make an eligible purchase, I may earn a commission at no extra cost to you.
What an SEO plugin can and cannot see
Rank Math's MCP tools include a read-only Get robots.txt tool and a Get llms.txt tool, so an assistant can read what your site declares. Neither shows what a firewall does with a request, which is why the curl test and the logs are the checks that matter. The connection steps are in Rank Math MCP with Claude, and the free plugin covers them. Get Rank Math (affiliate link).
Who can skip this
- Sites on a managed platform with no firewall settings. Ask the host what it blocks by default instead.
- Anyone who deliberately blocks AI crawlers. Then verify the block works, and record that it is on purpose.
- New sites with no pages indexed yet. Fix indexing first; see the 90-day plan.
The verdict, by situation
| If you see… | Do this |
|---|---|
| All 200s | Confirm in the logs that real bots reach you; then move on |
| One training bot refused | Decide on purpose; align robots.txt and the firewall |
| A search bot refused (OAI-SearchBot, PerplexityBot, Claude-SearchBot) | Fix it; you are invisible to that assistant's search until you do |
| Origin 200, public 403 | The CDN or firewall is the layer |
| Origin and public both 403 | Host security rules or your application |
| Googlebot or Bingbot affected | Urgent: it also hits normal search; check the CDN's mixed-use crawler setting |
Frequently asked questions
How do I check whether GPTBot or ClaudeBot can reach my site?
Run curl against your own site with each bot's user agent and compare the status code with a normal browser request. A 200 means the server answered; a 403, 406 or 429 means a rule rejected the request. It only simulates the user agent, so confirm with your server logs.
If robots.txt allows a bot, can it still be blocked?
Yes. robots.txt is a request that well-behaved crawlers read. A CDN, a web application firewall, the host's security rules or a plugin can refuse the request before the crawler ever sees your content.
Does a 200 on my test prove the real crawler gets through?
No. A simulated request only sends the bot's name. Real crawlers also come from published IP ranges, and some firewalls check both. Look in your access logs for the real bots' requests and their status codes.
Which AI crawlers should I allow?
To appear in ChatGPT search allow OAI-SearchBot, for Perplexity allow PerplexityBot, and for Claude's search allow Claude-SearchBot. GPTBot and ClaudeBot are training crawlers, and blocking them is a legitimate choice as long as you make it on purpose.
Will Cloudflare's AI bot settings block Googlebot or Bingbot?
They can. Cloudflare's documentation says its Block options apply to mixed-use crawlers, including Applebot, Bingbot and Googlebot, so those settings can affect search as well as training. Read what each option does before switching it on.
Sources
OpenAI's bots documentation; Anthropic's Help Center article on its crawlers; Perplexity's bots guide; Google's guide to verifying Googlebot; and Cloudflare's Block AI Bots and AI Crawl Control documentation. These settings change often, so check the current pages and your own dashboard.
Related
SEO for AI search checklist
What Google says to do and skip, and which AI bots to allow.
GEO vs SEO, explained
What is actually new, and what is not.
Search Console and Bing AI reports
What the free reports show, and what they leave out.
AI crawlers in server logs
18 days of real log data from a new site, with the limits.
Last reviewed . Bot names and CDN settings change often, so this page is re-checked monthly. Spotted one out of date? Tell me.