AI Crawler Log Analyzer

AI Crawler Log Analyzer

Paste your server log to see which AI bots actually crawled you, how often, and which pages. Free, no API key.

Free · no API key · nothing leaves your site — pasted lines are analyzed on your server

AI Crawler Log Analyzer for the GPTBot line you can't tell is real

You grepped your access log, found a few thousand hits claiming to be GPTBot, and now you need to know three things: is it real, is it the fetcher that actually matters for citation, and has your WAF been silently blocking it for a month. Paste your log lines and we'll separate the bots, bucket the status codes, and flag the CDN header trap that fails every genuine hit if you check the wrong field. If you haven't set your access rules yet, do that first — this tool reads what already happened.

Separates training bots from citation botsFlags the CDN edge-IP trapPer-operator verification, not guessworkCrawl-waste and status-code buckets

Built and reviewed by Sayed Hasan, founder of SEOs Hut · Updated 28 September 2026 · Free, no signup

Does seeing GPTBot in my logs mean my content was used to train a model?

Not necessarily, and check the token first. GPTBot is OpenAI's training crawler; OAI-SearchBot and ChatGPT-User are separate tokens for answer-time fetching and user-initiated fetches. A GPTBot hit tells you about training crawl access, not about whether you were ever cited — those run on different bots with different published IP ranges.

Reverse DNS does not verify an AI crawler the way it verifies Googlebot

Only Google and Apple publish a reverse-DNS method. OpenAI, Anthropic and Perplexity publish CIDR files and nothing else — there is no hostname to resolve for GPTBot, ChatGPT-User, ClaudeBot or PerplexityBot. So 'reverse-DNS it' is simply wrong advice for the bot most people search this page to verify. And behind a CDN, checking the wrong field fails every genuine hit anyway: origin logs show the edge's IP in remote_addr, not the crawler's, so a CIDR check against that field returns 'unverified' for traffic that's completely real.

Per operator, checked directly

Every AI bot token, and how to actually verify it

Fetched from each operator's own published file. Match the real client IP — not remote_addr behind a CDN — against the CIDR file, or the rDNS mask where one exists.

TokenPurposeObeys robots.txtrDNS mask?CIDR fileLast updated
OAI-SearchBotAnswer-time citation fetchYes, ~24h to pick up robots.txt changesNo — CIDR onlyopenai.com/searchbot.json (39 prefixes)2026-01-02
GPTBotTraining crawlYesNo — CIDR onlyopenai.com/gptbot.json (18 prefixes)2026-09-22
ChatGPT-UserUser-initiated fetch (someone pasted your URL)May not apply — user-triggered, not automaticNo — CIDR onlyopenai.com/chatgpt-user.json (230 prefixes)2026-09-25
OAI-AdsBotAds-related fetchNot detailed by OpenAINo — CIDR onlyopenai.com/adsbot.jsonNot stated
ClaudeBot / Claude-User / Claude-SearchBotTraining, answer-time and search fetch — one combined list for all threeSupports the non-standard Crawl-delay extension; Anthropic warns IP blocking may not persistNo — CIDR onlyclaude.com/crawling/bots.json (26 prefixes, mixed cloud ranges)2026-08-18
PerplexityBotTraining / indexing crawlNot detailed by PerplexityNo — CIDR onlyperplexity.com/perplexitybot.json (8 prefixes)2025-02-07 — 19 months stale
Perplexity-UserUser-initiated fetchGenerally ignores robots.txt — match User-Agent AND IP together, per Perplexity's own guidanceNo — CIDR onlyperplexity.com/perplexity-user.json (4 prefixes)2025-10-17
Googlebot / Google-Agent / Google-GeminiNotebookCrawl, agent action, and notebook fetchYesForward-confirmed rDNS in googlebot.com / google.com / googleusercontent.com5 files under developers.google.com/static/crawling/iprangesRolling, no fixed date
ApplebotSearch crawlFollows Googlebot's rules if none are named for Applebot specifically; no crawl-delay supportrDNS in *.applebot.apple.com, or CIDR matchsearch.developer.apple.com/applebot.jsonNot stated
BingbotSearch crawlNot detailed hereNot stated herebing.com/toolbox/bingbot.json2024-01-03 — over two years stale

Scroll the table sideways to see every column.

Applebot-Extended does not crawl webpages at all and will never appear in a server log — if you're trying to control training use, it's a robots.txt directive, not a bot you can log. Google is also experimenting with Web Bot Auth, cryptographic request signing under the identity https://agent.bot.goog, a different verification model from either CIDR matching or rDNS.

Why the CIDR file is the whole story

Three numbers that explain why a hardcoded IP list goes stale

230
IP prefixes in OpenAI's ChatGPT-User file — 12x larger than GPTBot's 18, and updated within days of each check
chatgpt-user.json, fetched directly
19 months
how stale Perplexity's own PerplexityBot file already is, versus its Perplexity-User file updated within the past year
perplexitybot.json, creationTime 2025-02-07
2+ years
age of Bing's published bingbot IP list — a verifier that treats every operator's file as equally fresh will mislabel real Microsoft traffic
bing.com/toolbox/bingbot.json, creationTime 2024-01-03
One real log line, dissected

Why this hit fails a naive CIDR check, and shouldn't

1172.68.234.9 - - [21/Sep/2026:14:22:03 +0000] "GET /pricing HTTP/1.1" 200 8842 "-" "Mozilla/5.0 (compatible; GPTBot/1.2; +https://openai.com/gptbot)"
2CF-Connecting-IP: 20.171.207.12
3X-Forwarded-For: 20.171.207.12, 172.68.234.9
4Second line, same session: "GET /robots.txt HTTP/1.1" 200 612 "-" "Mozilla/5.0 (compatible; GPTBot/1.2; +https://openai.com/gptbot; robots.txt)"
1172.68.234.9 is Cloudflare's edge IP. This is what your origin's $remote_addr shows, and it will never appear in openai.com/gptbot.json no matter how genuine the request is.
2The real client IP is in CF-Connecting-IP, or True-Client-IP on some other proxies. Check this value against the CIDR file, not remote_addr.
3X-Forwarded-For carries both addresses, with the edge appended last. Take the first hop unless you control the whole proxy chain and know otherwise.
4The extra ;robots.txt marker inside the user-agent string means this specific request was fetching your robots.txt file, not a page. OpenAI documents up to a 24-hour lag before a robots.txt edit is picked up — expect a burst of these right after you change it.
For your nginx config

Reading the real client IP instead of the edge's

nginx
# Cloudflare's published edge ranges — add the full current list
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
# ...repeat for every range Cloudflare currently publishes

real_ip_header CF-Connecting-IP;
real_ip_recursive on;

This only fixes what nginx writes to $remote_addr in your own log — it doesn't touch the verification step itself. You still take that corrected IP and check it against the crawler's own CIDR file (openai.com/gptbot.json, claude.com/crawling/bots.json, and so on), never against Cloudflare's ranges.

What breaks a log audit

Five ways a verification script gets it wrong

Reverse-DNS'ing a GPTBot or ClaudeBot hit

What happens: OpenAI, Anthropic and Perplexity publish CIDR files and nothing else — there's no documented hostname to resolve for any of their bots. A script built around rDNS returns nonsense for exactly the operators most people are trying to verify.

Do this instead: Match the IP against that operator's own published CIDR file. Save rDNS for Googlebot and Applebot, the two operators that actually document it.

Checking remote_addr against a CIDR file behind a CDN

What happens: Behind Cloudflare, an ALB, or any reverse proxy, $remote_addr at your origin is the proxy's IP, not the crawler's. Every genuine hit fails the check, which looks exactly like a spoofed bot until you know to look elsewhere.

Do this instead: Read CF-Connecting-IP, True-Client-IP, or the correct hop of X-Forwarded-For — whichever your specific proxy sets — before running the CIDR match.

Treating every published CIDR file as equally fresh

What happens: Bing's bingbot.json is dated 2024-01-03. Perplexity's own PerplexityBot file is 19 months old. A hardcoded copy of any of these, cached indefinitely, silently drifts out of date — while ChatGPT-User's file, 12x larger than GPTBot's, gets updated within days.

Do this instead: Fetch each file at verification time rather than hardcoding a copy, and note the creationTime field the operator publishes.

Counting a frequent ChatGPT-User hit as a citation

What happens: OpenAI documents ChatGPT-User as a user-initiated fetch — someone pasted your URL into the chat box. It isn't automatic crawling and robots.txt rules may not even apply to it. A spike in these hits is evidence people are sharing your link, not evidence you were cited in an answer.

Do this instead: Report OAI-SearchBot and ChatGPT-User as two separate rows. They prove two different things.

Assuming a robots.txt error means the bot is blocked

What happens: RFC 9309 says the opposite of what most people assume: a 4xx response fetching robots.txt means the crawler MAY access everything, and only a 5xx means it MUST assume complete disallow.

Do this instead: Check the actual status code your server returns for /robots.txt, not just whether a browser can load the file.

Keep these straight

Six terms this topic mixes up constantly

Token
The exact string inside the User-Agent header — GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, and so on. There is no such thing as "ChatGPTBot"; that string doesn't exist in any operator's published list.
CIDR file
A JSON list of IP prefixes an operator publishes for a given bot, refreshed on its own schedule per file. The only verification method for OpenAI, Anthropic and Perplexity's bots.
rDNS mask
A reverse-DNS hostname pattern an operator documents for forward-confirmed verification. Published only by Google and Apple; nobody else offers it.
Edge IP vs client IP
Behind a CDN or load balancer, remote_addr in your origin log is the proxy's IP. The real client IP lives in a header — CF-Connecting-IP, True-Client-IP, or a specific hop of X-Forwarded-For.
Crawl-delay
A non-standard robots.txt directive, not part of RFC 9309, that Anthropic's bots specifically support. Most operators ignore it.
Web Bot Auth
Google's experimental cryptographic request-signing protocol, under the identity https://agent.bot.goog — a verification model separate from both CIDR lists and rDNS.

What to actually run this afternoon

Grep your log for the token, not a guess at the UA string. Then find the real client IP — read the CDN header, don't trust remote_addr — and match it against that specific operator's CIDR file, fetched fresh, not a cached copy from six months ago. If the volume looks wrong once you've done that, check your actual access rules, then see whether a change in fetch volume lines up with a change in your visibility trend. And if the bots are burning fetches on thin URLs, point them at a shorter, better list; if they're burning fetches on redirect chains or hitting dead pages, that's usually a site-structure problem, not a bot-management one.

Questions

AI Crawler Log Analyzer FAQ

Why Do AI Crawlers Keep Hitting robots.txt Instead of My Content?
That's the crawler checking whether it's allowed before it fetches anything else — normal behaviour, not a sign it's stuck. OpenAI documents up to a 24-hour lag for a robots.txt edit to be picked up, and its user-agent string sometimes carries an extra ;robots.txt marker on these specific requests, which is how you tell them apart from a real content fetch in your logs.
Why do I see AI bot traffic but no crawling of fresh content?
Check which token is hitting you. GPTBot, ClaudeBot and PerplexityBot are training crawlers with their own schedules, unrelated to whether your newest page gets cited in an answer. Only the answer-time fetchers — OAI-SearchBot, Perplexity-User, Claude's search bot — indicate anything about retrieval for a live query, and even then only for prompts actually run against that content.
How can I access server logs for SEO purposes?
Through your hosting provider, CDN dashboard (Cloudflare, Fastly, and similar all expose log access or log-push), or directly on the origin server if you manage it. The important part isn't access — it's knowing that behind a CDN, the origin log's client-IP field shows the CDN's edge, not the crawler, so you need the CDN's own header data as well.
What is the difference between CDN logs and origin server logs for AI bot analysis?
CDN logs typically carry the real client IP directly; origin logs show remote_addr as the CDN's edge IP unless you've configured the proxy to forward the real one via a header like CF-Connecting-IP. Verifying a bot against a CIDR file from origin logs alone, without that header, fails genuine hits.
Why don't I see any ChatGPT-User hits at all?
That's expected for most sites, and it isn't a sign of a block. ChatGPT-User only fires when someone actually pastes your URL into ChatGPT — it's user-initiated, not automatic crawling — so a site nobody has shared in a chat simply won't generate any.
Is there such a thing as ChatGPTBot?
No. OpenAI's four published tokens are GPTBot, OAI-SearchBot, ChatGPT-User and OAI-AdsBot. A log line claiming to be "ChatGPTBot" is either a misconfigured scraper or a spoofed user-agent — it doesn't match any string OpenAI documents.
Will Applebot-Extended show up in my logs?
No. Apple documents that Applebot-Extended does not crawl webpages at all — it's a training-use opt-out directive you set in robots.txt, not a bot that generates its own requests. If a log line claims to be Applebot-Extended, that's not genuine Apple traffic.

Primary sources used on this page

  1. OpenAI: the four published bots and their CIDR files — platform.openai.com
  2. Anthropic: ClaudeBot, Claude-User, Claude-SearchBot, Crawl-delay support, and the IP-blocking warning — support.claude.com
  3. Perplexity: PerplexityBot and Perplexity-User CIDR files, and the UA+IP matching guidance — docs.perplexity.ai
  4. Google: the forward-confirmed reverse-DNS verification procedure — developers.google.com
  5. Google: Google-Agent, Google-GeminiNotebook, and the Web Bot Auth experiment — developers.google.com
  6. Apple: Applebot verification methods and the Applebot-Extended training opt-out — support.apple.com
  7. RFC 9309: robots.txt parsing limits and the 4xx/5xx disallow rules — www.rfc-editor.org
Keep going

Turn the log data into a fix

A verified bot hit is the start of the job, not the end of it. These six are where the fetch data actually leads.

Read the guide: What Is Crawl Budget? How It Works and When It Matters and What Is Crawling in SEO? How Search Engines Crawl a Site. Want it handled for you? See our AI SEO (GEO) services.

Scroll to Top