Skip to content

Search, training and retrieval crawlers

“Bot traffic” is not one thing. A crawler that collects your text to train a model, a crawler building an index so an assistant can cite you, and a crawler opening your page right now because a person asked a question are three different events with three different consequences — and they often come from the same company.

Telling them apart is the difference between a hit count and a finding.

Category Wants A hit means
Search To index you for a search engine The classic crawl. Ranking depends on it
AI training To collect content in bulk for training Your content was ingested. Nobody read it
AI assistant To answer a question, now or later Either you were indexed for citation, or someone just asked
Social To render a link preview Somebody shared your URL

Everything else Log Hero groups as Other — SEO tools, uptime monitors, scanners, libraries, scripts. A large and mostly legitimate group.

Googlebot, bingbot, Applebot, YandexBot, Baiduspider, PetalBot, DuckDuckBot and the rest. Their behaviour is decades old and well documented: they discover URLs, fetch them, decide whether to index them, and come back at a rate they choose based on how useful and how fast your site is.

What is worth watching here is the shape rather than the total: which sections they favour, how often they re-crawl, what proportion of their requests end in an error, and whether any of that changed after your last release.

Note that one search engine is several crawlers. Google runs separate agents for desktop, smartphone, images, video and ads, and they appear as separate names in your log.

GPTBot, ClaudeBot, CCBot, Bytespider, meta-externalagent, VelenPublicWebCrawler and others.

These collect at scale, for building or refining a model. The important thing to understand about the numbers: volume here measures how thoroughly your content is being ingested, and says nothing at all about whether anyone will ever read it. A page fetched a thousand times by training crawlers has not been seen by a single person.

This is the category where the robots.txt question actually bites, because what you are trading away — your content as training data — is not the same as what you are trading for.

This is the category worth splitting, and Log Hero splits it in two.

OAI-SearchBot, PerplexityBot, YouBot, DuckAssistBot, xAI-SearchBot, meta-webindexer, Google-CloudVertexBot, LinkupBot.

These build the index an assistant reaches into when it needs a source. Being crawled by them is the AI equivalent of being in a search index: it is the precondition for ever being cited, and it happens ahead of time rather than in response to anything.

ChatGPT-User, Perplexity-User, Claude-User, Gemini-Deep-Research, OpenAI Bot, GPT User Bot.

A hit from one of these means a person asked a question and an assistant opened your page to answer it. There was a human in the loop, seconds ago.

This is the closest thing to AI-driven demand that exists in a server log, and it is the row to trend over time. It is also completely absent from every JavaScript-based analytics tool you have — see Why analytics cannot see bots.

The AI Visibility report, with AI share, user-triggered fetches, 404 rate and sitemap reach.

AI Visibility separates the roles. User-triggered fetches is the one with a person behind it.

The categories are not trivia. They lead to different decisions, and conflating them produces expensive mistakes.

Blocking training does not block citation, and blocking citation does not block training. These are separate crawlers with separate names, often from the same operator. Disallowing GPTBot in robots.txt stops OpenAI collecting your content for training. It does not stop ChatGPT-User from opening your page when a user asks about you, and it does not remove you from what ChatGPT can cite — that is OAI-SearchBot, a different agent entirely.

So the two decisions are genuinely independent:

You want Then
Not to be training data, but still be citable Disallow the training crawlers, allow the search-index and user-fetch ones
To be cited as widely as possible Allow everything and make sure they get 200s, not errors
To be left alone by AI entirely Disallow all of them — and accept that you become invisible to assistants

Errors cost more in the AI categories than in search. Googlebot has been crawling you for years and will retry a 404 patiently. A user fetcher gets one attempt while a person waits: if it hits a 404 or a slow response, the assistant answers from something else, and there is no second chance. An AI 404 rate materially higher than your Googlebot 404 rate is worth fixing first.

A social spike is not a crawl. facebookexternalhit, Twitterbot, Slackbot, WhatsApp Crawler and friends fetch a page once so a preview card can be drawn. A sudden burst almost always means a link of yours is being shared, not that anything is crawling you.

AI Visibility is built on exactly this split: AI share of bot hits, user-triggered fetches, the AI 404 rate, and how much of your sitemap AI bots have actually reached. Bot Activity gives you the same population by name and by day.

One honest limit: classification depends on the crawler identifying itself. A bot that sends no recognisable User-Agent, or one Log Hero has not learned yet, appears under Other or as Unknown bot — with its hits counted, but without a category. The Bot catalogue lists every name currently recognised and which category it lands in.