Skip to content
GEO / AEO practical guide

AI Crawler Access: How to Control GPTBot, ClaudeBot & PerplexityBot

AI crawler access decides whether bots like GPTBot, ClaudeBot and PerplexityBot are allowed to fetch your pages — and if they cannot fetch, your content cannot be cited in ChatGPT, Claude or Perplexity answers. The decision lives in robots.txt, but CDN and firewall rules can override it, so it has to be verified rather than assumed. Allow the AI search crawlers, make a separate deliberate choice about training crawlers, then confirm it with a scan.

Why does AI crawler access matter for GEO and AEO?

Generative Engine Optimization (GEO) and Answer Engine Optimization (AEO) both end at the same bottleneck: an AI system has to fetch your page before it can quote it. ChatGPT search, Claude's web answers, Perplexity and Copilot all run on crawlers with their own names, their own robots.txt tokens and their own crawl schedules — none of them inherit Googlebot's access.

That makes access the cheapest win in GEO. Content that is blocked gets zero citations no matter how good it is, while content that is allowed still has to earn the citation through structure, schema and clarity. Fix access first: it is a one-file change with an immediate effect on whether you are eligible to appear at all.

Each crawler also does a different job. Search crawlers decide your citations, training crawlers decide whether your content feeds a model, real-time fetchers open links a user pasted into a chat, and controls tokens let you opt out of a vendor's AI features without touching search. The per-bot pages document all 12 in detail; this page is about the access decision itself and how to verify it.

The remaining crawlers — ChatGPT-User, Claude-SearchBot, Claude-User, Google-CloudVertexBot, BingPreview and Applebot-Extended — are documented in the full AI bots directory.

How do you check whether AI crawlers can access your site?

  1. 1

    Read every group in your robots.txt

    Open /robots.txt and list the groups: one per matching user-agent token plus the wildcard. Look for an explicit rule for each AI crawler, then check whether the wildcard group disallows paths you want cited.

  2. 2

    Tell fetching apart from indexing

    robots.txt controls fetching. A page can be fetched and still excluded by a <meta name="robots" content="noindex" tag or an X-Robots-Tag response header. Check both before concluding anything from robots.txt alone.

  3. 3

    Run the AuditMe AI visibility scan

    The free scan at /ai-visibility checks whether GPTBot, ClaudeBot and PerplexityBot are allowed by your robots.txt, whether an llms.txt file exists, and whether schema and entity signals are present — and scores those signals 0–100. Be clear about what it is not: it reads your public files and markup, it does not query ChatGPT, Perplexity or Claude, and it cannot report whether you currently appear in their answers.

  4. 4

    Confirm with real requests and logs

    The last word is a request that either succeeds or fails, and a log line that either exists or does not. Fetch the page with the crawler's user-agent, then search your server or CDN logs for those user-agents over the last few weeks.

    curl -A "Mozilla/5.0 (compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)" \
      -o /dev/null -s -w "%{http_code}\n" https://example.com/pricing

    A 200 means the fetch was allowed at the edge and the origin. A 403, 429 or challenge page means something outside robots.txt is in the way.

What should a robots.txt for AI crawlers look like?

robots.txt is a plain file at your domain root, split into groups. Each group starts with a User-agent: line and collects Allow and Disallow paths. A crawler uses the group whose token matches it — including multiple tokens in one group — and falls back to * when nothing matches. Longer, more specific path rules win over shorter ones.

Example 1 — allow the AI answer crawlers

The pattern most content sites want: explicit groups for the crawlers that build AI citations, and a wildcard group that keeps private paths closed for everyone.

# Allow the crawlers that build AI answers and citations
User-agent: OAI-SearchBot
Allow: /

User-agent: Claude-SearchBot
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: Bingbot
Allow: /

# Your own wildcard group: public content open, private areas closed
User-agent: *
Allow: /
Disallow: /account/
Disallow: /admin/
Disallow: /internal-search/

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

Example 2 — opt out of training, keep your citations

Blocking training crawlers only. OAI-SearchBot, Claude-SearchBot and PerplexityBot are untouched, so answers and citations keep working while your content stops being used for training.

# Opt out of model training only — answers and citations keep working
User-agent: GPTBot
Disallow: /

User-agent: ClaudeBot
Disallow: /

# Controls token: Gemini apps + Vertex AI, not Google Search
User-agent: Google-Extended
Disallow: /

Every vendor publishes its own crawlers, and new ones appear over time — the bot directory lists the twelve we track, each with its exact robots.txt rule.

Example 3 — what not to publish

# Too broad: this removes you from every AI answer surface
User-agent: *
Disallow: /

This one file would block every crawler without a dedicated group — AI search, training bots and real-time fetchers alike.

What are the most common AI crawler access mistakes?

1. Blocking every crawler with a wildcard

A single "User-agent: *" group with "Disallow: /" looks like a safe default, but it removes you from every AI answer surface — ChatGPT, Claude, Perplexity and Copilot included — and from Bing. It is also weak protection: scrapers that ignore robots.txt are unaffected, so you give up visibility without gaining security.

# Too broad: this removes you from every AI answer surface
User-agent: *
Disallow: /

2. No AI-specific user-agent groups

Most sites only ever wrote rules for Googlebot. Under RFC 9309 a crawler uses the group whose user-agent token matches it, and falls back to "*" when none matches — so a broad Disallow you added for another reason silently applies to GPTBot, ClaudeBot and PerplexityBot too. Name each AI crawler explicitly if you have made a deliberate decision about it.

3. Treating one vendor's bots as interchangeable

Allowing GPTBot while blocking OAI-SearchBot keeps training open and kills ChatGPT citations — usually the opposite of what a team intends. The same trap exists at Google: Google-Extended governs Gemini apps and Vertex AI, never Google Search or AI Overviews. Decide per crawler, not per company.

4. Assuming a robots.txt edit took effect

robots.txt is re-fetched on each crawler's own schedule and can also be cached at the CDN edge for hours. After a change, a fix can look ignored for a day or more. Verify the live file, purge the CDN cache, then wait for the next crawl before drawing conclusions.

5. Treating robots.txt as a security control

robots.txt is an access convention, not authentication. It never protects private data — keep those routes behind login and server-side rules, and use rate limiting for anything a crawler could hammer. Public marketing pages want the opposite: open access for the crawlers that cite you.

Why can AI crawlers be blocked even when robots.txt allows them?

robots.txt is only the first gate. Anything between the crawler and your origin can refuse the request on its own, and none of those layers read robots.txt the way a crawler does.

  • CDN bot management

    Cloudflare, Fastly and similar services score unfamiliar AI user-agents as suspicious and answer with a challenge or a 403. Your robots.txt says allow; the edge says no.

  • Rate limits

    AI crawlers fetch in bursts. Tight per-IP or per-UA rate rules return 429, and a crawler that keeps getting 429 backs off — so the traffic you expected simply stops arriving.

  • Security plugins and AI blocklists

    WordPress and server security plugins ship presets that block AI crawlers by user-agent, and some also block the real-time fetchers, so links users paste into ChatGPT fail to open.

  • Firewall, geo and IP rules

    Origin firewalls, IP allowlists and geo restrictions apply before your application ever sees the request. A crawler reaching your origin from an unusual range can be dropped outright.

The fix is to test each layer: a direct request with the crawler's user-agent (shown above), then the same check from the crawler's own network where you can observe it, and finally your CDN's bot logs. Robots.txt, CDN rules and noindex tags have to agree before access is real.

Which AI crawlers should you allow or deny?

A starting position for a public content site. The decision column is a recommendation, not a rule — training and controls tokens are policy choices, and each one has a per-crawler page explaining the exact trade-off.

Recommended allow or deny decisions for AI crawlers, with example robots.txt rules
CrawlerWhat it doesRecommendedExample rule
AI search indexing — the bots that decide whether you get cited

Blocking them removes your pages from ChatGPT, Claude, Perplexity, Copilot and Vertex AI answers. Bingbot also carries your classic Bing rankings.

AllowUser-agent: PerplexityBot Allow: /
Real-time fetches when a user opens your link in a chat

These are not bulk crawlers. Blocking them makes links that people paste into ChatGPT or Claude fail to open.

AllowUser-agent: ChatGPT-User Allow: /
Model training and evaluation datasets

Blocking excludes your content from training. ChatGPT and Claude search answers are unaffected either way — those run on the separate search crawlers above.

Your callUser-agent: GPTBot Disallow: / # opt out # or: Allow: / to stay included
Controls tokens for Gemini/Vertex AI and Apple Intelligence

Denying them stops your content being used by those AI features. Google Search, AI Overviews and Apple web search follow their own crawler rules instead.

Your callUser-agent: Google-Extended Disallow: /
  • Wildcard group
Everything else, including crawlers you have never heard of

A wildcard group is where new AI crawlers land when they have no dedicated rule. Keep it open for public content and disallow only private, app or API paths.

Allow public pathsUser-agent: * Allow: / Disallow: /account/ Disallow: /admin/

What should be on your AI crawler access checklist?

  • 1. Fetch the live robots.txt and read every group

    Open https://example.com/robots.txt in a private window. Read the named AI groups and the wildcard group — the wildcard one is what most people forget.

  • 2. Make the allow/deny decision per crawler

    Separate search crawlers (citations), training crawlers (datasets), real-time fetchers (user link opens) and controls tokens. One decision never covers all four.

  • 3. Name the AI user-agents explicitly

    Write a group for each crawler you care about instead of hoping the wildcard group does what you meant.

  • 4. Check the CDN and WAF, not just robots.txt

    Bot-management and challenge rules can return 403 or 429 to AI crawlers even when robots.txt allows them.

  • 5. Check meta robots and X-Robots-Tag

    A page can be fetched but noindexed. That is a different decision from blocking the crawler, and it must be set in HTML or headers, not in robots.txt.

  • 6. Publish llms.txt and structured data

    Access gets you fetched. An llms.txt file and clean schema get you understood and quoted — generate one with the llms.txt Generator.

  • 7. Re-scan and confirm with server logs

    Run the AI visibility scan again, then look for real 200 responses from GPTBot, ClaudeBot and PerplexityBot in your logs.

Frequently asked questions about AI crawler access

What is AI crawler access?

AI crawler access is whether the bots behind AI search and assistants — GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Bingbot and the rest — are permitted to fetch your pages. It is decided in robots.txt, and can be overridden by your CDN, firewall or a noindex tag. If a crawler cannot fetch a page, that page cannot be cited in an AI answer.

Does blocking GPTBot stop ChatGPT from citing me?

No. GPTBot is OpenAI's training crawler. ChatGPT search results come from OAI-SearchBot, and links a user asks ChatGPT to open are fetched by ChatGPT-User. Blocking GPTBot only removes your content from training data; blocking OAI-SearchBot or ChatGPT-User is what removes your citations and link opens.

Does the AuditMe AI visibility scan query ChatGPT or Perplexity?

No. The scan reads public files and markup: it checks whether GPTBot, ClaudeBot and PerplexityBot are allowed by robots.txt, whether an llms.txt file exists, and whether schema and entity signals are present. It does not ask ChatGPT, Perplexity or Claude anything, so it cannot tell you whether you currently appear in their answers — for that you have to check those tools yourself.

Is robots.txt a real barrier or just a request?

It is a protocol that compliant crawlers follow, and it is the mechanism every major AI vendor documents for opting out. It does not stop clients that ignore it, and it cannot protect private data. Use it for policy — what well-behaved crawlers may read — and authentication plus rate limits for security.

What is the difference between robots.txt and llms.txt?

robots.txt controls access: what a crawler may fetch. llms.txt is positive, curated guidance: a markdown map of the pages, docs and policies you want AI systems to read and cite. They complement each other — robots.txt gets you crawled, llms.txt gets you pointed at the right pages.

Does Google-Extended control AI Overviews?

No. Google Search and AI Overviews follow Googlebot rules, exactly like ordinary rankings. Google-Extended is a separate robots.txt token that controls whether Google may use your content in Gemini apps and Vertex AI, independently of Search.

What should you do next?

Scan first — it takes about ten seconds and tells you which of your AI crawler rules are actually in place. Then fix what it flags and re-check.

Last reviewed: October 12, 2026. Example rules are generic — always adapt paths and user-agent tokens to your own site and to each vendor's published crawler list.