Key takeaways
- Your raw server access logs are the only ground-truth record of AI crawler activity. Google Search Console doesn't see these bots, and GA4/Plausible filter them out by design.
- You can run a full AI crawler audit with free tools: grep/awk one-liners, GoAccess, and Cloudflare's AI Crawl Control dashboard (available on every plan, including free).
- Verify crawlers are real by matching source IPs against each vendor's published IP-range file, not just the user-agent string, which anyone can spoof.
- Training crawlers (GPTBot, ClaudeBot) and live-fetch crawlers (ChatGPT-User, Claude-User, Perplexity-User) are separate bots with separate robots.txt rules. Blocking one and not the other is the single most common mistake.
- Meta's new crawler jumped from roughly 2% to nearly 38% of all tracked AI crawler requests in under a month in mid-2026. If you haven't checked your logs for it, you're auditing with a blind spot.
Why you probably don't need a platform yet
If you're running a 15-person business with one website and a handful of service pages, you don't need a $500/month visibility dashboard to find out whether ChatGPT's search crawler can reach your pricing page. You need to open a log file. Most AI-visibility platforms are built for teams tracking hundreds of prompts across dozens of competitors. A crawler audit is a narrower, mechanical question: which AI bots are hitting my site, can they actually read what they're fetching, and am I accidentally blocking the ones that matter.
That question is answerable with command-line tools most hosting providers already give you access to. The catch is that nobody tells small business owners this, because there's no product to sell at the end of a grep command.
Step 1: pull your raw access logs
Skip your analytics dashboard entirely for this audit. GA4, Plausible, and Mixpanel are built to filter out non-human traffic, so AI crawlers never show up there in the first place. Google Search Console only tracks Googlebot, not GPTBot, ClaudeBot, or PerplexityBot. The only place these requests get recorded is your server's raw access log, usually sitting on your host as access.log or exposed through your CDN's log export (Cloudflare, Fastly, CloudFront, Netlify, and Vercel all offer this).
If you're on shared hosting, ask support where logs live. If you're on Cloudflare, you can skip the raw log step almost entirely, more on that below.
Step 2: know which bots you're actually looking for
This is where most DIY audits go wrong. People search their logs for "AI" or "bot" and call it done. There are a lot more crawlers than that, and they split into two categories that matter for different reasons:
Training crawlers
These do batch sweeps on the provider's own schedule, feeding their model's training data. Blocking them doesn't hurt your live AI visibility, it just opts you out of being training data.
Live-fetch / search crawlers
These fire in real time when a user's prompt triggers a web lookup. These are the ones that determine whether your page shows up as a citation in an actual ChatGPT or Perplexity answer right now.
| Provider | Training crawler | Live-fetch / search crawler |
|---|---|---|
| OpenAI | GPTBot | OAI-SearchBot, ChatGPT-User |
| Anthropic | ClaudeBot | Claude-SearchBot, Claude-User |
| Perplexity | PerplexityBot | Perplexity-User |
| Meta | meta-externalagent, Meta-WebIndexer | meta-externalfetcher |
| (Google-Extended is a robots.txt token, not a real crawler) | Googlebot | |
| Amazon | Amazonbot | Amzn-SearchBot |
| Mistral | MistralAI-Index | MistralAI-User |
| Apple | Applebot-Extended | Applebot |
The core mistake people make: they copy a robots.txt snippet that blocks GPTBot and assume they've handled OpenAI. They haven't. ChatGPT-User, the bot that fetches pages live when a user asks a question, is a separate entry entirely, and if it's not explicitly allowed, some configurations will silently exclude you from live citations while still letting the training crawler through unchecked.
It's also worth knowing that Google-Extended isn't a crawler at all, it's a robots.txt policy token that only controls Gemini's training and grounding opt-out. It has no effect on your presence in regular Search or AI Overviews. A surprising number of "AI SEO" checklists get this wrong.
Step 3: grep your logs for each bot
Assuming Nginx or Apache combined log format, this is the whole toolkit. No software to install beyond what's already on the server.
Count requests per bot, see who's actually showing up:
grep -c "GPTBot" access.log
grep -c "ClaudeBot" access.log
grep -c "PerplexityBot" access.log
grep -c "Claude-User" access.log
grep -c "meta-webindexer" access.log
Find the top 20 URLs a given bot keeps re-fetching, useful for spotting which pages an engine actually cares about:
grep "GPTBot" access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20
Check the status codes a bot is getting, this is where you catch the quiet problem of a crawler hitting 404s or 500s on pages that should be citable:
grep "PerplexityBot" access.log | awk '{print $9}' | sort | uniq -c
If a bot shows up zero times and you expected traffic, that's your first real finding. If a bot's requests are mostly 4xx or 5xx, that's your second. Neither of those requires a dashboard to notice, just a terminal and ten minutes.
For a slightly nicer view of the same data, GoAccess is a free, open-source log analyzer you can pipe logs through live:
tail -F -n +0 access.log | grep -i --line-buffered 'bot' | goaccess -
It renders an HTML or terminal dashboard and has a flag to filter crawler traffic in or out, which makes it easy to separate human visits from bot activity without writing your own parser.
Step 4: verify the crawler is real, not spoofed
A user-agent string proves nothing. Anyone can set their browser or script to claim it's GPTBot. The only reliable verification is matching the request's source IP against the provider's published IP-range file, or doing a forward-confirmed reverse DNS lookup.
Most major providers publish a JSON file of their current IP ranges: openai.com/gptbot.json, claude.com/crawling/bots.json, and similar for Perplexity. Google documents a reverse-DNS verification workflow directly in their crawler docs. If you don't want to script the comparison yourself, free lookup tools like adver.tools/bot-ips pull the current ranges automatically and let you check a single IP against OpenAI, Anthropic, Google, Bing, and others.
One specific trap: Anthropic/Claude-related IPs often sit on large Google Cloud Platform ranges. If you try to verify by ASN alone ("it came from GCP, must be fine" or "it came from GCP, must be fake") you'll get false positives in both directions. Match the user-agent token and the published IP feed together, and sanity-check that the request pattern looks like a single-page fetch rather than a full-site mirror.
Step 5: use Cloudflare's free AI Crawl Control if you're already on it
If your site sits behind Cloudflare, you can skip most of the grep work. Cloudflare's AI Crawl Control dashboard (formerly called AI Audit) is available to every customer on every plan, including free, with zero configuration required. It breaks down AI crawler activity by provider and bot type, shows which sections of your site get crawled most, and gives you a one-click toggle to block all AI crawlers or allow/block specific providers individually.
Cloudflare frames the traffic in three buckets: traditional good bots that send you traffic back, bad bots that are malicious, and a murkier third category it calls AI crawlers, split into data scrapers that train models with no visit attribution, and search crawlers that cite your content but where the user may never click through. That framing alone is useful for explaining to a business owner why "we got crawled a lot but traffic didn't go up" isn't necessarily a bug.
Step 6: write your robots.txt rules with intent, not copy-paste
Once you know who's showing up, decide deliberately: allow the search/live-fetch bots that can put you in front of an actual AI-generated answer, and make a call on training bots based on whether you want your content feeding future model training. A reasonable default for most small businesses is allow the search crawlers, block or ignore the training crawlers, since the ROI case for being in a model's training set is much weaker than being citable in a live answer today.
A few things to check before you trust your own robots.txt:
- Legitimate AI crawlers generally handle malformed robots.txt conservatively, meaning if they can't parse a rule they tend to crawl anyway rather than respect an accidental block. Validate your syntax with Google's Robots.txt Tester.
- Meta's noindex tag is honored inconsistently across AI crawlers. Treat robots.txt as your primary control, not meta tags.
- If you're on Cloudflare and traffic or citations drop unexpectedly, check whether Bot Fight Mode or Under Attack Mode got switched on. Both have a documented history of blocking Googlebot and legitimate AI crawlers along with the bad traffic they're meant to stop. The fix is usually just disabling it in Security > Bot Management and waiting an hour or two.
- Bytespider (ByteDance) has no officially published IP range and a reputation for ignoring robots.txt directives. If you want to control it, block at the WAF or IP level rather than relying on robots.txt alone.
What the data says about what's actually crawling right now
A few numbers worth knowing before you decide what to allow or block. Promptwatch's crawler traffic data shows OpenAI accounted for roughly 80% of verified AI crawler requests the week of August 31-September 6, 2026, down from nearly 95% in early June, meaning the mix is diversifying fast (https://promptwatch.com/data/ai-crawler-traffic). The biggest mover was Meta: Meta-WebIndexer went from about 2% to almost 38% of all tracked AI crawler requests between mid-July and early August 2026, a roughly 17x jump tied to reports that Meta is building its own web index so Meta AI stops depending on Google (https://promptwatch.com/data/meta-web-indexer). If your log audit doesn't include meta-webindexer, meta-externalagent, meta-externalfetcher, and FacebookBot, you're missing what's currently the fastest-growing crawler on the list.
Claude's citation crawler is smaller but worth tracking too: it grew more than 100x between December 2025 and April 2026, from around 30 visits a day to several thousand, though it still only represents roughly 1% of total tracked AI citation crawler traffic over that period, a secondary channel rather than your main focus (https://promptwatch.com/data/claude-citation-crawler-visits-over-time).
When DIY stops being enough
A grep command and a free Cloudflare dashboard will tell you whether AI crawlers can reach and correctly load your pages. What it won't tell you is whether your content is actually getting cited in ChatGPT or Perplexity answers, how you compare to competitors on specific prompts, or what to publish next to close a citation gap. That's a different question, and it's the one tools like Promptwatch are built to answer, tracking prompt-level citations, crawler-to-citation paths, and offsite mentions across a dozen AI platforms.

For a very small business, the log audit described above is probably all you need for now; it's free, it takes an afternoon, and it answers the most urgent question, which is whether you're technically blocked. If you later want to know whether being unblocked is actually translating into citations and traffic, that's when a platform earns its monthly fee, and the GEO software directory at bestgeosoftware.com is a reasonable place to compare options once you're there. Keep re-checking your logs monthly in the meantime. The crawler mix moved this much in a single quarter of 2026; it will keep moving.