AI agents visiting your site: how to tell and what they want
How to spot AI crawlers, user-triggered fetchers and browser agents in your logs, verify they are genuine, and what each kind of AI visitor wants from you.
ASDK TeamPublished 8 min read
On this page
TL;DR
- AI visitors come in four kinds: training crawlers, search crawlers, user-triggered fetchers and browser agents. They want different things and follow different rules.
- Most declared bots name themselves in the user agent (
GPTBot,OAI-SearchBot,ClaudeBot,PerplexityBot) and publish IP ranges you can check. Browser agents often look exactly like Chrome. - The strongest signal, where it exists, is a cryptographic signature (Web Bot Auth). Combine logs, IP checks, signatures and analytics before you decide what to allow.
Four kinds of AI visitors
Not every AI crawlerAn AI crawler is a bot run by an AI company that fetches web pages to train models, build an AI search index or answer a user's question in real time. is doing the same job. Operators now document separate bots by purpose, and the split matters for both detection and policy.
| Kind | What it does | Example tokens | Follows robots.txt? |
|---|---|---|---|
| Training crawler | Collects pages that may be used to train models | GPTBot, ClaudeBot, meta-externalagent, CCBot | Yes, per the operators |
| Search crawler | Builds the index an AI search product cites | OAI-SearchBot, Claude-SearchBot, PerplexityBot | Yes, per the operators |
| User-triggered fetcher | Fetches a page because a person asked a question right now | ChatGPT-User, Claude-User, Perplexity-User, Google-Agent | Often not — see below |
| Browser agent | Operates a real browser to complete a task for a person | Often none: the browser's normal user agent | Not applicable; it behaves like a visitor |
The robots.txt column is where operators differ. Google says its user-triggered fetchers "generally ignore robots.txt rules" because a user requested the fetch (Google). OpenAI says that for ChatGPT-User, "robots.txt rules may not apply" (OpenAI). Perplexity says Perplexity-User "generally ignores robots.txt rules" (Perplexity), and Meta says its fetcher "may bypass robots.txt rules" (Meta). Anthropic, by contrast, says all three of its bots honor robots.txt (Claude Help Center).
Google is a special case on the crawler side. Google-Extended "doesn't have a separate HTTP request user agent string": Google crawls with its usual bots, and the token in robots.txt only controls whether content is used for Gemini training and grounding (Google). You will never see it in your logs.
How to tell: four levels of evidence
1. The user agent string
Declared bots put their name in the User-Agent header. In an access log they look like this (IP addresses replaced with documentation ranges):
203.0.113.10 - - [20/Oct/2026:09:14:02 +0000] "GET /pricing HTTP/1.1" 200 18234 "-" "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot"
203.0.113.27 - - [20/Oct/2026:09:15:40 +0000] "GET /docs/api HTTP/1.1" 200 40211 "-" "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot"
198.51.100.4 - - [20/Oct/2026:09:16:11 +0000] "GET /integrations HTTP/1.1" 200 22870 "-" "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)"A user agent is a claim, not proof. Anyone can send it. Common Crawl warns that it is "aware of crawlers falsely identifying themselves as CCBot" (Common Crawl), and the same applies to every well-known name.
2. Published IP ranges and reverse DNS
Most operators publish the addresses their bots use, so you can confirm a claimed identity:
| Operator | Where the ranges are |
|---|---|
| OpenAI | openai.com/gptbot.json, openai.com/searchbot.json, openai.com/chatgpt-user.json |
| Anthropic | claude.com/crawling/bots.json |
| Perplexity | perplexity.com/perplexitybot.json, perplexity.com/perplexity-user.json |
Separate lists per crawler type; Google-Agent uses user-triggered-agents.json | |
| Common Crawl | index.commoncrawl.org/ccbot.json, plus reverse DNS to crawl.commoncrawl.org |
A request that says GPTBot but comes from an address outside OpenAI's list is not OpenAI. Many CDNs and bot-management tools do this check for you and label such traffic as verified or not.
IP checks have limits. Cloudflare points out that IP-based identity is "brittle": addresses are shared across services and users, and they change when infrastructure changes (Cloudflare).
3. Cryptographic signatures (Web Bot Auth)
The newer approach is to have the agent sign each request. Web Bot Auth builds on RFC 9421, HTTP Message Signatures: the agent adds Signature and Signature-Input headers, and a Signature-Agent header that says where to fetch its public keys. The bot-specific parts are still IETF drafts, while RFC 9421 itself is a published standard.
Two examples of operators using it, as of October 2026:
- OpenAI says the cloud browser in ChatGPT Work "uses Web Bot Auth to sign outbound HTTP requests," with
Signature-Agentset to"https://chatgpt.com"and public keys atchatgpt.com/.well-known/http-message-signatures-directory(OpenAI Help Center). - Google says it is "experimenting with the Web Bot Auth protocol" for
Google-Agent, using the identityhttps://agent.bot.goog.
A signed request looks roughly like this (values shortened):
Signature-Agent: "https://chatgpt.com"
Signature-Input: sig1=("@authority" "signature-agent");created=1792487642;expires=1792487942;keyid="...";tag="web-bot-auth"
Signature: sig1=:Zm9vYmFy...:You rarely verify these yourself. Cloudflare, Akamai and other edge providers check signatures and expose the result as a bot category. Cloudflare's documentation notes that as of July 1, 2026, it treats signed agents as verified and tracks whether a bot has a single operator ("Direct") or is "an agentic service that a wide range of end users can operate" ("Intermediary") (Cloudflare).
4. Behavior and referrals
Some agents leave no label at all. An agentic browserAn agentic browser is a web browser with a built-in AI agent that can read pages and act on them for its user: clicking, filling in forms and finishing tasks. feature running in the visitor's own browser — Google's auto browse in Chrome, for example, which "handles multi-step chores on your behalf" (Google) — sends that browser's normal headers and cookies. To your server it is a regular visit. The clues, if any, are behavioral: very fast form completion, unusual navigation paths, no scrolling. They are not reliable enough to block on.
There is one place where you can get a clear signal from a browser agent: your own forms. If you mark a form up for WebMCP and an agent submits it through that interface, Chrome sets agentInvoked to true on the submit event. Logging that flag next to your normal form analytics tells you how many submissions came through an agent, without guessing from behavior. It only covers agents that use WebMCP, which as of October 2026 is an origin trial, so treat it as a sample, not a census.
The human side of AI traffic is easier to see. Google Analytics assigns sessions referred by assistants such as ChatGPT, Gemini, Deepseek, Copilot or Grok to an "AI Assistant" channel, while Google's own AI Overviews and AI Mode count as Organic Search (GA4 channel definitions). When an app strips the referrer, the visit lands in Direct.
What each kind of visitor wants
- Training crawlers want lots of text and will fetch widely. They give nothing back directly. Whether to allow them is a business decision about your content, not a technical one.
- Search crawlers want the pages an AI search product can cite: product, pricing, docs, comparisons. Blocking them removes you from answers. OpenAI, for example, says sites opted out of
OAI-SearchBot"will not be shown in ChatGPT search answers." - User-triggered fetchers want one page, now, to answer one person's question. They need fast responses and content in the HTML. A 403 or a bot challenge here means a buyer's question went unanswered.
- Browser agents want to finish a task: compare plans, fill a form, book a call. They need labeled fields, stable layouts and no pop-ups in the way. This is where WebMCP fits: it lets your page hand the agent named actions instead of making it guess.
The volume is real. Cloudflare's September 2026 network data shows daily AI agent requests up more than 1,700% in a year, and requests with a stated training purpose rising from 22% of crawler requests in spring 2025 to 52% by June 2026. Site owners already treat the two very differently: fewer than 1% of sites on Cloudflare block search crawlers, while 17% block training.
A starting policy by visitor type
Once you know who is visiting, set a policy per purpose rather than per company. A reasonable default for a B2B site that wants to be found and cited:
| Visitor type | Default | Why |
|---|---|---|
| Search crawlers | Allow | They decide whether AI search products can cite you |
| User-triggered fetchers | Allow, rate-limit if needed | Each request is a person asking about you right now |
| Browser agents | Allow; protect consequential actions | They complete tasks for real visitors; confirm purchases and deletions |
| Training crawlers | Your choice | No direct traffic in return; a content-licensing decision |
| Unverified traffic using a known bot name | Treat as unknown | Bot names are easy to fake; apply your normal bot rules |
Write the crawler parts of this policy into robots.txt and the rest into your firewall or CDN rules, then recheck the logs a month later to confirm each group gets the response you intended.
A log review you can do this week
Export a week of access logs
From your web server, CDN or hosting dashboard. You need at least the time, path, status code, IP and user agent.
Count AI user agents
A quick tally over a combined log file:
grep -oEi "gptbot|oai-searchbot|chatgpt-user|claudebot|claude-searchbot|claude-user|perplexitybot|perplexity-user|google-agent|meta-externalagent|meta-externalfetcher|ccbot" access.log \
| tr '[:upper:]' '[:lower:]' | sort | uniq -c | sort -rnCheck the status codes they got
Filter each bot's requests and look for 403, 429 and 5xx responses. A search bot that gets blocked by your firewall is invisible in robots.txt reviews but decides whether you appear in answers.
Verify the big names
Spot-check a few IPs per bot against the operator's published list, or turn on your CDN's verified-bot labels. Treat unverified traffic that claims a famous name as unknown.
Look at what they read
Group requests by path. If user-triggered fetchers keep hitting your pricing and docs, those pages are being used to answer buyers' questions — make sure they are current.
Common misreads
- "Googlebot is classic search, so it isn't AI." Google's own AI features documentation says AI is built into Search and that robots.txt rules for Googlebot are the control for AI Overviews and AI Mode. The same crawl feeds both.
- "No GPTBot hits means OpenAI isn't reading us." OpenAI notes that if a site allows both of its crawlers, "we may use the results from just one crawl for both use cases." Look for
OAI-SearchBotandChatGPT-Usertoo. - "A visit from chatgpt.com is a bot." A referral in analytics is a person who clicked a link in an answer. The bot fetch that produced the answer is in your server logs, not in analytics.
- "Blocking in robots.txt stops all AI access." It stops crawlers that honor it. User-triggered fetchers from several operators may not apply it, and browser agents are ordinary visits.
Where sources disagree
The line between "bot" and "agent acting for a person" is contested. In August 2025, Cloudflare reported that when Perplexity's declared bots were blocked, it observed undeclared crawlers fetching the same sites with a generic Chrome user agent, and removed Perplexity from its verified bot list (Cloudflare). Perplexity disputed the analysis and argued that user-driven agents, which fetch a page only when a person asks, should not be treated like crawlers (Perplexity).
You do not need to settle that debate to run a website. Decide what you allow per purpose, verify identities where you can, and keep the pages buyers' agents read accurate. The policy side is covered in robots.txt for AI bots; the readiness side in the agent-ready website checklist.
Try the Agent-Ready agent in early access
Makes your site readable and usable for ChatGPT, Gemini, Claude and other AI agents.
Every AI agentAn AI agent is software that uses a language model to reach a goal by choosing its own next steps, calling tools and reacting to the results. that reaches your site was sent by someone: a company building a model, a search product, or a person with a question. Knowing which is which is the first step to serving the ones that bring you business.
Frequently asked questions
How can I tell if ChatGPT visited my website?
Search your server or CDN logs for GPTBot, OAI-SearchBot and ChatGPT-User in the user agent, then check the request IP against the JSON lists OpenAI publishes for each bot. Human visits referred by ChatGPT appear in analytics.
Can AI agents pretend to be normal browsers?
Yes. Agents that run inside a person's own browser send that browser's normal user agent, and some cloud agents do too. Cryptographic signatures, such as Web Bot Auth, are the most reliable way to identify agents that choose to sign.
Do AI agents follow robots.txt?
Crawlers that build indexes or training sets generally do. Fetchers triggered by a user often do not: Google, OpenAI, Perplexity and Meta all document that their user-requested fetches may not apply robots.txt rules. Anthropic says its bots honor it.
Should I block AI agents?
Usually not all of them. Blocking training crawlers is a reasonable choice, but blocking search bots and user-triggered fetchers removes you from AI answers and from tasks people ask agents to do on your site.
Sources
Pages we read for this article, with the date we checked each one.
- Overview of OpenAI crawlers — accessed October 20, 2026
- Does Anthropic crawl data from the web, and how can site owners block the crawler? — Claude Help Center — accessed October 20, 2026
- Perplexity crawlers — Perplexity documentation — accessed October 20, 2026
- Google's user-triggered fetchers — Google Crawling Infrastructure — accessed October 20, 2026
- Google's common crawlers (including Google-Extended) — Google Crawling Infrastructure — accessed October 20, 2026
- Meta web crawlers — Meta for Developers — accessed October 20, 2026
- CCBot — Common Crawl — accessed October 20, 2026
- ChatGPT Work's Cloud browser allowlisting — OpenAI Help Center — accessed October 20, 2026
- Forget IPs: using cryptography to verify bot and agent traffic — Cloudflare blog (May 2025) — accessed October 20, 2026
- Verified bots — Cloudflare documentation — accessed October 20, 2026
- RFC 9421: HTTP Message Signatures — accessed October 20, 2026
- The Internet has a second audience — Cloudflare blog (September 2026) — accessed October 20, 2026
- The new era of browsing: Putting Gemini to work in Chrome — Google blog (January 2026) — accessed October 20, 2026
- AI features and your website — Google Search Central — accessed October 20, 2026
- [GA4] Default channel group — Google Analytics Help — accessed October 20, 2026
- Perplexity is using stealth, undeclared crawlers to evade website no-crawl directives — Cloudflare blog (August 2025) — accessed October 20, 2026
- Agents or bots? Making sense of AI on the open web — Perplexity blog (August 2025) — accessed October 20, 2026