AI Crawler Log Analysis

How to pull server or CDN logs and analyze AI-bot activity — verifying GPTBot, ClaudeBot, and PerplexityBot against spoofing, choosing a tool, and reading crawl frequency, crawl-vs-render, and status codes.

First published: Jul 3, 2026 · Last updated: Jul 15, 2026 · Advanced
demand #6 in Measurement and Reporting#30 in AI Search#381 on the site
1 evidence signal on this page

AI crawler log analysis is how you inspect — with your own first-party logs, not a vendor dashboard — which claimed AI bots requested your site and what the server returned. Verification is provider-specific: OpenAI publishes bot-specific IP range files, and Anthropic publishes a current shared bots.json list; a user-agent without a current official verification method remains a claim, not a verified identity. Keep raw-HTML dependency as an observed risk rather than asserting that every major AI crawler never runs JavaScript; asset-request patterns describe the measured sample, not a universal renderer contract. Crawl frequency still does not predict citation — retrieval is necessary but not sufficient. Tools scale from grep to Screaming Frog LFA to ELK/Splunk to BigQuery/Cloudflare.

TL;DR — Pull your Apache/Nginx or CDN access logsLog file analysis is reading a web server's raw access logs to see exactly which URLs search engine crawlers actually requested, when, how often, and what status code they got. Unlike crawl tools or Search Console, logs are the unsampled, ground-truth record of what really happened., then do four things: verify (match the user-agentA user agent is the HTTP request header a client (browser, crawler, or bot) sends to identify itself. For crawlers, a short user-agent token — a substring of that string — is what robots.txt rules actually target. and confirm the IP against each operator’s published list — spoof rates run from HUMAN Security’s 5.7% to Duane Forrester’s self-tested 81.8%); choose a tool by scale (grep → Screaming Frog Log File Analyser → ELK/Splunk → BigQuery/Cloudflare); measure crawl frequencyCrawl frequency is how often a search engine comes back to re-fetch a page it already knows about. Popular pages that change often get refreshed many times a day; stable pages can go weeks or months between crawls — and you influence it indirectly, not by setting a dial. by botA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index., which pages get hit, crawl-vs-render, and status codes; and interpret honestly — retrieval is necessary but not sufficient, so “more crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor. = more citations” is unproven. This is the method sibling to AI crawlersAI crawlers are bots from AI companies that fetch web pages to train language models, build AI-search indexes, or answer live user questions. They come in three categories, each with its own user-agent tokens and its own robots.txt controls. (which owns what the bots are), AI traffic attributionAI traffic attribution is the practice of correctly identifying and measuring website visits that come from AI tools — ChatGPT, Perplexity, Gemini, Claude, AI Overviews, and AI browsers. It's hard because many of those tools strip the referrer header, so the visits land in your analytics as Direct traffic with no source. (the click side), and LLM visibilityLLM visibility (or AI visibility) is the aggregate measure of how often and how prominently a brand or page shows up in AI-generated answers — across AI Overviews, ChatGPT, Perplexity, Copilot, and Gemini. It's the AI-search analog of organic visibility, but it's driven by different signals. (the retrieved → mentioned → cited framework this observes the first stage of).

What this article owns — and what it doesn’t

Logs demonstrate requests, not whether content was used for training, retrieval, or an answer. Evidence for this claim Server access logs record requests and can include fields such as request path, status, referrer, and user agent. Scope: Apache HTTP Server logging; available fields depend on server configuration. Confidence: high · Verified: Apache: Log files Verify bots using provider-published mechanisms where available and treat attribution as bounded evidence. Evidence for this claim OpenAI publishes user-agent tokens and controls for several of its crawlers. Scope: OpenAI's documented crawlers; a user-agent string is not proof of downstream training, retrieval, citation, or use. Confidence: high · Verified: OpenAI: Crawlers

The sibling AI crawlers articleAI crawlers are bots from AI companies that fetch web pages to train language models, build AI-search indexes, or answer live user questions. They come in three categories, each with its own user-agent tokens and its own robots.txt controls. already owns the bot-by-bot table, the three-category taxonomy (training / AI-search / user-triggered fetch), the Google-Extended-is-a-token-not-a-bot distinction, and the robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere. recipes. I’m not re-deriving any of that here. AI traffic attributionAI traffic attribution is the practice of correctly identifying and measuring website visits that come from AI tools — ChatGPT, Perplexity, Gemini, Claude, AI Overviews, and AI browsers. It's hard because many of those tools strip the referrer header, so the visits land in your analytics as Direct traffic with no source. owns the GA4/referrer side — what the bot sent back. This article is the opposite side of the funnel: what the bot took. And LLM visibility owns the retrieved → mentioned → cited framework; log analysis is how you observe the retrieved stage specifically, and nothing past it.

This is the AI-era sequel to classic SEO log file analysisLog file analysis is reading a web server's raw access logs to see exactly which URLs search engine crawlers actually requested, when, how often, and what status code they got. Unlike crawl tools or Search Console, logs are the unsampled, ground-truth record of what really happened.. When I reviewed Ahrefs’ How to Do an SEO Log File Analysis, the dimensions were crawl frequencyCrawl frequency is how often a search engine comes back to re-fetch a page it already knows about. Popular pages that change often get refreshed many times a day; stable pages can go weeks or months between crawls — and you influence it indirectly, not by setting a dial., URLs crawled, status codes, and bot verification against Google’s published IPs. Same skeleton here — but pointed at a bot population that mostly doesn’t render JavaScript, gets impersonated constantly, and crawls in erratic bursts rather than a steady stream.

Step 1 — Get your logs

Your logs live in one of two places, or both:

  • Origin server logs. Apache (access.log), Nginx (access.log), or your app server. Each line has, at minimum: timestamp, client IP, request method + path, status code, bytes, referrer, and user-agent.
  • CDN / edge logs. If you’re behind Cloudflare, Fastly, Akamai, etc., a lot of bot traffic is answered at the edge and may never reach your origin — so the edge log is the fuller record. Cloudflare exposes this via Logpush (and a GraphQL API); Fastly via real-time log streaming.

The fields you actually need for AI-bot analysis: timestamp, client IP, user-agent, request path, status code, and ideally bytes and referrer.

The practical problem is retention. Many hosts keep only a few days of logs. Lauren Busby’s Search Engine Land piece names the fix directly — a scheduled pull turns a short window into something analyzable over time: a scheduled SFTP job, built in a workflow tool like n8n or scripted, is enough to turn a short retention window into something you can actually analyze over time (Busby, SEL). Set that up before you need the data.

One honest limit to keep in mind from the start: as Busby puts it, log files show you what reached your site, but they don’t always show you what tried to (SEL) — requests blocked or answered upstream may not appear at all.

Step 2 — Verify before you trust the user-agent

This is the step that separates AI-bot log analysis from the classic version, and the one most competing how-tos skip. User-agent strings are trivially spoofed. Two independent data points on how bad it gets:

  • HUMAN Security analyzed two weeks of traffic claiming to be one of 16 well-known AI crawlersAI crawlers are bots from AI companies that fetch web pages to train language models, build AI-search indexes, or answer live user questions. They come in three categories, each with its own user-agent tokens and its own robots.txt controls. and found 5.7% of it was spoofed — roughly 1 in 18 requests (reported via SEJ).
  • Duane Forrester ran the same check on his own logs and found far worse. Of 33 requests carrying a live-fetch name, six came from an IP the vendor publishes and twenty-seven did not — an 81.8% spoof rate among the requests he could check (SEJ). His GooglebotGooglebot is Google's web crawler — the software that fetches pages so Google can index and rank them. It comes in two variants, Googlebot Smartphone (primary, under mobile-first indexing) and Googlebot Desktop, and runs an evergreen Chromium renderer. number was worse still: of 799 requests carrying the Googlebot name, only 107 came from a verified Google address — the other roughly 87% were not Google (SEJ).

Treat those as directional from different samples and methods, not one universal number. More importantly, do not generalize one provider’s verification method to every bot. Some operators publish address ranges; others document user-agent tokens without a current public range or DNS-verification contract (SEJ).

The verification method:

  1. Match the user-agent string. GPTBot identifies itself as Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.3; +https://openai.com/gptbot; OAI-SearchBot and ChatGPT-User carry their own tokens (OpenAI bots docs).
  2. Use the provider’s current official verification method when one exists. OpenAI ships openai.com/gptbot.json, searchbot.json, and chatgpt-user.json. Anthropic’s current crawler documentation says an address in its published list indicates a crawlerA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index. is coming from Anthropic. Use that current provider-specific method; do not generalize it into a universal bot-verification rule.
  3. Do not invent a fallback. Reverse-plus-forward DNS is valid for a provider only when that provider publishes the hostname pattern and verification procedure. A generic PTR match proves control of DNS, not the claimed bot identity. Screaming Frog’s Log File Analyser can apply publicly confirmed lists where available; its verify-on-import feature performs a lookup against publicly confirmed IP lists to confirm bots are genuine (Screaming Frog).

Verification should inform precise policy and incident response. Prefer the provider’s documented robots token for a crawl policy; reserve network controls for abuse or security cases and label them separately from robots compliance.

TIP Verify crawler claims before trusting the totals

The tool can flag a claimed crawler outside its operator's published ranges; treat that as a spoofed claim, then choose a response based on behavior.

Upload a representative access-log sample and inspect identity, response, and crawl-pattern findings with my free Log File Analyzer Free

  1. Include timestamp, IP, user-agent, path, and status fields so identity and response findings have evidence.
  2. Review range mismatches before aggregating requests under a famous crawler name.
  3. Use the exact paths and status groups to separate a spoofing problem from wasted crawl, errors, redirects, or missing important URLs.
This sample exposes three different decisions: a spoofed crawler claim, a training-access policy choice, and non-200 crawl waste. Do not collapse them into one bot score.

The completed Log File Analyzer result reports that 30 requests spoofed a verified crawler because one IP used a search or AI-crawler user-agent outside that operator's published ranges. It recommends verifying the owning network before blocking or rate-limiting. A separate finding says AI-training crawlers account for 32.1 percent of crawler traffic, or 93 hits, and frames allow versus disallow as a business decision. Another finding says Googlebot spent 49.6 percent of 129 requests on non-200 responses, including 404 and 410 URLs, redirects, and server errors. These are distinct findings with distinct remedies.

Step 3 — Choose your tool

Scale it to the size of the job, roughly free → paid, ground-truth → managed:

  • grep / PowerShell — a quick one-off count and a verification-aware filter. The AI crawlers articleAI crawlers are bots from AI companies that fetch web pages to train language models, build AI-search indexes, or answer live user questions. They come in three categories, each with its own user-agent tokens and its own robots.txt controls. has the basic bot-count snippet; the Scripts tab here extends it into IP verification, a status-code breakdown, and crawl-vs-render detection.
  • Screaming Frog Log File Analyser — a desktop importer with built-in AI-bot presets (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Perplexity-User, CCBot) and a “Verify Bots When Importing” toggle. Its Response Codes tab breaks 2XX/3XX/4XX/5XX per URL, the User AgentsA user agent is the HTTP request header a client (browser, crawler, or bot) sends to identify itself. For crawlers, a short user-agent token — a substring of that string — is what robots.txt rules actually target. tab shows requests and error rates per bot, the URLs tab sorts by Num Events (most-fetched pages), and the IPs tab lets you investigate suspicious sources (tutorial).
  • ELK Stack (Elasticsearch / Logstash / Kibana) or Splunk — for continuous, larger-scale ingestion with dashboards and alerting, once a single-import desktop tool gets too slow or you want ongoing monitoring rather than periodic exports.
  • BigQuery — for long-term retention and SQL querying at scale, commonly fed by Cloudflare Logpush or a scheduled GraphQL pull from Cloudflare’s httpRequestsAdaptiveGroups dataset, so you can query bot activity by page, date, and status code without re-importing flat files.
  • Cloudflare AI Crawl Control (for sites behind Cloudflare) — a managed dashboard for crawler activity and request patterns, bot verification, and directive-compliance tracking, without building your own pipeline (docs).

Step 4 — What to measure and how to read it

Crawl frequency by bot. Hits per day/week per bot name. AI bots crawl in bursts, not steady streams. In WISLR’s 48-day CDN-log case study, GPTBot was absent for weeks, then hit 187 requests in a single week — 152 of them in a three-minute burst, peaking at 114 requests/minute (WISLR). Read frequency as pattern, not just a total.

Which pages get hit — and which important ones don’t. Sort by request count. Busby notes AI crawlers commonly stay shallow — it’s common to see them limited to top-level pages: the homepage, primary navigation, and a small number of high-level URLs (SEL) — dropping off sharply for deep pages even when those deep pages matter most for citation. A deep page that never appears in the logs can’t be retrieved.

Raw-HTML dependency — measure, don’t universalize. Provider documentation does not give one shared JavaScript-renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM. contract for GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, PerplexityBot, and other agents. One observed signature is still useful: in WISLR’s sample, ChatGPT-User fetched HTML only — zero requests for images, CSS, or JS files — while Googlebot and OAI-SearchBot also pulled images (WISLR). If your logs show AI bots hammering pages whose raw HTML is a near-empty JS shell, that’s a checkable dependency risk, not proof that every provider always behaves this way. Compare delivered HTML with outcomes or provider-specific fetch tests. (For the rendering fundamentals, see JavaScript SEOMaking sure search engines can crawl, render, and index content that depends on JavaScript..)

Status-code / blocked breakdown. Watch: 200 (success), 304 (not modified — good, efficient re-crawl), 404 (broken links the bot followed), and 403/429 (blocked / rate-limited). Busby specifically calls out that log files surface where crawlers encounter issues, including 403 responses (blocked requests) and 429 responses (rate limiting) (SEL). Check whether that blocking is intentional or an accident.

robots.txt and llms.txtllms.txt is a proposed (not adopted) Markdown file at /llms.txt that gives AI systems a curated map of a site's most important pages. Proposed by Jeremy Howard in 2024, it's read mostly by coding agents like Claude Code — not search crawlers — and Google ignores it. requests as their own signal. Cross-reference which bots request /robots.txt at all before crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor. — in WISLR’s sample, GPTBot and Meta-WebIndexer never checked it across 48 days — and whether disallowed paths get hit anyway. WISLR also logged zero requests to /llms.txt from any AI bot over those 48 days (WISLR), consistent with the roughly 97%-unread finding covered in the AI crawlers article. Don’t expect llms.txt requests in your logs as proof it “works.”

Does more crawling mean more citations? Be honest.

No established data supports “crawl more, get cited more.” Retrieval is a necessary precondition for citation but nowhere near sufficient — pages get crawled constantly and never cited, whether because of client-side rendering, paywalls, thin or duplicate contentThe same or very similar primary content reachable at more than one URL. There's no general duplicate content penalty — the real costs are possible signal dilution, the wrong URL getting chosen, and less-efficient crawling., or simply losing to a better source in the model’s retrieval/ranking step. The load-bearing framing lives in the LLM visibility article: retrieved → mentioned → cited, and log analysis observes only that first stage.

The way to close the loop honestly is to pair the crawl-input side (your logs) with the citation-output side. Bing’s AI Performance reportThe Google Search Console report that shows how your site actually performed in Google Search, built from real impressions and clicks. It reports four metrics — clicks, impressions, average CTR, and average position — and keeps the most recent 16 months of data. (public preview, Feb 2026) is the first official tool exposing citation data alongside its groundingGrounding is anchoring an AI model's answer to source documents it retrieves at the moment you ask — not to the patterns frozen into its weights during training. Retrieval-Augmented Generation (RAG) is the most common way to do it. queries — the key phrases the AI used when retrieving content that was referenced in AI-generated answers (Bing Webmaster Blog). Logs tell you what got taken; grounding queries and citation counts tell you what came of it. Neither alone is the whole picture — see the measurement and reportingAI search measurement and reporting is the practice of tracking and communicating how AI search features — AI Overviews, AI Mode, ChatGPT, Perplexity, Gemini, Copilot — affect a brand's visibility, traffic, and revenue. It exists because most AI-referred traffic and exposure is invisible in standard analytics. hub for how these layers stack.

The stealth-crawling wrinkle

Verification isn’t a one-time audit. Per Seer Interactive’s Clint Spaulding, once blocked, stealth crawlers can reappear under generic browser headers and unrelated IPs — these sessions look human in logs, which means session counts get inflated, bot traffic gets undercounted, and GEOGenerative Engine Optimization — visibility inside AI answer engines. segmentation becomes less trustworthy (Seer). His blunt summary: if you can’t see these stealth crawlers, you can’t measure their impact. This is exactly why log analysis needs periodic re-verification and re-baselining, not a single pass.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.