LetsLaunch

GPTBot Says It Visits Your Site. Here's How to Check, Every Week.

A curl check tells you what a crawler receives once. It tells you nothing about whether GPTBot, ClaudeBot or PerplexityBot actually show up on a Tuesday in October. Here's how to monitor that on an ongoing basis.

LetsLaunch team7 min read

We wrote before about whether an AI crawler can read your page at all — rendering, robots.txt mistakes, a 403 from your own firewall. That is a one-time question. You fetch the page as OAI-SearchBot, you look at what comes back, you fix it or you don't, and the answer stays true until you change something.

This post is about a different question: whether these crawlers actually show up, on an ongoing basis, once the one-time check passes. A page that was readable to GPTBot last month tells you nothing about whether GPTBot has fetched it since. Readability is a fact about your server. Traffic is a fact about their behavior, and it changes without you touching anything.

What you're actually looking for

Every major AI crawler identifies itself with a distinct user-agent string. The ones worth watching for:

GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, Claude-SearchBot, PerplexityBot, Perplexity-User, Google-Extended, Applebot-Extended, Bingbot, Amazonbot, DuckAssistBot, Bytespider, CCBot.

LetsLaunch's own robots.txt (src/app/robots.ts in this codebase) names several of these explicitly rather than relying on a wildcard rule, for the same reason you'd want to grep for them by name: a rule or a log line that just says "bot" tells you nothing about which one.

Two of these strings are worth separating in your head before you start counting anything, because they answer different questions.

Training crawlers and retrieval crawlers are not the same signal

We made this distinction in the readability post and it matters just as much for monitoring: GPTBot collects training data. OAI-SearchBot and PerplexityBot fetch pages to serve as citations in an actual answer. They run independently, on their own schedules, for their own purposes.

If you only track GPTBot, a busy week of hits tells you your content might end up in a future training run — and tells you nothing about whether you can be cited in an answer today. If you want to know about citation potential, you need to watch OAI-SearchBot, Claude-SearchBot and PerplexityBot separately, not lump every AI-labeled agent into one counter. A dashboard that reports "247 AI bot hits this week" without splitting training from retrieval is reporting a number nobody can act on.

Grepping your own logs

If you run your own server or have access to raw access logs, this is a grep away. Standard combined log format puts the request path, status code, and user-agent on one line, so a single pipeline gets you counts per crawler:

grep -E "GPTBot|OAI-SearchBot|ClaudeBot|PerplexityBot|Claude-SearchBot" \
  access.log \
  | awk -F'"' '{print $6}' \
  | sort \
  | uniq -c \
  | sort -rn

awk -F'"' splits the line on quote characters, and in combined log format the user-agent is the sixth quoted field — the request line and the referer are the fourth and there's no fifth field before it. sort | uniq -c turns that into a count per exact user-agent string, which is enough to tell you who's showing up and how often.

To see what a specific crawler is actually requesting, rather than just how often it shows up:

grep "PerplexityBot" access.log | awk '{print $7, $9}' | sort | uniq -c | sort -rn

Field 7 is the request path and field 9 is the status code in the default combined format (exact field numbers shift if your log adds extra fields, so check one line by hand before trusting the count). This tells you two useful things at once: which pages a crawler actually cares about, and whether it's getting 200s or something else on the way in.

Run this weekly, or wire it into whatever log-shipping you already have, and you get a trend instead of a single data point. A one-time curl check answers "can it read this page." A weekly grep answers "does it come back."

The version with no log access required

Most sites don't sit in front of raw logs — they sit behind Cloudflare, which is also LetsLaunch's own setup. Cloudflare's dashboard has an AI Crawlers section, under its AI Bots reporting, that shows this without any grep at all: total requests from AI crawlers, a breakdown of allowed versus blocked requests, a per-crawler split naming the major players — Google, OpenAI, Anthropic, Perplexity, ByteDance, Common Crawl, DuckDuckGo among them — and the paths those crawlers hit most.

If your site is already on Cloudflare, this is the first place to look before building anything yourself. It's the same information the grep gives you, already split by crawler, already trending over time, with nothing to instrument. The tradeoff is that it only sees what passes through Cloudflare's edge — if you serve some paths from elsewhere, those don't show up here.

Cloudflare's own traffic data shows AI bot traffic rising sharply year over year. We won't put a number on that, because the precise figure varies by which report and which time window you're reading, and a specific percentage attributed loosely is worse than no percentage at all. The direction is the useful part: this is traffic worth watching, not a rounding error, and it is worth setting up a recurring check rather than a one-time one.

If you just want a fast answer today

Setting up log monitoring or checking a Cloudflare dashboard is worth it if you want a trend. If you just want to know right now whether a specific crawler can reach a specific page, that's a narrower and faster question, and it's what our AI crawler check does: it fetches your page as each crawler, once, and shows you the status code and the text each one received. It won't tell you whether ClaudeBot visited last Tuesday. It will tell you, in the next thirty seconds, whether it could visit at all. Pair that with our guide to making a page AI-readable if the answer comes back wrong.

What a crawler hit does and doesn't prove

Here's the part worth being honest about, because it's the same caution we applied to citations in the readability post. Seeing PerplexityBot in your logs is necessary evidence. It is not sufficient evidence.

A hit tells you the crawler reached your page and (assuming a 200 and readable HTML) received your content. It does not tell you that content was used, indexed, or ever surfaced to a single user. You cannot infer citation frequency from crawl frequency — a crawler can fetch a page a hundred times and cite it never, and there's no dashboard, ours included, that closes that gap.

What monitoring does give you is the other direction, which is just as useful: absence of hits is real information. If OAI-SearchBot has never touched your domain, you cannot be cited from that index, full stop — no amount of good content changes that if the crawler was never there to read it. Monitoring won't tell you you're winning. It will tell you, reliably, when you've been shut out before you've done anything else.

Treat crawler-hit counts as a diagnostic, not a growth metric. They rule things out. They don't rule things in.

Do crawler visits mean my product will be cited by ChatGPT or Perplexity?

No. A crawler hit only confirms the page was fetched and, if it returned a readable 200, that the content was received. Whether it's later cited in an answer is a separate step nobody can currently observe from the outside, and we know of no reliable way to predict it from crawl frequency alone.

Do I need Cloudflare to monitor AI crawler traffic?

No, but it removes the setup work. Cloudflare's AI Crawlers analytics shows per-crawler request counts, allowed-versus-blocked splits, and top crawled paths for any site behind its network, with no log access needed. Without Cloudflare, the same information is available by grepping your raw access logs for the relevant user-agent strings.

What's the difference between monitoring GPTBot and monitoring OAI-SearchBot?

GPTBot hits reflect training-data collection. OAI-SearchBot hits reflect retrieval for citations in ChatGPT's search answers. They're separate crawlers with separate purposes, so tracking only GPTBot tells you nothing about whether you can currently be cited — you have to watch the search/retrieval agents separately to answer that question.

ShareXLinkedInHacker NewsRedditon LetsLaunch

What's live on LetsLaunch right now