CrawlCheck
Reference · every agent that reads the web

Every agent that reads the web, and whether a request is really it.

In one sentence

This is the identity reference CrawlCheck keeps for the agentic web: every named crawler and fetcher it resolves from a site’s robots.txt and probes for, grouped by what each one is for — answer engines that live-fetch pages to quote them, search indexers, training-data collectors, regional search, social previews and SEO tools — with the operator, the user-agent string, how to verify a request against the IP ranges the operator publishes, and how each agent has actually behaved where it was measured (verified requests, forged claims, robots.txt conduct, request rate, and how many other sites checked it). Sites read it to decide what to serve; agents read it to decide what to trust; both can call the same answers at /api/v1/visitor, /api/v1/conduct, /api/v1/rights-feed and /api/tool/robots with no key.

115

named agents resolved from robots.txt

16

identities sent to your homepage on every scan

46/115

verifiable against a published range

129,796

verified requests measured here, 1,271 forged claims

Why the grouping matters

1One operatorOpenAIGPTBottrains the modelblock it: keeps pages out of trainingOAI-SearchBotbuilds the search indexblock it: you leave ChatGPT searchChatGPT-Userfetches live when askedblock it: you cannot be quoted

Three names, three permissions. A single Disallow aimed at the wrong one gives away training data you meant to keep, or removes you from answers you meant to appear in. Google (Google-Extended) and Apple (Applebot-Extended) split the same way.

The identity reference for the agentic web, read by sites deciding what to serve and by agents deciding what to trust: every crawler and fetcher this verification layer recognises — 115 policy identities resolved from robots.txt, of which 15 are represented by requests in the full scan — grouped by what each one is for, with how a request wearing the name is checked against the ranges its operator publishes, and how each agent has actually behaved where it was measured. The same company usually sends three different crawlers for three different purposes, and blocking one does not do what people expect the others to do.

For sites and for agents

The reference, as calls

Public, no key, nothing counted against a plan. Visitor Resolve and the conduct record are signed and verify offline.

One request

Is this request really the agent it names?

An address and a user-agent in, one of three outcomes out: verified against the operator’s published ranges, spoofed, or unverifiable because the operator publishes none. Never two.

GET /api/v1/visitor?ip=&ua=

Visitor Resolve →

Conduct

How has it behaved where it was measured?

Per agent, from verified requests only: whether it fetched a path robots.txt disallows, its busiest minute, how often its name is forged, and how many other sites checked it.

GET /api/v1/conduct

The conduct record →

Rights

What may it do with what it reads?

Every site’s declared rights per use — train, ground, summarize, cite, transact — resolved from the signals it publishes, as a feed a crawler operator can read once a day.

GET /api/v1/rights-feed

The rights feed →

One site

What does a robots.txt give each agent?

One fetch of the file, then every named agent resolved the way a crawler resolves it: its own group only, longest match, allow wins a tie, at the path you choose.

GET /api/tool/robots?domain=&path=

The resolver →

Measured here · since 12 August 2026

What each agent actually did

A census of this property, not a sample of the web: every request that named an agent, checked at arrival against the ranges its operator publishes. Conduct is judged from verified requests only. Signed at /api/v1/conduct.

AgentOperatorVerified requestsForged share · claimsrobots.txtRateChecked by other sites, 14 d
AmazonbotAmazon27,2950.4% · 119disallowed paths fetchedpeak 34/min—
PerplexityBotPerplexity22,8750.4% · 93disallowed paths fetchedpeak 119/min205 · 83 spoofed
AhrefsBotAhrefs10,9120.0% · 3disallowed paths fetchedpeak 64/min—
GooglebotGoogle10,5862.0% · 219respectedpeak 13/min1586 · 444 spoofed
ApplebotApple10,4990.8% · 84disallowed paths fetchedpeak 8/min584 · 47 spoofed
YandexBotYandex10,3230.2% · 19respectedpeak 26/min—
ClaudeBotAnthropic10,2771.1% · 113disallowed paths fetchedpeak 61/min273 · 97 spoofed
BingbotMicrosoft8,2790.6% · 50disallowed paths fetchedpeak 8/min869 · 85 spoofed
GPTBotOpenAI7,3352.2% · 165never read robots.txtpeak 120/min335 · 311 spoofed
OAI-SearchBotOpenAI6,7941.5% · 103respectedpeak 119/min905 · 67 spoofed
ChatGPT-UserOpenAI1,5255.5% · 88not governedpeak 13/min123 · 32 spoofed
SeznamBotSeznam9490.0%respectedpeak 3/min—
BaiduspiderBaidu5595.9% · 35never read robots.txtpeak 5/min—
Google-CWSGoogle3910.0%not governedpeak 3/min—
CCBotCommon Crawl3790.0%respectedpeak 7/min—
Google-InspectionToolGoogle2342.1% · 5respectedpeak 7/min1 · 1 spoofed
Google-AgentGoogle2170.0%not governedpeak 17/min—
DuckDuckBotDuckDuckGo1470.0%never read robots.txtpeak 2/min—
Claude-UserAnthropic9736.2% · 55not governedpeak 3/min34 · 34 spoofed
GoogleOtherGoogle870.0%respectedpeak 3/min1 · 1 spoofed
Perplexity-UserPerplexity985.2% · 52insufficient datapeak 1/min22 · 22 spoofed
Google-NotebookLMGoogle70.0%insufficient datapeak 4/min—
Google-Read-Aloud—70.0%insufficient datapeak 3/min—
YetiNaver60.0%insufficient datapeak 1/min—
AdsBot-GoogleGoogle40.0%insufficient datapeak 2/min—
Google-Site-VerificationGoogle20.0%insufficient datanot yet measured—
Google-Safety—10.0%insufficient datapeak 1/min—

Counted, never judged: Meta-ExternalAgent 67,933 · SemrushBot 22,178 · DataForSeoBot 13,651 · Bytespider 9,964 · YouBot 2,058 · cohere-ai 51 · and 7 more — their operators publish no address ranges, so none of these requests can be told from an impersonator.

This page is the reference. The measurement is separate: a scan sends 19 request profiles to your homepage — GPTBot, ClaudeBot, OAI-SearchBot, Claude-SearchBot, PerplexityBot, ChatGPT-User, Claude-User, Perplexity-User, Googlebot, Googlebot Smartphone, Bingbot, Applebot, Amazonbot, Bytespider, Meta-ExternalAgent, CCBot, plus an unnamed client and two mobile-browser controls; the other named agents below are resolved from your robots.txt, not sent — and records what each one was actually served. A difference between two of them is your edge deciding what each one gets. It also resolves every named agent in your own robots.txt into what it is permitted to do, which is how a policy someone wrote two years ago turns out to say something they did not intend.

Quick facts

Every named crawler, its operator, its feed

Operator, purpose, and whether that operator publishes the IP ranges that make a claimed identity checkable. A crawler with no published feed is unverifiable here — never counted as forged.

Crawler
GPTBot
Operator
OpenAI
What it is for
Training and index crawl for ChatGPT
Published IP ranges
openai.com/gptbot.json
Crawler
OAI-SearchBot
Operator
OpenAI
What it is for
Search index behind ChatGPT answers
Published IP ranges
openai.com/searchbot.json
Crawler
ChatGPT-User
Operator
OpenAI
What it is for
Fetches a page because a user asked for it in a chat
Published IP ranges
openai.com/chatgpt-user.json
Crawler
ClaudeBot
Operator
Anthropic
What it is for
Index and training crawl
Published IP ranges
claude.com/crawling/bots.json
Crawler
Claude-User
Operator
Anthropic
What it is for
Fetches a page on a user's request
Published IP ranges
claude.com/crawling/bots.json
Crawler
Claude-SearchBot
Operator
Anthropic
What it is for
Search retrieval
Published IP ranges
claude.com/crawling/bots.json
Crawler
PerplexityBot
Operator
Perplexity
What it is for
Index crawl
Published IP ranges
www.perplexity.ai/perplexitybot.json
Crawler
Perplexity-User
Operator
Perplexity
What it is for
User-triggered fetch
Published IP ranges
www.perplexity.ai/perplexity-user.json
Crawler
Googlebot
Operator
Google
What it is for
Search index crawl
Published IP ranges
developers.google.com/static/crawling/ipranges/common-crawlers.json
Crawler
Google-Extended
Operator
Google
What it is for
Training permission token, not a separate crawler
Published IP ranges
robots.txt control token only — it never appears in a request, so there is no request to verify
Crawler
Bingbot
Operator
Microsoft
What it is for
Search index crawl
Published IP ranges
www.bing.com/toolbox/bingbot.json
Crawler
Applebot
Operator
Apple
What it is for
Search and Siri index crawl
Published IP ranges
search.developer.apple.com/applebot.json
Crawler
Applebot-Extended
Operator
Apple
What it is for
Training permission token, not a separate crawler
Published IP ranges
search.developer.apple.com/applebot.json
Crawler
Amazonbot
Operator
Amazon
What it is for
Alexa and shopping index crawl
Published IP ranges
developer.amazon.com/amazonbot/ip-addresses/
Crawler
Meta-ExternalAgent
Operator
Meta
What it is for
Training and preview fetch
Published IP ranges
no JSON feed — Meta publishes its crawler ranges as ASN AS32934 (whois -h whois.radb.net -- '-i origin AS32934')
Crawler
Bytespider
Operator
ByteDance
What it is for
Training crawl
Published IP ranges
none published — claims from this identity are unverifiable
Crawler
CCBot
Operator
Common Crawl
What it is for
Open crawl corpus many models train on
Published IP ranges
index.commoncrawl.org/ccbot.json
Crawler
Amzn-SearchBot
Operator
Amazon
What it is for
Amazon search eligibility (Alexa and shopping search); not used for generative-AI training
Published IP ranges
developer.amazon.com/amazonbot/searchbot-ip-addresses/
Crawler
Amzn-User
Operator
Amazon
What it is for
Live fetch for a user action such as an Alexa question
Published IP ranges
developer.amazon.com/amazonbot/live-ip-addresses/
Crawler
MistralAI-Index
Operator
Mistral
What it is for
Index crawl for Mistral search and Vibe answers; not used for training
Published IP ranges
mistral.ai/mistralai-index-ips.json
Crawler
MistralAI-User
Operator
Mistral
What it is for
Live fetch at a user’s request in Le Chat
Published IP ranges
mistral.ai/mistralai-user-ips.json
Crawler
MistralAI-Training
Operator
Mistral
What it is for
Training crawl only; not used for index or live answers
Published IP ranges
no published ranges — a request wearing this name cannot be checked
Crawler
OAI-AdsBot
Operator
OpenAI
What it is for
Validates pages submitted as ChatGPT ads; visits only submitted pages
Published IP ranges
openai.com/adsbot.json
Crawler
Google-Agent
Operator
Google
What it is for
User-triggered agent that navigates and acts on the web from Google infrastructure
Published IP ranges
developers.google.com/static/crawling/ipranges/user-triggered-agents.json
Crawler
Google-GeminiNotebook
Operator
Google
What it is for
Fetches URLs a Gemini Notebook user supplied (replaces Google-NotebookLM)
Published IP ranges
developers.google.com/static/crawling/ipranges/user-triggered-fetchers-google.json
Crawler
GoogleOther-Image
Operator
Google
What it is for
Google common crawler for public image URLs, governed by the GoogleOther family
Published IP ranges
developers.google.com/static/crawling/ipranges/common-crawlers.json
Crawler
GoogleOther-Video
Operator
Google
What it is for
Google common crawler for public video URLs, governed by the GoogleOther family
Published IP ranges
developers.google.com/static/crawling/ipranges/common-crawlers.json
Crawler
KlaviyoAIBot
Operator
Klaviyo
What it is for
Retrieves and indexes public sources connected to Klaviyo Customer Agent
Published IP ranges
Web Bot Auth; validate signed requests against Klaviyo’s public key directory
Crawler
ExaSearchBot
Operator
Exa
What it is for
Index crawl for Exa’s AI-oriented search and retrieval; honours robots.txt
Published IP ranges
Web Bot Auth — every request is cryptographically signed; directory at crawler.exa.ai/.well-known/http-message-signatures-directory
By purpose

Every agent CrawlCheck checks

Named agents per purpose, counted from this page’s own tables — 115 in total

Answer17Search24Training46Regional7Social6SEO15Answer17Search24Training46Regional7Social6SEO15

Six groups, and the grouping is the point: an agent that trains a model, one that builds a search index and one that fetches your page at the moment a person asks a question are three different things with three different consequences. The third column is the one to read — it says whether a request wearing that name can be checked at all.

17 agents

Answer engines

These decide whether a chatbot can reach you, read you and quote you. Refusing one of these is the only kind of block that costs you answers.

User-agentWhat it isIdentityHow to verify it
Meta-ExternalFetcherMeta AI live fetchuser-triggered fetch · unverifiablenot published — a request wearing this name cannot be checked
MistralAI-UserLe Chat live fetchuser-triggered fetchmistral.ai/mistralai-user-ips.json
DuckAssistBotDuckDuckGo DuckAssistanswer-engine crawlerpublished IP ranges
YouBotYou.com indexanswer-engine crawler · unverifiablenot published — a request wearing this name cannot be checked
OAI-SearchBotChatGPT search indexanswer-engine crawleropenai.com/searchbot.json
ChatGPT-UserChatGPT live fetchuser-triggered fetchopenai.com/chatgpt-user.json
Claude-SearchBotClaude search indexanswer-engine crawlerpublished IP ranges
Claude-UserClaude live fetchuser-triggered fetchpublished IP ranges
PerplexityBotPerplexity indexanswer-engine crawlerpublished IP ranges
Perplexity-UserPerplexity live fetchuser-triggered fetchpublished IP ranges
Gemini-Deep-ResearchGemini research agentuser-triggered fetch · unverifiablenot published — a request wearing this name cannot be checked
PhindBotPhindanswer-engine crawler · unverifiablenot published — a request wearing this name cannot be checked
KagibotKagianswer-engine crawler · unverifiablenot published — a request wearing this name cannot be checked
Copilot-UserMicrosoft Copilot fetchuser-triggered fetch · unverifiablenot published — a request wearing this name cannot be checked
Amzn-UserAmazon live fetch for Alexa questionsuser-triggered fetchdeveloper.amazon.com/amazonbot/live-ip-addresses
Google-AgentGoogle user-triggered agent, acts on the webuser-triggered fetchuser-triggered-agents.json, plus Web Bot Auth on part of its traffic
Google-GeminiNotebookGemini Notebook user-supplied URL fetchuser-triggered fetchuser-triggered-fetchers-google.json (Google-owned user-triggered fetchers)
User-agentWhat it isIdentityHow to verify it
GooglebotGoogle Search / AI Overviewssearch index crawlerreverse DNS to googlebot.com
bingbotBing / Copilotsearch index crawlerreverse DNS to search.msn.com
ApplebotApple / Sirisearch index crawlerreverse DNS to applebot.apple.com
AmazonbotAmazonsearch index crawlerdeveloper.amazon.com/amazonbot/ip-addresses
Googlebot-ImageGoogle image crawlersearch index crawlerGoogle common-crawler ranges (shared feed) + reverse DNS
Googlebot-NewsGoogle Newssearch index crawlerGoogle common-crawler ranges (shared feed) + reverse DNS to googlebot.com or google.com
Googlebot-VideoGoogle video crawlersearch index crawlerGoogle common-crawler ranges (shared feed) + reverse DNS
Storebot-GoogleGoogle Shoppingsearch index crawlerGoogle special-crawler ranges (shared feed) + reverse DNS
Mediapartners-GoogleGoogle AdSensesearch index crawlerGoogle special-crawler ranges (shared feed) + reverse DNS to google.com
APIs-GoogleGoogle push deliverysearch index crawlerGoogle special-crawler ranges (shared feed) + reverse DNS to google.com
BingPreviewBing page previewsearch index crawlerreverse DNS to search.msn.com, then forward DNS back to the same address
msnbotMicrosoft legacy crawlersearch index crawlerreverse DNS to search.msn.com, then forward DNS back to the same address
SlurpYahoo Slurpsearch index crawlerreverse DNS to crawl.yahoo.net, then forward DNS back to the same address
YandexYandex (umbrella token)search index crawlerreverse DNS to yandex.ru, yandex.net or yandex.com, then forward DNS back to the same address
coccocbot-webCoc Cocsearch index crawler · unverifiablenot published — a request wearing this name cannot be checked
DuckDuckBotDuckDuckGosearch index crawlerpublished IP list at duckduckgo.com/duckduckgo-help-pages/results/duckduckbot
YandexBotYandexsearch index crawlerreverse DNS to yandex.ru, yandex.net or yandex.com, then forward DNS back to the same address
BaiduspiderBaidusearch index crawlerreverse DNS to baidu.com or baidu.jp, then forward DNS back to the same address
SeznambotSeznamsearch index crawlerreverse DNS to seznam.cz, then forward DNS back to the same address
NeevabotNeevasearch index crawler · unverifiablenot published — a request wearing this name cannot be checked
PetalBotHuawei Petalsearch index crawlerreverse DNS to petalsearch.com, then forward DNS back to the same address
Amzn-SearchBotAmazon search eligibility, separate from Amazonbotsearch index crawlerdeveloper.amazon.com/amazonbot/searchbot-ip-addresses
MistralAI-IndexMistral search index for Vibesearch index crawlermistral.ai/mistralai-index-ips.json
ExaSearchBotExa AI search index, Web Bot Auth signedsearch index crawlerWeb Bot Auth — signed requests, directory at crawler.exa.ai
46 agents

Training crawlers

They collect pages to train models. Refusing them is a policy choice with no effect on whether you appear in answers — we report it and never score it.

User-agentWhat it isIdentityHow to verify it
cohere-aiCoheretraining crawler · unverifiablenot published — a request wearing this name cannot be checked
DiffbotDiffbot knowledge graphtraining crawler · unverifiablenot published — a request wearing this name cannot be checked
TimpibotTimpi indextraining crawler · unverifiablenot published — a request wearing this name cannot be checked
Google-CloudVertexBotVertex AI groundingtraining crawlerGoogle special-crawler ranges (shared feed) + reverse DNS to google.com
GPTBotOpenAI training + indextraining crawleropenai.com/gptbot.json
ClaudeBotAnthropic trainingtraining crawlerpublished IP ranges
Google-ExtendedGemini training and groundingrobots.txt control token (never sent) · unverifiablecontrol token only — never appears in a request
Applebot-ExtendedApple trainingrobots.txt control token (never sent) · unverifiablereverse DNS to applebot.apple.com
CCBotCommon Crawltraining crawlerindex.commoncrawl.org/ccbot.json, and reverse DNS for IPv4
BytespiderByteDancetraining crawler · unverifiableno published ranges
meta-externalagentMeta AItraining crawlerpublished IP ranges
Magpie-crawlerMagpie AItraining crawler · unverifiablenot published — a request wearing this name cannot be checked
img2datasetimg2dataset image corpustraining crawler · unverifiablenot published — a request wearing this name cannot be checked
AwarioRssBotAwario RSStraining crawler · unverifiablenot published — a request wearing this name cannot be checked
AwarioSmartBotAwario smarttraining crawler · unverifiablenot published — a request wearing this name cannot be checked
TurnitinBotTurnitintraining crawler · unverifiablenot published — a request wearing this name cannot be checked
archive.org_botInternet Archivetraining crawler · unverifiablenot published — a request wearing this name cannot be checked
ia_archiverInternet Archive (legacy)training crawler · unverifiablenot published — a request wearing this name cannot be checked
meta-webindexerMeta web indextraining crawler · unverifiablenot published — a request wearing this name cannot be checked
omgiliWebz.io omgilitraining crawler · unverifiablenot published — a request wearing this name cannot be checked
cohere-training-data-crawlerCohere training corpustraining crawler · unverifiablenot published — a request wearing this name cannot be checked
PanguBotHuawei PanGutraining crawler · unverifiablenot published — a request wearing this name cannot be checked
Ai2Bot-DolmaAllen Institute Dolmatraining crawler · unverifiablenot published — a request wearing this name cannot be checked
FriendlyCrawlerFriendlyCrawler MLtraining crawler · unverifiablenot published — a request wearing this name cannot be checked
VelenPublicWebCrawlerVelentraining crawler · unverifiablenot published — a request wearing this name cannot be checked
MyCentralAIScraperBotMyCentral AItraining crawler · unverifiablenot published — a request wearing this name cannot be checked
DeepSeekBotDeepSeektraining crawler · unverifiablenot published — a request wearing this name cannot be checked
ICC-CrawlerNICT ICCtraining crawler · unverifiablenot published — a request wearing this name cannot be checked
GoogleOtherGoogle non-search fetchtraining crawlerGoogle common-crawler ranges (shared feed) + reverse DNS to googlebot.com or google.com
anthropic-aiAnthropic legacy agenttraining crawler · unverifiablenot published — a request wearing this name cannot be checked
Claude-WebAnthropic legacy agenttraining crawler · unverifiablenot published — a request wearing this name cannot be checked
FacebookBotMeta legacytraining crawler · unverifiablenot published — a request wearing this name cannot be checked
OmgilibotWebz.iotraining crawler · unverifiablenot published — a request wearing this name cannot be checked
ImagesiftBotImagesifttraining crawler · unverifiablenot published — a request wearing this name cannot be checked
AI2BotAllen Institutetraining crawler · unverifiablenot published — a request wearing this name cannot be checked
ScrapyGeneric scraper frameworktraining crawler · unverifiablenot published — a request wearing this name cannot be checked
SemrushBot-OCOBSemrush AI corpustraining crawler · unverifiablenot published — a request wearing this name cannot be checked
Applebot-Extended-AdsApple ads corpustraining crawler · unverifiablenot published — a request wearing this name cannot be checked
TikTokSpiderTikToktraining crawler · unverifiablenot published — a request wearing this name cannot be checked
QuillBotQuillBottraining crawler · unverifiablenot published — a request wearing this name cannot be checked
Webzio-ExtendedWebz.io extendedtraining crawler · unverifiablenot published — a request wearing this name cannot be checked
ProRataIncProRatatraining crawler · unverifiablenot published — a request wearing this name cannot be checked
AwarioBotAwariotraining crawler · unverifiablenot published — a request wearing this name cannot be checked
MistralAI-TrainingMistral training crawltraining crawler · unverifiableno published ranges
GoogleOther-ImageGoogle common crawler, public image URLstraining crawlerGoogle common-crawler ranges (shared feed) + reverse DNS
GoogleOther-VideoGoogle common crawler, public video URLstraining crawlerGoogle common-crawler ranges (shared feed) + reverse DNS
7 agents

Regional search engines

Worth allowing if you serve those markets, harmless otherwise. Never scored.

User-agentWhat it isIdentityHow to verify it
YetiNaversearch index crawler · unverifiablenot published — a request wearing this name cannot be checked
YoudaoBotYoudaosearch index crawler · unverifiablenot published — a request wearing this name cannot be checked
ExabotExaleadsearch index crawler · unverifiablenot published — a request wearing this name cannot be checked
Sogou web spiderSogousearch index crawler · unverifiablenot published — a request wearing this name cannot be checked
YisouSpiderShenma mobile searchsearch index crawler · unverifiablenot published — a request wearing this name cannot be checked
360Spider360 Searchsearch index crawler · unverifiablenot published — a request wearing this name cannot be checked
SosospiderSososearch index crawler · unverifiablenot published — a request wearing this name cannot be checked
6 agents

Social link previews

They render the card when someone shares your URL. Never scored.

User-agentWhat it isIdentityHow to verify it
FacebotMeta link crawlerlink-preview fetcher · unverifiablenot published — a request wearing this name cannot be checked
TwitterbotX link previewlink-preview fetcher · unverifiablenot published — a request wearing this name cannot be checked
LinkedInBotLinkedIn link previewlink-preview fetcher · unverifiablenot published — a request wearing this name cannot be checked
facebookexternalhitFacebook link previewlink-preview fetcher · unverifiablenot published — a request wearing this name cannot be checked
PinterestbotPinterestlink-preview fetcherreverse DNS to pinterest.com, then forward DNS back to the same address
Slackbot-LinkExpandingSlack unfurllink-preview fetcher · unverifiablenot published — a request wearing this name cannot be checked
15 agents

SEO and research crawlers

Third-party tools. Blocking them affects nobody’s answers, including yours. Never scored.

User-agentWhat it isIdentityHow to verify it
KlaviyoAIBotKlaviyo Customer Agent knowledge-source crawlertool or developer fetchWeb Bot Auth signatures verified against Klaviyo’s public key directory
AhrefsBotAhrefs link indextool or developer fetch · unverifiablenot published — a request wearing this name cannot be checked
SemrushBotSemrush crawlertool or developer fetch · unverifiablenot published — a request wearing this name cannot be checked
MJ12botMajestic link indextool or developer fetch · unverifiablenot published — a request wearing this name cannot be checked
DotBotMoz link indextool or developer fetch · unverifiablenot published — a request wearing this name cannot be checked
rogerbotMoz site crawlertool or developer fetch · unverifiablenot published — a request wearing this name cannot be checked
DataForSeoBotDataForSEOtool or developer fetch · unverifiablenot published — a request wearing this name cannot be checked
BLEXBotWebMeUp link indextool or developer fetch · unverifiablenot published — a request wearing this name cannot be checked
CloudflareBrowserRenderingCrawlerCloudflare Browser Run /crawltool or developer fetch · unverifiablenot published — a request wearing this name cannot be checked
Cloudflare-AutoRAGCloudflare AutoRAGtool or developer fetch · unverifiablenot published — a request wearing this name cannot be checked
Peer39_CrawlerPeer39 ad contexttool or developer fetch · unverifiablenot published — a request wearing this name cannot be checked
AdsBot-GoogleGoogle Ads qualitytool or developer fetchGoogle special-crawler ranges (shared feed) + reverse DNS to google.com
AmazonAdBotAmazon Adstool or developer fetch · unverifiablenot published — a request wearing this name cannot be checked
AdIdxBotMicrosoft Adstool or developer fetchreverse DNS to search.msn.com, then forward DNS back to the same address
OAI-AdsBotOpenAI ChatGPT ads page validationtool or developer fetchopenai.com/adsbot.json
Not yet counted

Watchlist — 10 names

A name reaches the tables above only with a first-party operator page, an observed request, or a verifiable directory record. These have been seen in community blocklists or product notes and fail that gate today. They are not resolved from robots.txt and not sent to any site; each graduates on its own evidence, never as a batch.

CandidateOperatorLikely roleWhat would admit it
kagi-fetcherKagiuser-triggered fetchConfirm on Kagi’s own documentation, separately from the listed Kagibot
iaskspideriAsksearch indexOperator documentation or an observed full user-agent; only third-party directories name it today
QwenBotAlibaba / QwenAI crawlerFirst-party purpose and control documentation
ERNIEBotBaiduAI crawlerFirst-party purpose and verification documentation
DoubaoBotByteDance / DoubaoAI crawlerFirst-party documentation, and a stated distinction from Bytespider
BravebotBrave Searchsearch indexBrave’s crawler page exists but does not name the token in readable form; needs the token confirmed first-party or observed in logs
LinerBotLINERanswer enginegetliner.com/linerbot returned 410 on 2026-09-16; needs a live first-party page
FirecrawlAgentFirecrawldeveloper-operated fetch clientA decision on whether developer-run fetch clients belong beside operator-run crawlers
Claude-CodeAnthropic (developer agent)developer-agent fetchA distinct developer-agents category; not equivalent to Anthropic’s centrally run search crawler
Google-Gemini-CLIGoogle (developer agent)developer-agent fetchA stable server-side identity and verification method from Google; the CLI is a local open-source agent
Three rules

What the tables cannot tell you

Blocking GPTBot does not remove you from ChatGPT

Blocking GPTBot does not remove you from ChatGPT. GPTBot collects training data. OAI-SearchBot builds the index ChatGPT search reads, and ChatGPT-User fetches your page live when someone asks about you. Those are three separate permissions, and a single Disallow aimed at the wrong one either gives away training data you meant to keep or removes you from answers you meant to appear in.

The same split applies to Google (Google-Extended controls Gemini training and grounding only — it has no effect on Search or AI Overviews) and to Apple (Applebot-Extended is training only).

The user-agent string is a claim, not a fact

Anyone can send a request calling itself GPTBot. Verification means matching the request against the address ranges the operator publishes — OpenAI, Anthropic and Perplexity all publish theirs; Common Crawl and ByteDance do not.

An access log records the string. It does not record whether the string was earned. That is the difference between GPTBot visited you and something called itself GPTBot, and on our own sites the same name has arrived both ways in a single day.

Being allowed is not the same as being served

A permission in robots.txt is a request, not a delivery. Your edge, your CDN or a bot-defence rule can refuse a named crawler regardless of what your file says — and it usually does so silently, because nothing in your analytics reports a crawler that never arrived.

We have measured sites returning 502 to GPTBot and ClaudeBot while serving Googlebot normally, and a robots.txt answering HTTP 200 with a verification page that no crawler could parse. Neither shows up in a rank tracker, a validator or an uptime check.

Ten seconds

How to check your own site

Nothing installed; one request from outside your own session.

curl -sI -A "GPTBot/1.2" https://yoursite.com/robots.txt

Look at the status and the content type. A 200 that returns text/html means something is answering in place of your file.

For the full comparison — every agent above, what each one received, and how much of your page was readable text — run a free scan or read a real report first.

Which AI crawlers actually visit a small business site →The file that returned 200 and could not be read →The dataset →

Questions about this page

QWhat is the difference between an answer-engine crawler and a training crawler?
An answer-engine crawler (OAI-SearchBot, Claude-SearchBot, PerplexityBot) fetches pages to cite them in an answer now. A training crawler (GPTBot, ClaudeBot, CCBot) collects pages to train future models. Blocking the second while allowing the first is a coherent policy, not a defect, and CrawlCheck treats it that way.
QWhich AI crawlers publish IP ranges I can verify against?
OpenAI (GPTBot, OAI-SearchBot, ChatGPT-User), Anthropic (ClaudeBot and its agents), Perplexity, Google, Bing, Apple and Amazon publish machine-readable ranges. Meta-ExternalAgent and Bytespider do not, so a request claiming them can be neither confirmed nor accused.
QShould I block AI crawlers in robots.txt?
That is a policy choice, not a measurement. What CrawlCheck reports is whether the rules you wrote actually apply: a named User-agent group with no Disallow lines means allow everything for that crawler, and a robots.txt served as HTML applies to nobody.
QHow often is this list updated?
As operators publish changes to their agents and ranges. CrawlCheck’s agent table and this page are generated from the same array, so they cannot disagree.
QDo AI crawlers actually respect robots.txt?
Where CrawlCheck has measured them, yes: every agent with enough verified requests on crawlcheck.io since August 2026 kept to the paths its robots.txt allows and stayed under the site’s own rate limit. That is one property’s record, verified by source address and signed at /api/v1/conduct, not a claim about the whole web; any site can publish its own with the same check.
QCan an agent or a site call this reference instead of reading it?
Yes. Visitor Resolve (/api/v1/visitor?ip=&ua=) answers verified, spoofed or unverifiable for one request; /api/v1/conduct is the signed conduct record per agent; /api/v1/rights-feed lists every measured site’s declared rights per use; /api/tool/robots resolves a robots.txt per agent at a path. None needs a key.

Keep reading