comiza

Agentwatch › Study

Only 5.3% of the traffic claiming to be an OpenAI crawler came from OpenAI

Over 28 July 2026 to 9 August 2026, this server logged 100,408 requests. We took every one that claimed to be an AI crawler and checked the address it came from against the list the vendor itself publishes for that crawler. Where the claim could be checked at all, 37.9% of it was genuine.

What this is not, and where it is weakest

One server, one small site, 13 days. It is not a survey of the web and nothing here should be read as a global figure. It is a measurement anyone can repeat on their own logs, and the method is written out below so that you can.

The honest weakness is concentration. A handful of busy scanners can move these percentages on a site this size, and they do: the single busiest unconfirmed address accounts for 50% of all unconfirmed requests, and the top five for 77%. This is a real picture of what one server receives, not a population estimate.

These numbers are a snapshot of 28 July 2026 to 9 August 2026 and they do not move. They are recomputed from the raw logs every time this page is built, but always over that same window, so a figure quoted from here still reads the same later. The collection continues; extending the window means republishing every number together, dated, rather than letting one drift under a citation.

The results

Requests are counted per claimed identity. The percentage is the share that could be traced to an address the vendor publishes for that exact crawler — each OpenAI crawler against its own file, not a pooled one.

Claimed to beRequestsAddressesConfirmedChecked against
Googlebot3,6428484.1%reverse DNS
GPTBot3,233493.3%published address list
OAI-SearchBot1,6457210.8%published address list
ChatGPT-User486230.2%published address list
bingbot25111591.6%published address list
PerplexityBot19590.0%published address list
PerplexityBot: Read this row carefully. In August 2025 Cloudflare published that Perplexity was crawling from addresses outside its own published list, rotating networks and changing its User-Agent; Perplexity disputed this publicly and attributed the traffic to a third party. So 0% confirmed here means one of two very different things — impersonators wearing the name, or Perplexity crawling from outside the range it declares. Our method cannot separate them, and we do not claim to.
ClaudeBot76143no verification method published
Google-Extended1548no verification method published
meta-externalagent11769no verification method published
CCBot245no verification method published
Bytespider218no verification method published
Perplexity-User122no verification method published
Claude-User21no verification method published

Rows without a percentage are not accusations. Anthropic, Meta, ByteDance and Common Crawl publish neither an address list nor a documented reverse DNS convention, so their traffic can be neither confirmed nor denied. Those rows are excluded from every percentage on this page.

How this sits next to the larger measurements

Two security networks have measured the same thing at a scale this server will never see, and their headline number is far lower than the one above. Both can be right at once, and the reason they differ is the most useful thing on this page.

HUMAN Security's Satori team analysed traffic from 16 well-known AI crawlers and found that one request in eighteen carrying an AI crawler user agent was fake — about 5.6%. DataDome recorded 7.9 billion AI agent requests across its network in January and February 2026, and reports that the best known agent names are precisely the ones most often worn by something else. On this server, measured over 28 July 2026 to 9 August 2026, 62.1% of checkable claims could not be confirmed — roughly 11 times their figure. That is a fixed measurement of a fixed window, not a live counter: quote it and it will still say the same thing when someone checks.

Three things account for the gap. None of them requires either side to be wrong.

So the reading to take away is not that the web is 62% forged — it is not. It is that the ratio arriving at your door depends on how big your door is, and the published industry figure understates it for a small site, because the genuine traffic that dilutes that figure is traffic a small site never receives. Worth knowing before writing a rule that admits AI crawlers on the strength of the name alone.

The part that removes any doubt

A low percentage could, in principle, mean a vendor crawling from addresses it forgot to publish. This cannot.

17 addresses wore more than one crawler's name. The 5 below each cycled through 6 to 10 different AI crawler identities while requesting the same kind of thing: environment files, cloud credentials, admin panels and process memory.

AddressRequestsIdentitiesNames usedMost requested paths
34.56.220.21710410GPTBot (19), ClaudeBot (18), PerplexityBot (13), OAI-SearchBot (12), ChatGPT-User (12), Perplexity-User (7), meta-externalagent (6), Google-Extended (6), Bytespider (6), CCBot (5)/env.js
/admin/.env
/.env.local
104.28.227.18710310GPTBot (19), ChatGPT-User (17), PerplexityBot (16), ClaudeBot (14), OAI-SearchBot (11), Bytespider (9), Perplexity-User (5), meta-externalagent (4), CCBot (4), Google-Extended (4)/.env.local
/.env.production
/.env.development
68.183.19.150428PerplexityBot (7), OAI-SearchBot (7), GPTBot (6), bingbot (6), Googlebot (5), ChatGPT-User (5), ClaudeBot (4), CCBot (2)/.git/config
/
/.git/HEAD
35.234.173.1283186ChatGPT-User (118), OAI-SearchBot (43), PerplexityBot (40), ClaudeBot (40), Google-Extended (39), GPTBot (38)/@fs/app/.env?raw??
/@fs/root/.env?raw??
/@fs/root/rootkey.csv?raw??
34.140.110.1792636ChatGPT-User (88), GPTBot (40), OAI-SearchBot (38), PerplexityBot (34), Google-Extended (32), ClaudeBot (31)/
/graphql/console
/v1/graphql

No real crawler changes its name 10 times. This is one scanner wearing whatever gets it through the door — and AI crawler names get through the door precisely because site owners have spent two years being told to let them in.

Is the method itself any good?

The strongest objection to this page is not about the data, it is about the instrument. If the check produces false negatives, every "unconfirmed" number above is soft — and the honest answer cannot be to assert that the method is good.

So here is a test of the method against itself. A real crawler reads pages. A scanner wearing a crawler's name hunts for login forms and configuration files. If the two groups behave differently, the check is tracking something real rather than failing at random.

GroupRequestsShare asking for login pages, .env, .git and similar
confirmed as the crawler they claimed 3,578 0.5%
could not be confirmed 5,874 41%

The confirmed group asks for /robots.txt and ordinary pages. The unconfirmed group asks for wp-login.php, /wp-json/ and index.php. Google does not hunt for WordPress login forms on a site that has never run WordPress.

What this does not prove. It does not establish a false negative rate, and we do not claim one. A genuine crawler using an address its own vendor has not published would land in the second group and look like an impostor to us. The behavioural gap makes that unlikely to explain much of it; it does not make it impossible.

What follows from it

Allowing a crawler by its User-Agent is not a security decision, it is a hope
The name in a request is typed by whoever sent it. If your firewall exempts anything calling itself GPTBot, you have written an exemption that anyone can claim, and on this server most of what claimed it was not it.
Your crawl statistics are probably wrong
Analytics and log tools group by User-Agent because that is all they have. If you have been reassured by how much AI crawler traffic you get, check it. We counted claims first too, and got the answer wrong by an order of magnitude until we checked the addresses.
Verification is cheap, and the vendors made it possible
OpenAI, Google, Microsoft and Perplexity publish the addresses their crawlers use, as machine readable files. Google and Microsoft also support reverse DNS. Checking takes milliseconds and needs no relationship with anyone.
Check a visit from your own logs Free. Paste an address and a User-Agent.

Method, so you can repeat it

  1. Take every access log line and pull out the source address and the User-Agent.
  2. Match the User-Agent against a catalogue of known crawler tokens, longest token first — otherwise Claude-SearchBot is misread as ClaudeBot.
  3. For each claimed crawler, fetch the vendor's published address list. Follow redirects: Google has moved its file and Perplexity has moved its host, and a client that does not follow gets an empty list and silently concludes the vendor publishes nothing.
  4. Check the address against that crawler's own list.
  5. If it is not there and the vendor documents reverse DNS, resolve the address to a name, then resolve that name back. Both halves are required; a reverse record on its own can say anything.
  6. Only if every available method fails, call it unconfirmed — and if the vendor publishes no method at all, say that instead, because it is a different statement.

Our implementation is the same code that answers the free check on this site, so the numbers above and the tool agree by construction. Measured on 28 July 2026 to 9 August 2026; regenerated whenever the logs are.