Every guide to AI search, ours included, tells you to let the crawlers in. Almost none of them tell you what happens after you do, and the reason is boring: nobody keeps the logs.

Cloudflare's free plan holds eight days of bot analytics and caps a single query at a one-day window. That is enough to answer "did GPTBot come by this week" and not enough to answer anything larger. So any claim about how AI crawlers behave over a quarter is either built on somebody's own daily snapshots or it is built on nothing. The data cannot be backfilled later, which is the part that makes it worth publishing: you either started saving it or you did not.

We started saving it. ConceptSEO writes a per-crawler request count to its own database once a day, for every domain it manages, read from the Cloudflare edge and scoped to that domain's hostname. This page reports 90 days of that record. Every number below came out of a query against it, the sample size sits next to each one, and where the record cannot answer something the question is left open rather than filled in.

Horizontal bar chart of crawler requests across 16 domains from 10 June to 7 September 2026. YandexBot 284,725; ChatGPT-User 228,110; bingbot 108,221; Meta-ExternalAgent 78,826; Googlebot 70,343; Bytespider 59,367; Applebot 57,517; ClaudeBot 33,441; GoogleOther 31,360; PerplexityBot 28,695. Googlebot is fifth.

Requests by crawler over the window. Figures as tabulated below.

// the short version
Across 16 domains and 898 measured site-days between 10 June and 7 September 2026, AI crawlers made 546,049 requests. Googlebot made 70,343 on the same sites over the same days. That is 7.8 AI requests for every one from Google, and it is not an average hiding a couple of outliers: AI out-fetched Googlebot on all 16 sites, with a median of 8.3 to 1 and a floor of 1.8 to 1. Just under half of the AI traffic, 247,375 requests, came from operators that fetch because a person has just asked an assistant something. Nine tenths of that half is one operator.

Where does Googlebot rank?

Fifth. Four crawlers fetched these sites harder than Google's did over the same 90 days.

Requests by crawler, 16 domains, 10 June to 7 September 2026 (898 measured site-days).
CrawlerTypeRequestsSites seen on
YandexBotSearch engine284,72516 of 16
ChatGPT-UserAI, live228,11016 of 16
bingbotSearch engine108,22116 of 16
Meta-ExternalAgentAI, training or indexing78,82616 of 16
GooglebotSearch engine70,34316 of 16
BytespiderAI, training or indexing59,36715 of 16
ApplebotSearch engine57,51716 of 16
ClaudeBotAI, training or indexing33,44116 of 16
GoogleOtherAI, training or indexing31,36016 of 16
PerplexityBotAI, training or indexing28,69516 of 16

The busiest AI operator is ChatGPT-User, at 228,110 requests. That is 3.2 times what Googlebot fetched from the same sites across the same window. ChatGPT-User is not a training crawler. It is the fetch OpenAI makes when somebody in a chat window asks a question and the model goes to look at a page.

The single busiest crawler of all is not an AI operator at all. YandexBot made 284,725 requests, more than Googlebot and bingbot put together. We have no explanation for why Yandex crawls this portfolio as hard as it does, and rather than invent one, the number is simply here. If you have edge logs of your own, it is worth checking whether you see the same thing.

Worth naming what this table is not. These are request counts, not visits, sessions, or traffic. A crawler fetching a page 200 times is a fact about the crawler, not evidence that anyone read anything.

How much of this is somebody waiting for an answer?

The distinction that matters commercially is not which company owns the crawler. It is whether a human is currently sitting there. A training crawler is stocking a warehouse. A live fetch means someone asked a question about ninety seconds ago and the assistant went out to read your page before answering.

Split that way, the 546,049 AI requests come out at 247,375 live (45.3%) and 298,674 training or indexing (54.7%). Slightly more than half of AI crawling on this portfolio is stockpiling; slightly less than half is somebody waiting.

// read this before quoting the live number
ChatGPT-User accounts for 228,110 of those 247,375 live requests, or 92.2%. Every other live operator on the list combined, Claude-User, DuckAssist, Perplexity-User, Claude-SearchBot and Mistral's fetcher, adds up to 19,265 requests over 90 days. So "live AI demand" on this portfolio is, in practice, OpenAI, and a strategy built on it is a strategy built on one company's product.

That is not the shape we expected, and it changes what the number is good for. It is strong evidence that people are asking assistants about the subjects these sites cover. It is weak evidence about AI search as a diversified channel, because 90 days of data here is really 90 days of ChatGPT with a rounding error attached.

Is one big site carrying this?

No, and this is the part we found most convincing. The ratio is not a portfolio average that a single heavy domain could drag upward. Every site in the set shows it independently.

On 16 of 16 sites, AI crawlers made more requests than Googlebot did. The median site ratio is 8.3 to 1. The lowest is 1.8 to 1 and the highest is 30.2 to 1, though that top figure comes from a site with only 12 days in the window and should be read as thin rather than extreme.

Per-site AI crawler requests against Googlebot, same days for both columns. Sites are anonymized; day counts differ because domains joined the platform at different dates.
SiteDays measuredAI, liveAI, trainingGooglebotAI per Googlebot request
Site A90170,65295,95023,02911.6
Site B9031,28917,7164,27411.5
Site C906,07223,8157,6163.9
Site D906,29259,87818,1833.6
Site E784,0757,8303,1093.8
Site F655,7708,7622,7845.2
Site G656565,2351,4134.2
Site H653701,7061,1331.8
Site I407222,1894606.3
Site J373,4119,9521,4489.2
Site K376,1227,3911,3789.8
Site L374,3997,3291,11410.5
Site M361,7655,9711,0557.3
Site N3679313,2061,4619.6
Site O303,6997,4251,03710.7
Site P121,28824,31984930.2

The live and training columns move independently, which is the other thing worth noticing. Site D takes almost ten times more training crawl than live fetching; Site A and Site B are the reverse. Whatever decides how often an assistant goes out to read a given site, it is not the same thing that decides how often that site gets harvested for training.

Which crawlers are getting turned away?

The record also stores how each crawler's requests were answered, and a 403 is the interesting one because it means the site refused. A 404 or a 410 is not a refusal, it is the site correctly saying a URL is gone, so both are excluded here. This section covers 9 August onward, because that is when the collector started splitting 403 out of the general error bucket, and it only lists crawlers with at least 20 requests in that period.

Refusal rate by AI crawler, 9 August to 7 September 2026, across the same 16 domains. A refusal is a 403 response.
CrawlerRequestsRefused (403)Refusal rate
FacebookBot2,4731,07143.3%
Bytespider32,4399,22228.4%
Google-Extended1,96753427.2%
CCBot1,76747026.6%
PerplexityBot15,9343,56622.4%
Amazonbot14,9022,61717.6%
Claude-SearchBot3766016.0%
GPTBot5,58067612.1%
Perplexity-User8669110.5%
ChatGPT-User86,7984,3265.0%
OAI-SearchBot14,3826684.6%
ClaudeBot14,4136354.4%
Claude-User13,9261371.0%
MistralAI-User92280.9%
DuckAssistBot2,50420.1%
Meta-ExternalAgent75,649510.1%
GoogleOther21,50800%
anthropic-ai6,21700%

The spread runs from 0% to 43.3% on sites that are all configured by the same team, which was not what we expected to find. The obvious hypothesis is that refusals track intent, with training crawlers blocked and live assistant fetches allowed. The table does not support it. Meta-ExternalAgent and GoogleOther are both training crawlers and both sit at or near zero, while GPTBot, also a training crawler, is refused 12.1% of the time. Bytespider and PerplexityBot are refused at roughly 20 to 30% while ClaudeBot, doing the same job, is refused at 4.4%.

The likeliest explanation is per-zone configuration rather than anything about the crawler: managed bot rules, an AI-crawler toggle left on when a zone was created, a country rule catching one crawler's egress and not another's. We have not traced each refusal back to the specific rule that produced it, so this is a measurement and not a diagnosis. What it is good for is the sanity check it prompted here, which is worth doing on your own sites: if you believe you are open to AI crawlers, this is the number that tells you whether you actually are. Ours said we were not, in places.

What this does not say

The sample is 16 domains that one agency manages. It is a portfolio, not a sample of the web, and the mix is small business and niche publishing rather than news, ecommerce, or anything at scale. A crawler's behavior on a 30-page site is not evidence of its behavior on a 300,000-page one.

Coverage inside the window is uneven. Four sites have all 90 days; the rest were added during the window, which is why the totals rest on 898 site-days rather than the 1,440 that 16 complete sites would give. Each site's day count is printed in its row, and every cross-crawler comparison uses the same days for both sides.

Two mapping caveats, both of which push against the headline rather than for it. Records written before 7 August identify a crawler by display label rather than by signature, and in that era two search signatures were folded into their parents: Googlebot-Image counted as Googlebot, which inflates the Googlebot column, and Applebot-Extended counted as Applebot, which leaves a small amount of AI traffic outside the AI total. Correcting both would widen the 7.8 to 1 gap, not narrow it.

Finally, none of this measures traffic. Cloudflare's referrer dataset, the one that would show which visitors an assistant actually sent, needs a paid plan and is not collected here. Crawling is the thing being counted. Whether it converts into visits is a separate question this record cannot answer, and we would rather say so than let a large number stand in for one we do not have.

Republish the table

Here is the headline table as HTML, source line attached. It is the same array the visible table renders from, so the two cannot drift apart.

Copy the table
<table> <caption>Requests by crawler, 16 domains, 10 June to 7 September 2026 (898 measured site-days). ConceptSEO edge-log record.</caption> <thead> <tr><th scope="col">Crawler</th><th scope="col">Type</th><th scope="col">Requests</th><th scope="col">Sites seen on</th></tr> </thead> <tbody> <tr><th scope="row">YandexBot</th><td>Search engine</td><td>284,725</td><td>16 of 16</td></tr> <tr><th scope="row">ChatGPT-User</th><td>AI, live</td><td>228,110</td><td>16 of 16</td></tr> <tr><th scope="row">bingbot</th><td>Search engine</td><td>108,221</td><td>16 of 16</td></tr> <tr><th scope="row">Meta-ExternalAgent</th><td>AI, training or indexing</td><td>78,826</td><td>16 of 16</td></tr> <tr><th scope="row">Googlebot</th><td>Search engine</td><td>70,343</td><td>16 of 16</td></tr> <tr><th scope="row">Bytespider</th><td>AI, training or indexing</td><td>59,367</td><td>15 of 16</td></tr> <tr><th scope="row">Applebot</th><td>Search engine</td><td>57,517</td><td>16 of 16</td></tr> <tr><th scope="row">ClaudeBot</th><td>AI, training or indexing</td><td>33,441</td><td>16 of 16</td></tr> <tr><th scope="row">GoogleOther</th><td>AI, training or indexing</td><td>31,360</td><td>16 of 16</td></tr> <tr><th scope="row">PerplexityBot</th><td>AI, training or indexing</td><td>28,695</td><td>16 of 16</td></tr> </tbody> </table> <p>Source: <a href="https://seo.concept211.com/resources/what-ai-crawlers-actually-fetch">What AI crawlers actually fetch, ConceptSEO</a>, last updated 8 September 2026.</p>

Sample. 16 domains under management, 898 measured site-days, 546,049 AI-crawler requests and 70,343 Googlebot requests.

Window. 10 June 2026 to 7 September 2026, 90 days. Every one of the 90 dates carries at least one site's data.

Measurement source. Cloudflare bot analytics, read once a day per domain and written to ConceptSEO's own database. Each daily record covers a single day of traffic and is scoped to that domain's hostname, so a zone serving several subdomains never pools them. Cloudflare itself retains eight days on the plans these zones use, so this history exists only because it was saved as it went and cannot be reconstructed after the fact.

Construction. Crawlers are grouped by the signature the collector matched, longest match first. Live means an operator that fetches in response to a person's question; training or indexing means everything else. The two are never added together except where the text says "AI crawlers" and gives both components. Refusal rates use 403 responses only, cover 9 August onward, and exclude any crawler under 20 requests in that period.

Anonymization. Sites are labeled A through P. The portfolio mixes client domains with properties this business owns, and rather than name some and not others, none are named and no site is ranked against another on anything but its own crawl mix.

Last updated. 8 September 2026. The window is open and these figures will move. The date above is the version you are reading.