Technical SEO & AI Search
A crawler can be allowed in robots.txt and still receive a 403 from your firewall. It can receive a 200 response and still see an empty JavaScript shell. And a request that only claims to be OAI-SearchBot does not prove the genuine OpenAI crawler reached your site.
A proper AI crawler access audit therefore needs three kinds of evidence: what your policy says, what your infrastructure returns, and what genuine crawler activity proves.
By Rahul Saini, Author at Search Counsel Co. Last updated August 2026.
Quick answer: How do I test AI crawler access?
Check five layers: robots.txt permission, CDN/WAF access, HTTP response, initial HTML, and real server logs. For search visibility, test the search/retrieval bots separately from training crawlers—for example OAI-SearchBot vs GPTBot, Claude-SearchBot vs ClaudeBot, PerplexityBot, and Googlebot.
1
Permission
robots.txt
2
Access
CDN / WAF
3
Response
HTTP
4
Readability
Raw HTML
5
Verification
Logs
Core principle: robots.txt permission does not prove network access. Network access does not prove readable content. Readable content does not prove the genuine vendor crawler requested the page. And successful crawling does not guarantee an AI citation.
In this guide
How to Check AI Crawler Access in 5 Steps
- Check robots.txt. Confirm whether the exact crawler and URL path are allowed.
- Check your CDN or firewall. Look for 403s, challenges, rate limiting or bot-management blocks.
- Check the final HTTP response. Confirm that the public URL resolves cleanly.
- Check the initial HTML. Make sure important text and links exist before client-side JavaScript runs.
- Check real logs. Verify genuine crawler activity using server/WAF logs and current vendor verification information.
Fastest diagnosis: if robots.txt says Allow but the crawler receives 403, focus on infrastructure. If the crawler receives 200 but useful text is absent from raw HTML, focus on rendering. If both look correct but you have no real crawler activity, investigate discovery and verified-bot access.
Which AI Crawlers Actually Matter?
Do not treat every AI bot as the same type of crawler. Search/discovery, training and user-triggered retrieval can be separate controls.
| Platform | Search / discovery | Training / model development | User-triggered fetch |
|---|---|---|---|
| OpenAI | OAI-SearchBot | GPTBot | ChatGPT-User |
| Anthropic | Claude-SearchBot | ClaudeBot | Claude-User |
| Perplexity | PerplexityBot | Separate from PerplexityBot | Perplexity-User |
| Google Search | Googlebot | Google-Extended controls certain separate AI uses | Depends on product/workflow |
For the full policy-level setup, including training-vs-retrieval decisions and robots directives, use the AI crawler and robots.txt guide. This page focuses on whether the important URL can actually be reached and read.
The SearchCounselCo AI Crawler Evidence Ladder
Different tests provide different levels of confidence. Do not call all of them “verified crawler access.”
| Evidence level | What it proves | What it does not prove |
|---|---|---|
| 1. robots.txt policy | What compliant crawlers are instructed to do | That the server will actually serve the URL |
| 2. Simulated User-Agent request | How your stack responds to a request claiming that identity | That the genuine vendor crawler can access the page |
| 3. Readable raw HTML | Useful content exists in the returned response | That the vendor actually requested it |
| 4. Verified crawler log | The genuine crawler requested the URL and received a response | That the content will be indexed or cited |
| 5. Search/citation observation | Your content actually surfaced in an observed AI-search result | Every internal crawl or retrieval mechanism used |
AI Crawler Access Troubleshooting Matrix
| What you see | Likely issue | Check next | Action |
|---|---|---|---|
| robots.txt says Allow, bot gets 403 | WAF/CDN/security block | Security events and verified-bot rules | Correct the infrastructure rule |
| Bot gets 429 | Rate limiting | Bot-management policy | Adjust crawler rate rule if access is desired |
| Bot receives 200 but important text is absent | Client-side rendering | Raw HTML | SSR, SSG or appropriate prerendering |
| OAI-SearchBot blocked | ChatGPT Search crawler is opted out | robots + WAF | Allow it if Search visibility is desired |
| GPTBot blocked, OAI-SearchBot allowed | Training disabled, Search allowed | Confirm policy is intentional | No change required if intentional |
| curl gets 200 but real crawler gets 403 | IP/verified-bot rule difference | Real WAF/server logs | Fix verified crawler access |
| AI can summarize URL but no crawler log appears | User fetch, cache or another retrieval path may be involved | Agent type and logs | Do not infer a specific crawler from the summary alone |
“Crawlers Are Not Allowed to Access This Page”: What Does It Mean?
This message does not identify one universal problem. It usually means an automated fetch was denied somewhere in the access path.
| Possible cause | How to identify it |
|---|---|
| robots.txt Disallow | Check the exact crawler group and requested path |
| WAF/firewall block | Look for 403/security events |
| Rate limit | Look for 429 responses |
| Authentication | Check 401/login redirects |
| Challenge page | Compare returned HTML with the expected page |
| JavaScript shell | 200 response but important content missing from raw HTML |
The fastest way to diagnose the error is to identify the first layer where the expected behavior changes.
Are AI Crawlers Like GPTBot Blocked by Default?
Not simply because they are AI crawlers.
Under the Robots Exclusion Protocol, if an applicable user-agent group exists but no rule matches the requested path, that path is allowed. If no applicable group exists, the crawler follows the standard fallback behavior rather than being automatically blocked merely because it is an AI bot.
But robots.txt is only one layer. A CDN, WAF, hosting provider or bot-management system can still block automated crawlers by default even when robots.txt contains no Disallow rule.
Check robots.txt for the Exact Crawler and URL Path
Start with:
Then identify the applicable user-agent group and the rule matching the URL you actually care about.
Do not test only the homepage
robots.txt rules can differ by path.
Allow: /blog/
Disallow: /
In this example, testing only:
does not answer whether:
is crawlable.
RFC 9309 uses the most specific matching path rule. Where equally specific Allow and Disallow rules match, Allow should be used.
For a complete AI crawler policy setup, see robots.txt for the AI era.
What If robots.txt Returns 404, 403 or 500?
The response from robots.txt itself matters.
| robots.txt result | Protocol-level interpretation |
|---|---|
| 200 | Parse and follow the returned rules |
| 4xx unavailable response | The crawler may treat robots.txt as unavailable and access resources |
| 5xx / network failure | A crawler may initially assume complete disallow while the robots file is unreachable |
Vendor implementation details can vary, so use RFC 9309 as the protocol baseline and current platform documentation for crawler-specific behavior.
Check Your WAF, CDN and Cloudflare Rules
robots.txt tells compliant crawlers what they are allowed to request. Your security stack decides whether the request physically reaches the content.
Review:
- custom WAF rules,
- bot-management rules,
- rate limiting,
- managed challenges,
- IP/ASN blocks,
- country restrictions,
- origin firewall rules.
Cloudflare has two different crawler-control layers
Cloudflare can affect AI crawlers through both robots policy and actual edge enforcement.
| Layer | What it does |
|---|---|
| Managed robots.txt | Can add or serve crawler directives at the edge |
| AI Crawl Control / WAF | Can enforce actual access rules and expose crawler-specific analytics |
Important Cloudflare edge case: if the robots.txt file you see live contains rules that are not present in your origin file, check whether Cloudflare’s managed robots feature is modifying the served response.
Check the HTTP Response
| Response | Meaning | Check |
|---|---|---|
| 200 | Successful response | Move to raw HTML |
| 301 / 308 | Permanent redirect | Confirm final destination |
| 403 | Access forbidden | WAF/firewall/verified-bot rules |
| 404 | URL missing | URL/discovery/redirect |
| 429 | Rate limited | Bot-management rate policy |
| 5xx | Server/origin failure | Hosting/application reliability |
If redirects or crawl errors are widespread, continue with the crawl error guide and URL and redirect workflow.
Check Whether Important Content Exists in the Initial HTML
A 200 response can still be almost useless to a crawler that does not execute client-side JavaScript.
Example:
<div id=”app”></div>
<script src=”/app.js”></script>
</body>
A browser may turn that into a complete page after JavaScript runs. A non-rendering crawler may receive only the shell.
Fast raw HTML tests
- Use View Page Source.
- Search for the main H1.
- Search for a unique sentence from the first paragraph.
- Search for key product/service text.
- Search for important internal links.
For the deeper rendering implementation, use the JavaScript SEO guide.
Verify Genuine AI Crawler Activity in Server or WAF Logs
A simulated curl request is useful, but it is not the strongest evidence.
Look for:
- User-Agent,
- requested URL,
- timestamp,
- HTTP status,
- IP address where available,
- security action,
- response time.
Where the vendor publishes official crawler ranges or verification information, use the current vendor source rather than copying an old static IP list into your firewall.
Simulation example
Label it correctly: this is a simulated OAI-SearchBot request. User-Agent strings can be spoofed. Do not call it verified OpenAI access unless genuine crawler activity is confirmed.
OpenAI, Claude, Perplexity and Google: Important Differences
OpenAI: OAI-SearchBot vs GPTBot
OAI-SearchBot is associated with surfacing websites in ChatGPT Search, while GPTBot is the separate crawler used for content that may be used in foundation-model development.
A publisher can therefore allow Search while blocking training if that matches its policy.
After changing OpenAI robots rules: OpenAI currently says its Search systems may take roughly 24 hours to adjust to robots.txt changes. A failed re-test five minutes after an update does not necessarily mean the change failed.
Anthropic: Claude-SearchBot vs ClaudeBot
Claude-SearchBot is the search-oriented crawler, while ClaudeBot is associated with automated crawling for model-development purposes. Treat those policies separately.
PerplexityBot
PerplexityBot is designed to surface and link websites in Perplexity search results. Perplexity also publishes current crawler information for sites that need to configure WAF access.
Googlebot vs Google-Extended
| Claim | Correct interpretation |
|---|---|
| Blocking Google-Extended blocks AI Overviews | No |
| Googlebot controls normal Google Search crawling | Yes |
| Google-Extended is a separate AI-use control | Yes |
Do AI Crawlers Execute JavaScript?
Do not assume every crawler behaves like Googlebot.
Vercel and MERJ measured several major AI crawlers—including OpenAI, Anthropic and Perplexity agents—and reported that those non-Google crawlers did not execute JavaScript in the tested dataset.
Some crawlers fetched JavaScript resources, but fetching a script is not the same as executing it and rendering the page.
Do not treat this as a permanent protocol guarantee. Crawler implementations can change. Use current vendor documentation and your own response/log testing for important decisions.
AI Crawler Access Audit Worksheet
Use one row per important crawler and URL.
| Bot | Purpose | URL | robots rule | Simulated HTTP | Raw HTML | Real log hit? | Verified identity? | Action |
|---|---|---|---|---|---|---|---|---|
| OAI-SearchBot | Search | /important-page/ | — | — | — | — | — | — |
What to Check After Fixing AI Crawler Access
Do not expect an immediate citation because a 403 became a 200.
Monitor the sequence:
- Successful genuine crawler requests.
- Coverage of the URLs you actually care about.
- Readable server-delivered content.
- AI-search visibility, mentions or citations over time.
- Business value from any resulting traffic.
For the next measurement step, use how to track AI visibility.
robots.txt Says Allow—but AI Crawlers Still Fail?
The failure may be in your WAF, CDN, redirects, HTTP responses, JavaScript delivery, or crawler verification rather than your content itself.
AI Crawler Access FAQ
How do I check which AI bots can access my website?
Check the exact crawler and URL across robots.txt, WAF/CDN rules, HTTP response, raw HTML and server logs. Use genuine crawler verification where the vendor provides it.
How do I detect AI crawler blocking?
Look for a mismatch between policy and response. If robots.txt says Allow but the request gets 403, investigate WAF or CDN rules. A 429 suggests rate limiting. A 200 with missing content suggests a rendering/readability problem.
Are AI crawlers blocked by default?
Not automatically by robots.txt simply because they are AI crawlers. However, hosting, CDN and WAF products can apply separate automated-bot blocking defaults, so always test the actual infrastructure response.
What is the difference between OAI-SearchBot and GPTBot?
OAI-SearchBot is associated with ChatGPT Search discovery, while GPTBot is a separate crawler used for content that may be used in model development. Their robots policies can be controlled independently.
Can robots.txt allow a crawler while Cloudflare blocks it?
Yes. robots.txt expresses crawler policy, while Cloudflare or another WAF can enforce separate network-level access rules.
Is a curl User-Agent test enough to prove crawler access?
No. It is a simulation because User-Agent strings can be spoofed. Real verification should use server/WAF logs plus vendor-published verification information where available.
Does Google-Extended control AI Overviews?
No. Google says normal Googlebot crawling controls Search, including Google’s AI features in Search. Google-Extended is a separate control for certain other Google AI uses.
Do AI crawlers run JavaScript?
Measured research has found several major non-Google AI crawlers did not execute JavaScript in the tested dataset. Because implementations can change, test important content in raw HTML and verify current behavior.
Official Sources and Further Reading
- OpenAI crawler documentation
- Anthropic crawler documentation
- Perplexity crawler documentation
- Google Search Central: AI features and your website
- Cloudflare AI Crawl Control bot reference
- RFC 9309: Robots Exclusion Protocol
- Vercel & MERJ: The Rise of the AI Crawler
Editorial note: AI crawler names, IP ranges, crawler behavior and WAF defaults can change. Recheck current vendor documentation before making security or access-control changes. A simulated User-Agent response is not equivalent to verified genuine crawler access, and crawlability does not guarantee AI-search citation or ranking.
Final Takeaway: Test Policy, Reachability and Real Evidence Separately
AI crawler access is not one yes-or-no setting.
First check what robots.txt says for the exact bot and URL path. Then test whether your infrastructure actually serves the request. Confirm that useful content exists in the returned HTML. Finally, verify genuine crawler activity in logs where possible.
Keep the distinctions clear:
- robots permission is not physical access;
- a simulated User-Agent is not verified crawler identity;
- HTTP 200 is not proof of readable content;
- readable content is not proof of citation;
- GPTBot is not OAI-SearchBot;
- ClaudeBot is not Claude-SearchBot;
- Google-Extended is not Googlebot.
For complete policy configuration, continue with the AI crawler and robots.txt guide. For rendering problems, use the JavaScript SEO guide. After crawl access is working, continue with AI visibility tracking.
