Losing clicks to competitors? Find out exactly why, and what to fix first.

Show me why
Skip to content

SEO Audits

Log File Analysis for SEO: How to Parse Server Logs and Audit Crawling

Add saadrazaseo.com as a preferred source on Google

No pressure and no sales script. Just honest answers.

Short answer: Log file analysis for SEO means reading your server’s raw access logs to see which URLs Googlebot, Bingbot and AI crawlers actually request, how often, and what status code they get back. You collect 30 to 90 days of logs, parse each line into fields, verify the bots are genuine, then group requests by site section and status code to find wasted crawling, errors, orphan pages and important pages bots ignore.

30% to 50%Googlebot’s share of AI and search crawler traffic on Cloudflare’s network, May 2024 to May 2025Cloudflare, 2025
305%Growth in GPTBot’s raw requests over the same year, so AI bots now belong in every log reviewCloudflare, 2025
1M+ pagesGoogle’s rough threshold (or 10,000+ pages that change daily) for sites where crawl budget needs active managementGoogle Search Central, 2026
Sample onlySearch Console’s Crawl Stats report covers Google alone and its example URLs are only a representative sampleSearch Console Help

This guide is for SEOs, developers and site owners who suspect crawling is the reason pages are slow to index, and who want to read their own server logs rather than guess. By the end you will be able to get the files, parse them with a few commands or a tool, verify which bots are real, spot the patterns that matter and turn them into fixes. I use exactly this process on technical audits, migrations and large e-commerce sites.

What a server log contains

Every time Googlebot, Bingbot, GPTBot or any other client requests a URL, your server writes one line to its access log. Crawling tools simulate what a bot might do and Search Console summarises what Google chooses to report, but the log records what actually happened, request by request. Most servers (Apache, Nginx, LiteSpeed, IIS) use Common Log Format, Combined Log Format or W3C Extended. A typical Combined Log Format line looks like this:

66.249.66.1 - - [14/Oct/2026:09:12:44 +0000] "GET /services/technical-seo/ HTTP/1.1" 200 18432 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

FieldValue in the exampleWhy it matters for SEO
IP address66.249.66.1Needed to verify that a “Googlebot” is really Google
Timestamp14/Oct/2026:09:12:44 +0000Crawl frequency, trends and time to first crawl
Method and URLGET /services/technical-seo/Which pages and parameters bots spend time on
ProtocolHTTP/1.1Context only; Googlebot can also crawl over HTTP/2
Status code200Errors, redirects and soft 404s bots receive
Bytes sent18432Heavy pages and resources
Referrer–Usually empty for bots; useful for humans
User agentGooglebot Smartphone stringWhich bot claims to be visiting

Some servers and CDNs can also log response time, cache status and host name. If you can switch on response time, do it. It is one of the most useful fields for SEO and it is usually off by default.

Why log file analysis matters for SEO

Search Console’s Crawl Stats report (under Settings) is a good starting point, but Google’s help page is clear that it covers Google’s crawling only, that its example URLs are a representative sample, and that its numbers can differ from your server logs. Logs give you every request from every bot, which lets you answer questions no other source can:

  • Is crawling being wasted? Faceted navigation, sort and filter parameters, session IDs, internal search and calendar archives can absorb a large share of bot requests. I explain the concept in what crawl budget is and how to optimise it.
  • Are important pages crawled at all? New products, updated service pages and key articles that bots rarely request will be slow to index and slow to reflect changes.
  • What errors do bots actually get? Intermittent 5xx errors and timeouts often appear in logs before Search Console reports them. Google says that when a site returns server errors or rate-limiting signals such as 429, its crawl capacity limit goes down and it crawls less (Google Search Central).
  • Are redirects respected? If bots keep requesting old URLs months after a migration, internal links or sitemaps still point at them.
  • Which AI crawlers visit, and how much? Logs show whether GPTBot, ClaudeBot, PerplexityBot and others reach your content, and whether your robots.txt rules work.
  • Do bots find orphan pages? URLs bots request that your site no longer links to usually come from old sitemaps, external links or leftover templates.

Do small sites need it?

Google’s own guidance on crawl budget is aimed at sites with roughly a million or more pages that change weekly, or 10,000 or more that change daily, and its Crawl Stats help says sites under about a thousand pages usually do not need that report. My rule follows the same logic: for a well-indexed site of a few hundred pages, logs are a check you run when something looks wrong. For e-commerce, marketplaces, publishers and sites with tens of thousands of URLs, logs are often where the real problem is found.

Not sure if this is hurting your site?

Get the fixes that matter most, in priority order.

Find my blockers

How to get your log files

  • VPS or dedicated server: usually /var/log/nginx/access.log or /var/log/apache2/access.log (/var/log/httpd/ on some distributions), with older files rotated and compressed as .gz.
  • Shared hosting and cPanel: look for “Raw Access” in cPanel. Many Pakistani businesses I work with are on shared cPanel plans where raw logs are kept for only a few days, so turn on log archiving or download the files weekly before you need them.
  • Managed WordPress hosts: some provide access logs in the dashboard or over SFTP; others only through support.
  • CDNs and load balancers: if Cloudflare, Fastly, Akamai or a cloud load balancer sits in front of the site, many bot requests are answered at the edge and never reach your origin. You need the CDN’s logs too (for example Cloudflare Logpush or AWS CloudFront logs), or you will undercount crawling.

Aim for at least 30 days of data, and 60 to 90 days for large sites or around a site migration. If the site runs on several servers, collect from all of them.

Privacy: IP addresses are personal data under GDPR, UK GDPR and similar laws. Filter to bot traffic early, keep raw files secure, and strip or anonymise human IPs before sharing logs with an agency or consultant. When clients send me logs, I ask for bot lines only where their setup allows it.

How to parse server logs

Parsing turns each raw line into columns you can filter and count. There are three practical routes, and most audits use more than one.

1. Command line for a quick look

On Linux or Mac, a few commands answer basic questions in seconds. To count Googlebot requests by status code:

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

To list the URLs Googlebot requests most often:

grep "Googlebot" access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -50

To see how many Googlebot requests hit URLs with a query string:

grep "Googlebot" access.log | awk '{print $7}' | grep -c "?"

Field positions vary with the log format, so check a sample line first. Use zcat or zgrep for compressed files.

Worked example: reading the output of the status code command

Suppose the first command returns 8,400 lines with 200, 1,900 with 301, 600 with 404 and 100 with 503, out of 11,000 Googlebot requests in 30 days. That means about 17% of Googlebot’s requests went to redirects and about 5% to missing pages. Neither number is a disaster on its own, but the next step is clear: run the second command filtered to 301s (grep "Googlebot" access.log | awk '$9==301 {print $7}' | sort | uniq -c | sort -rn | head) to see which old URLs keep being requested, then find the internal links or sitemap entries that still point to them. The 503s need a look at the timestamps, because errors clustered at the same hour usually mean a backup job or traffic spike is overloading the server. These figures are illustrative, not from a client.

2. Dedicated log analysis tools

  • Screaming Frog Log File Analyser: a desktop tool that imports common formats, verifies search bots and combines log data with a crawl to find orphan and uncrawled URLs. The free version has a small event limit.
  • Semrush Log File Analyzer: browser-based, fine for a first look at bot activity and status codes.
  • JetOctopus, Botify, Oncrawl and similar: cloud platforms built for large sites, with continuous log ingestion and crawl comparisons.

3. Spreadsheets, Python or a data warehouse

For small sites, a filtered export into Excel or Google Sheets with pivot tables on status code, URL and user agent is enough. For millions of lines, Python with pandas, BigQuery or an ELK stack scales far better, and scripts can run weekly so you see trends rather than one snapshot. Whatever the method, standardise the format first: custom log formats are the most common reason imports fail.

Verify the bots before you trust the data

User agents can be faked, and scrapers often pretend to be Googlebot. Unverified data leads to wrong conclusions, so verify before you count anything.

  • Google: Google’s verification guide says to run a reverse DNS lookup on the IP, confirm the host ends in googlebot.com, google.com or googleusercontent.com, then run a forward lookup on that host and check it returns the same IP. For bulk checks, match IPs against Google’s published JSON lists such as common-crawlers.json and special-crawlers.json.
  • Bingbot: reverse DNS should resolve to search.msn.com, and Bing Webmaster Tools has a verification tool.
  • AI crawlers: OpenAI and Perplexity publish IP ranges for their bots. Where an operator publishes ranges, check against them; where it does not, treat high-volume requests with that user agent as unverified.

For a one-off check, host 66.249.66.1 on the command line, or my free DNS lookup tool, gives you the reverse record. Also separate Google’s crawler types. Googlebot Smartphone should account for most crawling on a mobile-first site; Googlebot Desktop, Googlebot-Image, Googlebot-Video, Storebot-Google, AdsBot-Google, Google-InspectionTool (used by URL Inspection) and GoogleOther each have different jobs and should not be counted as one bot.

AI crawlers to look for in your logs

AI companies now crawl both to train models and to answer users’ questions in real time. Their behaviour can differ a lot from Googlebot’s, so I segment them separately on every audit.

User agentOperatorWhat it is for
GPTBotOpenAICollecting content that may be used to train OpenAI’s models
OAI-SearchBotOpenAIFinding pages to show in ChatGPT search results
ChatGPT-UserOpenAIFetching a page when a ChatGPT user’s request needs it
ClaudeBotAnthropicCollecting content that may be used for model training
Claude-SearchBot and Claude-UserAnthropicSearch indexing and user-requested fetches for Claude
PerplexityBotPerplexityIndexing pages to surface and link in Perplexity answers
Perplexity-UserPerplexityFetching pages in response to a user’s question
CCBotCommon CrawlOpen web crawl widely used as AI training data
BytespiderByteDanceCrawling associated with ByteDance products and AI models

You will not find Google-Extended in your logs. Google’s crawler documentation says Google-Extended has no separate user agent string; it is a robots.txt control token, and it does not affect inclusion or ranking in Google Search. Google crawls with its normal Googlebot user agents, so any Gemini-related fetching simply appears as Googlebot.

When you review AI crawlers, check:

  • Which bots visit, how often and which sections they request.
  • Whether bots you have disallowed still appear and get 200 responses. If they do, the rule is wrong or the bot ignores it, and a CDN or firewall rule is the next step. My robots.txt tester and AI crawler checker shows what your current file allows.
  • Whether bots you want, such as OAI-SearchBot or PerplexityBot, are being blocked by a security plugin and receiving 403 errors. I find this more often than deliberate blocking.
  • Server load from aggressive crawling, especially on small hosting plans.

Whether to allow or block each one is a business decision. I explain the trade-offs and the syntax in AI crawlers explained, and the basics of the file in my guide to robots.txt.

What to look for: from findings to fixes

Once logs are parsed and bots verified, segment requests by bot, by site section (products, categories, blog, parameters, assets) and by status code. These are the patterns I check on every audit:

What you see in the logsWhat it usually meansTypical fix
High share of bot hits on parameter, filter or sort URLsFaceted navigation creating a near-infinite URL spaceStop linking to low-value combinations, use canonicals, disallow clear crawl traps
Key pages crawled rarely or not at allWeak internal linking, deep click depth or missing from sitemapsLink from hubs and navigation; add to XML sitemaps with accurate lastmod
Many requests returning 301 or 302Internal links and sitemaps still pointing at old URLs, or redirect chainsUpdate links to final URLs and collapse chains to one hop
Repeated 404 or 410 requestsDeleted pages still linked internally, in sitemaps or from other sitesRemove internal links; redirect where a relevant replacement exists
5xx errors or timeouts at certain timesServer capacity, slow queries, backups or plugin problemsFix with hosting or developers; Google crawls less when it sees server errors
200 responses on thin or empty pagesSoft 404s, such as empty category or search pagesReturn 404 or 410, or noindex and remove links
Bots requesting URLs not found in your site crawlOrphan pages, old sitemaps or leftover URLsLink valuable orphans; redirect or remove the rest
Disallowed AI bots still getting 200 responsesRobots.txt mistake or a bot ignoring robots.txtCorrect the rule; enforce at the CDN or firewall if needed

Two more checks are worth the time. First, compare Googlebot Smartphone to Desktop requests; if desktop dominates, check whether the mobile version serves the same content. Second, measure how many days pass between publishing or updating a key URL and its first Googlebot request. That tells you more about crawl priority than any total. My posts on crawl traps, crawl demand and faceted navigation go deeper. To confirm what a flagged URL returns right now, run it through my redirect and status code checker.

Crawl waste calculator

Share spent on parameter URLs23.6%
Share spent on non-200 responses23.6%
Under 10%: parameter crawling is unlikely to be your main issue. Look at uncrawled key pages and errors instead.
10% to 30%: worth reviewing which parameter patterns get the most hits and whether any of them are linked from navigation or filters.
30% or more: on a large site this is usually the first thing I fix: stop linking to low-value combinations and block clear crawl traps.

These bands are my working thresholds from audits, not Google figures. Some parameter URLs are legitimate (for example paginated categories), so check the patterns before blocking anything. Overlap between the two numbers is normal.

How to run a log-based SEO audit

This is the order I work in. Tick each step as you go.

Log file audit checklist

  • Set the question: write down what you want to learn (wasted crawling, uncrawled pages, migration checks, AI bots) before opening a file.
  • Collect the logs: 30 to 90 days from every origin server and the CDN.
  • Clean and parse: standardise the format, split into fields, remove uptime monitors and your own tools.
  • Strip personal data: keep bot lines, drop or anonymise human IPs.
  • Verify bots: confirm Googlebot, Bingbot and AI crawlers by DNS or published IP ranges and set aside fakes.
  • Split Google’s crawlers: Smartphone, Desktop, Image, AdsBot and GoogleOther counted separately.
  • Crawl the site: run Screaming Frog or Sitebulb and export your XML sitemap URLs.
  • Match the datasets: find URLs crawled but not linked (orphans) and URLs linked but never crawled.
  • Segment and count: requests by bot, site section, status code and day.
  • Cross-check Search Console: compare with Crawl Stats and the page indexing report.
  • Prioritise fixes: rank by how many important URLs each issue affects and how easy it is to fix.
  • Re-check: analyse fresh logs four to eight weeks after the fixes.

Ticks are saved in your browser.

The cross-check step is where logs pay off. If an important page shows as “Discovered, currently not indexed” in Search Console and the logs show Googlebot never requested it, the problem is crawl priority and internal linking, not the content itself. My guide to the Search Console coverage report explains those statuses, and keeping your XML sitemap accurate helps bots find the right URLs.

On a mid-sized site, the first full pass usually takes about a working day once the logs are in hand; getting access to the logs often takes longer than the analysis. Run one after a migration or redesign, when indexing drops without an obvious cause, and before and after large navigation changes. Monthly suits big e-commerce and publishing sites; quarterly is enough for most others.

Common mistakes in log file analysis

  • Not verifying bots, so fake Googlebots inflate crawl numbers and send you chasing the wrong problem.
  • Ignoring CDN logs, which can hide most crawling on a cached site.
  • Analysing one day, which shows noise rather than patterns.
  • Treating every Google user agent as Googlebot, mixing AdsBot and Googlebot-Image into the totals.
  • Reading logs in isolation, without a crawl, sitemap or Search Console data for context.
  • Blocking without checking, such as disallowing a parameter that also appears on canonical URLs.
  • Keeping raw IPs longer than needed, which adds privacy risk without SEO value.

Log analysis sits inside the wider process of how search engines crawl and index pages. It is part of my technical SEO services, and for online shops with faceted navigation it is often where my e-commerce SEO work begins.

Frequently asked questions

What is log file analysis in SEO?

It is the review of your server’s access logs to see exactly how search engine and AI crawlers request your pages: which URLs, how often and with what status codes. It reveals crawl waste, errors and ignored pages that crawling tools and Search Console can miss.

What is the difference between log file parsing and log file analysis?

Parsing is the mechanical step of splitting each raw line into fields such as IP, timestamp, URL, status code and user agent. Analysis is what you do with the parsed data: filtering to verified bots, grouping by section and status, and deciding what to fix.

How is log data different from Google Search Console?

The Crawl Stats report covers Google only, shows aggregated totals and a sample of example URLs, and can differ from your logs. Logs record every request from every bot, including Bing and AI crawlers, but need parsing and verification first.

Do small websites need log file analysis?

Usually not as a routine task. If a small site is indexed well, Search Console covers most needs. Logs become useful when there is an unexplained indexing problem, after a migration, or when you want to see how AI crawlers treat your content.

Why don’t I see Google-Extended in my logs?

Because it is a robots.txt token, not a crawler. Google fetches pages with its normal user agents, and Google-Extended only controls whether that content may be used for Gemini. It does not affect rankings in Search.

How long should I keep log files for SEO?

Keep at least 30 days of bot-filtered logs, and 90 days for large sites so you can compare before and after changes. Keep human IP data only as long as you genuinely need it.

Sources

  • Cloudflare, “From Googlebot to GPTBot: who’s crawling your site in 2025” (July 2025).
  • Google Search Central, “Large site owner’s guide to managing your crawl budget” (updated 2026).
  • Google Search Central, “Verifying Googlebot and other Google crawlers” (updated 2026).
  • Google Search Central, “Google’s common crawlers” (accessed 2026).
  • Search Console Help, “Crawl Stats report” (accessed 2026).

If you would like a second opinion on whether a log review is worth doing for your site, my SEO audit service includes one where the site is large enough to need it, or you can send me a question.

Is this holding your site back?

Share your website and I will look at the technical issues holding it back.

Your details are only used to reply to your request. No spam.

Grow my trafficCall