You ship an llms.txt file, add FAQPage schema, and rewrite your headings as questions. A week later you check your server logs and see hundreds of hits from "GPTBot" and "ClaudeBot." It feels like proof the work paid off. But a user-agent string is just a text field an HTTP client sets on the request — it costs nothing to fake, and plenty of scrapers, SEO tools, and bad actors do exactly that. Before you credit any AI crawler traffic to your AEO work, you need to verify AI crawler traffic the same way search engineers have verified Googlebot for two decades: with a reverse DNS check, not a string match.
AI crawler verification is the process of confirming that a request claiming to be GPTBot, ClaudeBot, or PerplexityBot actually originates from that company's published infrastructure, rather than from a spoofed user-agent header. It takes one extra lookup per IP address and it is the only way to know your citation-readiness numbers are measuring real crawl activity instead of noise.
This matters more once you have already done AEO work. Adding schema, an llms.txt file, and question-shaped headings only pays off if real crawlers reach the page and parse it. If your "proof" that they are showing up is a raw user-agent count, you are optimizing against a signal that any script kiddie, scraper, or competitor's rank tracker can fake in one line of code.
What Counts as Verified AI Crawler Traffic?
Verified AI crawler traffic is a log entry where the claimed bot's user-agent, the source IP's reverse DNS hostname, and that hostname's forward DNS lookup all agree. If any one of the three is missing or mismatched, treat the hit as unverified. This is the same three-point check search engines have published for confirming Googlebot for years, and OpenAI, Google, and most other crawler operators now document the identical method for their own bots.
Unverified does not automatically mean malicious. Plenty of unverified "AI crawler" hits are ordinary SEO rank-tracking tools or content-scraping services that borrow a well-known user-agent string to avoid getting blocked by a firewall. The point of verification is not to accuse anyone — it is to stop counting traffic you cannot confirm.
Why Doesn't a User-Agent String Alone Prove a Crawler Is Real?
A user-agent string proves nothing on its own because the client sets it, and the client can set it to anything. Here is the failure mode we see most often at AEO Excellence: a site owner filters their analytics tool for "GPTBot," sees a spike after a content update, and reports a citation win to their team. Three weeks later a developer inspects the raw access log and finds the "GPTBot" requests came from a single residential IP address that also scraped the entire site in under four seconds — a speed and pattern no real crawler from a major AI lab uses.
That gap matters because decisions get made on it. Budget gets allocated to more AEO work, or reallocated away from it, based on a number that was never real. Reverse DNS verification takes under a second per IP address, so checking a day's worth of claimed AI crawler hits from a mid-size site's log file is a five-minute job, not a research project.
How Do You Confirm an AI Crawler's Identity With Reverse DNS?
Run this sequence for any IP address whose user-agent claims to be an AI crawler. Each step depends on the one before it, so do not skip the forward-confirmation step even when the reverse hostname looks convincing.
- Pull the distinct source IPs from your access log for the user-agent you want to verify (for example, filter for "GPTBot" and list unique IPs).
- Run a reverse DNS lookup on each IP address to get its hostname.
- Check whether the hostname ends in the operator's real domain — OpenAI documents this check for GPTBot, and Google documents the same pattern for Googlebot.
- Run a forward DNS lookup on that hostname and confirm it resolves back to the original IP address.
- Discard any IP where the reverse hostname is missing, generic, or does not match the operator's domain — that traffic is unverified regardless of what the user-agent claims.
- Log the verified IPs separately so future analytics filters only count confirmed crawler activity.
You do not need special tooling for this. On Linux or macOS, dig -x <ip> returns the reverse hostname, and dig <hostname> confirms the forward lookup — the entire check is two commands. If you manage dozens of sites, script the loop once against a CSV export of your log's unique IPs and re-run it whenever you review AEO progress.
Which User-Agent Strings Belong to the Major AI Crawlers?
Each major AI lab publishes its own crawler names and its own verification domain. Use this table as your first filter before running the reverse DNS check on any IP claiming to be one of these bots.
| Crawler | Operator | Verification signal to check |
|---|---|---|
| GPTBot | OpenAI | Reverse hostname resolves to an openai.com subdomain, per OpenAI's published GPTBot documentation |
| ClaudeBot | Anthropic | Reverse hostname resolves to an anthropic.com subdomain |
| PerplexityBot | Perplexity | Reverse hostname resolves to a perplexity.ai or perplexity.com subdomain |
| Google-Extended | Same reverse/forward DNS method Google documents for verifying Googlebot | |
| Applebot-Extended | Apple | Reverse hostname resolves to an apple.com subdomain |
These five operators account for most of the claimed AI-crawler traffic site owners ask us about, but the list keeps growing as more labs ship their own retrieval agents. Treat any crawler name you don't recognize the same way: look up the operator's own crawler documentation before you decide whether it deserves an allow rule in robots.txt or a line in your CDN's bot-management policy.
What Should You Do When Verified Crawler Traffic Is Missing From Your Logs?
If the verified count comes back near zero after you filter out spoofed hits, the problem usually sits upstream of your content: a CDN security rule, a WAF challenge, or a robots.txt directive is quietly turning real AI crawlers away before they ever reach your pages. Check those layers first — content-level fixes like schema and direct-answer blocks cannot help a crawler that never gets past the edge.
Start with the raw access log rather than a dashboard that may already be filtering requests before you see them — on most Linux hosting stacks that means /var/log/apache2/access.log or /var/log/nginx/access.log, or the equivalent export from your CDN's request-logging feature if the origin server never sees blocked requests at all. A verified crawler that shows up in the CDN log but never reaches the origin log is proof the block is happening at the edge, not in your application.
This is also the point where a manual log review stops scaling. Once you are checking verification across every page template, every crawler operator, and every CDN rule change, an AEO audit built around this exact reverse-DNS methodology finds the same gaps in an afternoon that a manual spot-check would take weeks to surface. Our AEO FAQ covers the full list of crawlers we verify against and what a verification report includes.
Isn't Checking User-Agent Strings in Analytics Good Enough?
No, and this is the objection worth taking seriously before you skip verification: your analytics tool is not lying to you, it is just repeating whatever the request claimed. If cost or effort is the real hesitation, the honest answer is that the reverse DNS check itself is cheap — a few minutes per crawler per site — but building it into an ongoing monitoring habit across dozens of pages and templates is the part that takes real time, which is exactly the gap a structured audit is built to close.
How Do You Get a Full AI Crawler Verification Report?
OpenAI's GPTBot documentation and Google's guide to verifying Googlebot both confirm the same underlying method: reverse DNS first, forward DNS second, no exceptions for a familiar-looking user-agent. Apply that method to your own logs this week, starting with whichever crawler shows the highest hit count. If you want the verification run against your full crawler list along with the schema and llms.txt gaps that block legitimate bots in the first place, tell us about your site and we'll scope what an audit would check first.