Free, open source, runs on your machine
See what AI agents are doing on your site.
Legacy analytics platforms only focus on humans. But AI agents are crawling your pages, reading them to answer questions, and then deciding what to cite. None of this shows up in your analytics. Until now.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ AGENTTRAFFIC · EXAMPLE.COM 7 days ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2026-08-18T04:00:00.000Z → 2026-08-25T04:00:00.000Z (America/New_York) IP ranges shipped, 5 days old AI CRAWLERS ··········································································· ChatGPT-User OpenAI live-fetch 90 14p 20 spoofed, 10… PerplexityBot Perplexity search 10 12p 30 unchecked live-fetch = a person just asked an assistant about the page primary number = requests verified against published provider IP ranges unchecked = no range data (rDNS-only provider) or no usable client IP 1 training / ops crawler hidden (--show-training) SEARCH CRAWLERS ······································································· Googlebot 30 5 spoofed, 25 unche… SPOOFED UA MATCHES recognised bot UA, IP outside the published range ················· ChatGPT-User 20 ip-range Googlebot 5 ip-range PAGES ASSISTANTS FETCHED live-fetch + search ········································· / 35 /app 27 MEASURED FROM YOUR LOGS ······························································· requests 1200 browser requests 800 500 page fetches, 210 distinct IPs bot ua matches 300 130 verified spoofed 25 bot UA, IP outside published range unclassified 45 neither browser- nor bot-shaped cache hit 75.0% 4xx / 5xx 110 / 5 scanner probes 60 PHP/CMS probes, all 4xx asset probes 9 nested image 404s, CMS logo scans devtools opened 3 distinct IPs (7 source-map 404s) REFERRERS external, browser page fetches ············································· news.ycombinator.com 40 www.google.com 40 t.co 10 350 no referrer · 55 internal navigation · 5 unparseable of the no-referrer fetches, 100 (29%) are shared links SHARED LINKS ?preset= page fetches, not shares ······································ https://example.com/app?preset=abc123 70 https://example.com/app?preset=def456 50 LINK PREVIEWS links pasted into chat apps (floor) ···································· Facebook / iMessage 30 12 urls Slack 15 6 urls Discord 5 3 urls BROKEN LINKS 404s, excluding probes ·················································· /old-page 12 /feed 4 OTHER BOTS unrecognised agents, worth a look ········································· AhrefsBot 25 python-requests 5 UNCLASSIFIED neither browser- nor bot-shaped ········································· curl 30 Go-http-client 15 excluded from the split: UptimeRobot 30 NOTES ················································································· Perplexity has been documented crawling with undeclared user agents; verified count is a floor. iMessage unfurls arrive as facebookexternalhit and Twitterbot; they are counted under Facebook / iMessage. Gemini training traffic arrives as Googlebot and is inside this row. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Log sources
Reads the logs your stack already writes
Nothing to install on your site. Point it at the log files you already have.
- CloudFrontstandard logs, v2 and legacy
- S3fetch a window straight from the bucket
- NGINXcombined format
- Apachecombined format
- Any CLF logcommon or combined, gzip too
- CloudflaresoonLogpush
- VercelsoonLog Drains
- NetlifysoonLog Drains
Why logs
Your server already keeps the record. Analytics just never reads it.
Every visit to your site, human or agent, leaves a line in your server log. Analytics tools skip the agents. agenttraffic starts from the log, so nothing is skipped.
Analytics sees
- People whose browser ran the tracking script
- Referrers the browser chose to send
- Nothing from an AI agent or crawler
Your logs see
- Every AI agent: ChatGPT, Claude, Perplexity, Google
- Whether each one was really who it claimed to be
- Links shared in private chats, via the preview fetch
- Readers who block tracking scripts
How it works
One command on the logs you already have
STEP 01
Point it at your logs
CloudFront, nginx or Apache. Files, folders or a whole S3 bucket. Nothing to install on your site, and it works on last month's traffic today.
npx agenttraffic ./logs --days 7STEP 02
Every agent gets checked
Anyone can claim to be ChatGPT. Each request is checked against the IP addresses the operator actually publishes, so fakes are counted separately from the real thing.
ChatGPT-User 90 verified · 20 spoofedSTEP 03
Read the report
One screen: which agents came, which pages they read, and what else your analytics missed. JSON output if you want to build on it.
npx agenttraffic ./logs --json
01
Honest numbers
Some agents hide, and one question can trigger several fetches. So every count is a minimum, and the report says what was measured, never what it might mean.
02
Real or fake
A request that says ChatGPT might not be. Requests inside the operator's published IP addresses are verified. Outside them, they're marked as fakes. When an operator publishes nothing, the report says so instead of guessing.
03
Nothing leaves your machine
It runs on your computer, on your logs. No account, no tracking, and IP addresses are never written out.
Registry
Every agent, explained
One page per AI agent: who runs it, what it's for, how to tell a real visit from a fake, and how to block it if you want to.
- agents in the registry
- 54
- operators
- 33
- with published IP ranges
- 15
- IP range snapshot
- 2026-08-28
Guides
Telling the agents apart
By kind: Live fetch, AI search, Training, Search engine, Operational, Link unfurl
FAQ
Straight answers
How do I know if ChatGPT, Claude or Perplexity is reading my site?
What does GPTBot in my logs mean, and how is it different from ChatGPT-User?
Is a request that says it is ChatGPT really from ChatGPT?
Which log formats does it read?
Is any of my data sent anywhere?
Why are counts labelled as floors instead of visitors?
How is this different from Google Analytics or Plausible?
Can I get the data as JSON?
Roadmap
Get a weekly report in your inbox
The command-line tool is free and stays free. A hosted version that emails you each week is on the roadmap. Leave your email and you'll hear once, when it exists.