Skip to content

See which AI bots crawl your site

Your analytics shows nothing from AI crawlers, because none of them run JavaScript. Your logs have all of it. This is how to read it.

Time: about 10 minutes · You need: a working integration and a few days of data

Log Hero → AI Visibility, with a date range of at least 7 days. A shorter window on a small site can miss a crawler entirely — some AI bots visit weekly rather than daily.

The AI bots health table is the answer to “which ones are here”: every AI bot that reached your site in the window, with its hits, its error counts and its average response time.

The AI bots health table listing ChatGPT-User, ClaudeBot, OAI-SearchBot, PerplexityBot, GPTBot and others with role, hits, error rates and response times.

Read the Flags column: “8 zero days” means the bot went quiet on eight days in the window, which is either a block or a crawler that stopped.

The report splits AI bots by what they are doing, and the distinction changes what the number means:

Role What it is doing What a high number means
AI training Collecting content to train a model Your content is being ingested. Whether you want that is a policy question.
AI search index Building an index to answer questions from You are a candidate to be surfaced in AI answers.
AI user fetcher Opening a page right now because someone asked A person is in the loop. Someone asked an assistant something and it came to you.

The user-fetcher row is the one to watch. It is the closest thing in your logs to an AI-driven visit, and it is the number to trend over time.

Search, training and retrieval crawlers goes into what each role means for your site — including why disallowing GPTBot stops training but not citation.

Pages AI fetches for users lists the paths behind that number. This is usually where the surprise is: the pages AI assistants pull are rarely the pages you optimised for search.

The Pages AI fetches for users table, listing paths with AI fetch counts, Googlebot hits and the status served.

The Googlebot column next to it is the interesting part: several of these pages get hundreds of AI fetches and zero Googlebot hits.

Sections AI reads vs Google reads takes it up a level, comparing the share of crawling each section gets from AI bots against Googlebot. A section with a high AI share and low Google share is content that answers questions well and ranks badly — often worth a second look.

Two columns in AI bots health matter more than the hit count:

  • 404. An AI crawler chasing dead URLs is spending its budget on nothing.
  • 403. Almost never your application. It is a WAF or CDN rule, and it may be deliberate — but a rule aimed at scrapers routinely catches search bots too. See Status codes.

Compare against Googlebot’s rates on Bot Activity. If only the AI bots get 403s, something is targeting them specifically.

  • Whether an assistant cited you. The log records the fetch. What the model did with it afterwards is not in your data, and no log-based tool has it.
  • Whether the page was readable. Most AI fetchers do not run JavaScript. A fetch of a client-rendered page is a 200 that returned an empty shell.
  • Whether the bot was who it claimed. User-Agents are trivially forged. Check the verification split on Bot Activity, and see How bot verification works.
  • Widen the window to 30 days before concluding anything.
  • Check robots.txt. A Disallow for that agent means the traffic is genuinely not there.
  • Check your WAF. Blocked before logging means invisible.
  • Check your integration’s coverage. An origin integration behind a CDN misses everything served from cache. See Choose your integration.