top of page

Understanding Server Log Analysis for AI Crawlers and What It Reveals

  • Writer: Harold Bell
    Harold Bell
  • Aug 10
  • 6 min read

Updated: 4 days ago

Modern laptop on a wooden desk displaying analytical software with eyeglasses nearby, indoor shot.

Key Takeaways

  • Server logs are the only direct evidence that AI crawlers reach your pages. Every other signal is inference.

  • Filter by user agent, then verify against published IP ranges, because user agent strings are trivially spoofed.

  • Which bots arrive tells you your access configuration. Which pages they favour tells you your crawl path.

  • Retrieval bot absence is a robots.txt or indexing problem. Retrieval bot presence without citations is a content problem.

  • On hosted platforms without log access, Bing Webmaster Tools crawl reports are the closest available substitute.


Almost every AI visibility diagnosis I run starts in the same place, and it isn't a tracking tool. It's the server logs, because they answer a question no prompt panel can. Did the bot actually reach the page?


In more than 16 years of building content programs for enterprise technology brands, I've watched teams spend months optimising content for engines that were never able to fetch it. Logs would have told them in an afternoon.



Why do server logs matter for AI visibility

They're the only direct evidence that an AI crawler requested your page. Prompt tracking tells you what an engine said. Search consoles tell you what a search engine indexed. Only logs tell you whether the AI bot showed up at all.


The two failures that look identical

This distinction matters because the two most common AI visibility failures present the same way from outside. A brand absent from ChatGPT answers might have content that isn't extractable, or might be blocking OAI-SearchBot in a robots.txt nobody has read since 2023.


Same symptom, completely different fix, and they route to different teams. One is a writing and structure problem. The other is a twenty minute configuration change. Guessing between them costs a quarter, and the logs separate them in minutes.



What should you filter for during server log analysis


Server log analysis starts with the user agent strings for the bots that matter, grouped by job rather than by vendor.


  • Retrieval layer. OAI-SearchBot, Claude-SearchBot, PerplexityBot, Bingbot. These decide citation eligibility, so their absence is the most urgent finding.


  • User triggered layer. ChatGPT-User, Claude-User, Perplexity-User, Meta-ExternalFetcher. Their presence means real people are handing your pages to assistants, which is a demand signal worth tracking on its own.


  • Training layer. GPTBot, ClaudeBot, CCBot, Google-Extended, Applebot-Extended, meta-externalagent. Informational rather than urgent.


  • Everything else claiming to be one of the above. Verify before you count it.


The queries to start with

Three passes over a combined log format get you most of the way.

# Count requests by AI user agent, last 30 days

grep -Ei 'gptbot|oai-searchbot|chatgpt-user|claudebot|\

claude-searchbot|claude-user|perplexitybot|ccbot' access.log \

  | awk -F'\"' '{print $6}' \

  | sort | uniq -c | sort -rn


# Which URLs OAI-SearchBot actually fetched

grep -i 'oai-searchbot' access.log \

  | awk '{print $7}' \

  | sort | uniq -c | sort -rn | head -50


# Status codes returned to a given bot

grep -i 'perplexitybot' access.log \

  | awk '{print $9}' | sort | uniq -c


Why status codes matter as much as counts

The third query is the one people skip and it's often the most revealing. A bot that arrives regularly and receives 404s or 500s is being taught your site is unreliable, and it will crawl you less over time.


Look at the ratio rather than the absolute number. A few percent of errors is normal on any site of size. A quarter of requests returning errors is a finding, and it explains crawl decay better than anything you'll read about content quality.



How do you tell a real bot from a spoofed one

Verify the request IP against the crawler operator's published IP ranges. OpenAI, Anthropic, and Perplexity all publish theirs. A user agent string is a field anyone can type, and impersonating known AI bots has become common as allowlisting has spread.


Practically, that means pulling the distinct IPs behind each user agent and checking them against the current published ranges rather than a copy you saved. Ranges change, and a stale allowlist fails in the direction of letting the wrong things through.


Anything claiming to be GPTBot from outside OpenAI's range is a scraper wearing a costume, and knowing that changes what you do about the volume. It moves the conversation from crawl policy to abuse handling, which is a different team and a different tool.



What do the patterns actually tell you


Four readings cover most of what you'll find, and each routes to a different owner.


  • No retrieval bots at all. Access problem. Check robots.txt first, then platform level blocks, then any firewall or bot management rule your infrastructure team added.


  • Retrieval bots arriving but only hitting your homepage. Crawl path problem. Your internal linking isn't leading anywhere, which is the same failure that starves search indexing.


  • Retrieval bots arriving broadly, no citations appearing. Content problem, not access. Your pages are reachable and not quotable, which routes to extractability and structure work.


  • High volume, non 200 status codes. Technical problem. Fix this before anything else, because it degrades every other signal.


The two readings people conflate

The second and third are the useful ones, because they're the two most teams never distinguish. Both look like we aren't getting cited. They have nothing else in common.

Routing a content problem to your infrastructure team, or an access problem to your writers, wastes a quarter either way and damages trust in the programme while it's happening. The log tells you which conversation to have before you have it.



What if you can't access server logs

Use Bing Webmaster Tools crawl reports as the closest substitute. They show Bingbot activity directly, and since Bing's index feeds ChatGPT search, Bingbot behaviour is a reasonable proxy for whether that retrieval path is healthy.


The substitute stack

Bing's index feeds ChatGPT search, so Bingbot behaviour is the closest proxy you have for that retrieval path. On Wix and similar hosted platforms, raw access logs generally aren't exposed, so you assemble the picture from three places instead.



That combination isn't as good as logs and won't show you status code ratios or per path behaviour. It's good enough to distinguish an access problem from a content problem, which is the decision the logs exist to support.


How often to run this

Monthly as routine, and immediately after any robots.txt change, platform migration, or firewall rule update. Those three events cause most of the sudden access failures I see, and all three are the kind of change nobody thinks to mention to the marketing team.



What's next


Log analysis is the cheapest diagnostic in AI visibility work and the one most teams skip. If you want help separating an access problem from a content problem, that's exactly the conversation to have.


Book a 30 minute working session at cal.com/mqlmagnet/30min and we'll look at your setup together.



Frequently asked questions


How do I know if ChatGPT has crawled my site

Filter your access logs for OAI-SearchBot and ChatGPT-User, then verify the IPs against OpenAI's published ranges. OAI-SearchBot presence means your pages are eligible for the ChatGPT search index. ChatGPT-User presence means real people are opening your pages from ChatGPT.


Can I see AI crawler traffic in Google Analytics

Not reliably. Analytics runs on JavaScript that most crawlers don't execute, so bot traffic is largely invisible there by design. Server logs or an edge provider's bot analytics are where this data lives.


How often should I check AI crawler logs

Monthly as routine, and immediately after any robots.txt change, platform migration, or firewall rule update. Those three events cause most of the sudden access failures I see.


What does it mean if only training bots are visiting

Your retrieval access is likely blocked. Training collectors and search bots are named separately in robots.txt, so a rule catching one and not the other is a common misconfiguration. Check for a vendor wide block.


Is high AI crawler traffic a problem

Usually it's a crawl efficiency signal rather than an attack. It typically traces to faceted URLs, parameters, or calendar pages generating infinite variants. Tighten internal linking and disallow the parameter patterns before you consider blocking anything.


Comments


bottom of page