Field report from server logs

What AI crawlers actually do on small sites: OAI-SearchBot vs GPTBot vs ClaudeBot

This report counts every hit from named AI crawlers on Growth Radar's own small sites, read from first-party server logs rather than estimated. Each hit is checked against the IP ranges the crawler's operator publishes, so impersonators are counted apart. Every table states its n, its window and how many sites contributed, and the rows download as CSV.

Window: 2026-10-04 to 2026-10-31, the last 28 whole days in UTC. 7 sites had a named crawler visit. Download every table as CSV.

OAI-SearchBot, GPTBot and ClaudeBot side by side

OAI-SearchBot indexes pages for ChatGPT search, GPTBot collects pages for OpenAI's models, and ClaudeBot collects pages for Anthropic's. A verified hit came from an address inside the operator's published ranges.

OAI-SearchBot
2 IP-verified of 2 claimed · impersonators 0.0% · 1 page
GPTBot
133 IP-verified of 137 claimed · impersonators 1.5% · 46 pages
ClaudeBot
32 claimed · not checkable, no published IP list · 31 pages

Every AI crawler that visited

Hits claimed is every request whose user agent named the crawler. Failed IP check means the request came from outside the operator's published ranges: someone borrowing the name. Not checkable means the operator doesn't publish a range list we can read, so the hit is neither confirmed nor called fake.

CrawlerHits claimedIP-verifiedFailed IP checkNot checkableImpersonator sharePages fetchedSites
GPTBot137133221.5%461
Meta-WebIndexer11200112not measured312
Amazonbot430043not measured431
ClaudeBot320032not measured311
DuckAssistBot5005not measured11
Meta-ExternalAgent3003not measured11
OAI-SearchBot22000.0%11
ChatGPT-User11000.0%11

n = 335 hits claiming an AI crawler · 2026-10-04 to 2026-10-31 (28 days, UTC) · 4 sites contributing

How much crawler traffic is AI?

AI share is named AI crawler hits divided by named AI plus named search-engine crawler hits, with impersonators taken out of both. Requests flagged as bots that aren't a named crawler, such as headless browsers and scripts, are left out; dividing by them too can only give the same or a smaller share of the same traffic. In this window it reads 0.7% against 16.2% here. Both left-out counts are listed so either version can be recomputed.

MeasureValueIn the share
Named AI crawler hits333numerator and denominator
Named search-engine crawler hits1,724denominator
AI share16.2%result
Hits that failed the IP check3left out
Other bot-flagged hits42,751left out
Impersonator share of IP-checked AI crawler hits1.4%separate

n = 2,057 named crawler hits after impersonators are removed · 2026-10-04 to 2026-10-31 (28 days, UTC) · 7 sites contributing

Do AI crawlers fetch llms.txt?

Requests for /llms.txt and /llms-full.txt by named crawlers, impersonators excluded. A fetch shows the file was read, not that it changed what any assistant answers.

CrawlerKind/llms.txt/llms-full.txt
Baidu Spidersearch30
Yandex Botsearch10
GPTBotAI22
Googlebotsearch01
AmazonbotAI10

n = 10 llms.txt and llms-full.txt fetches by named crawlers · 2026-10-04 to 2026-10-31 (28 days, UTC) · 1 site contributing

How to verify GPTBot, ClaudeBot and other AI crawlers

  1. Log the client IP address of every request whose user agent names a crawler, not only the user agent.
  2. Fetch the IP range list the crawler's operator publishes, the URLs below, and refresh it daily.
  3. A request from inside the ranges is the real crawler; from outside, it's an impersonator.
  4. When an operator publishes no list, record the hit as not checkable instead of guessing.
CrawlerPublished IP listPrefixes loadedList fetchedHits checked
Baidu Spidernone published in the lists readnonenever0
Yandex Botnone published in the lists readnonenever0
GPTBothttps://openai.com/gptbot.json182026-11-01135
Meta-WebIndexernone published in the lists readnonenever0
Googlebothttps://developers.google.com/static/search/apis/ipranges/googlebot.json3172026-11-0123
Bingbothttps://www.bing.com/toolbox/bingbot.json282026-11-0141
Amazonbotnone published in the lists readnonenever0
DuckDuckGohttps://duckduckgo.com/duckduckbot.json4862026-11-010
ClaudeBotnone published in the lists readnonenever0
DuckAssistBotnone published in the lists readnonenever0
Meta-ExternalAgentnone published in the lists readnonenever0
OAI-SearchBothttps://openai.com/searchbot.json392026-11-012
ChatGPT-Userhttps://openai.com/chatgpt-user.json2352026-11-011

n = 202 hits checked against a published IP list · 2026-10-04 to 2026-10-31 (28 days, UTC) · 1 site contributing

Is there a wider benchmark?

Not published yet. We only cite the cross-account benchmark once at least 5 separate accounts contribute; 1 does today.

Method and limits

Each site forwards crawler requests from its server to Growth Radar with the path, the status code and the client address. Crawlers are named from the user agent, then checked against published IP ranges. The sample is a few small sites run by one operator, so a count of a handful is a handful: read it as what happened here, not as a rate for the web. The figures are read live on every visit and the window moves daily. Any site can check its own crawler access with the free AI visibility checker.

Questions about this report

Whose sites are these numbers from?

Only sites run by the person who builds Growth Radar. Customer sites are never counted here. The sample is small and says nothing about large sites. We publish it because it's measured, not because it's representative.

How is a crawler hit verified?

The site forwards each crawler request with its client address. That address is compared with the IP ranges the crawler's operator publishes. A hit from inside the ranges is verified, and one from outside is an impersonator. If the operator publishes no list, the hit counts as not checkable rather than either.

Why does AI share differ from other figures for the same sites?

AI share here is named AI crawler hits divided by named AI plus named search-engine crawler hits, with impersonators removed from both. A figure that divides by every bot-flagged request, headless browsers and scripts included, only adds hits to the denominator, so it reads the same or lower for the same traffic. In this window it reads 0.7% against 16.2% here. Both counts are in the table so either can be recomputed.

Do AI crawlers fetch llms.txt?

The llms.txt table shows which named crawlers requested /llms.txt or /llms-full.txt in the window. When none did, the section says not measured. A site that doesn't forward those requests looks the same as one nobody asked for, so we don't report the absence as a zero.

Is there a benchmark across many sites?

There is a cross-account benchmark, and we only cite it here once at least 5 separate accounts contribute to it. Below that, nothing from it is published, because a handful of accounts could be identified from their deciles.