See which AI
actually read you.

Your analytics counts humans. Keupera counts GPTBot, ClaudeBot, PerplexityBot and thirteen more — every crawler that came, every page it came for, and the day it showed up.

Bot breakdown12,420 visits
12,420

AI crawler visits in the last 30 days

GPTBot4,182
ClaudeBot2,940
PerplexityBot1,806
Google Gemini1,244
OpenAI Search902
Apple AI618
ByteDance441
Common Crawl287
ChatGPT
Perplexity
Google
Claude
Grok
Codex

Your analytics has never once mentioned ChatGPT.

Every crawler, every page, every day.

The crawler report

Total visits, the breakdown by bot, and your top crawled pages beside it. One date range, no sampling, and a row for every bot that came for every page.

AI VisibilityBot TrafficLast 30 days
Overview Integrations Manual upload
Bot breakdown
GPTBot4,182
ClaudeBot2,940
PerplexityBot1,806
Google Gemini1,244
OpenAI Search902
Apple AI618
Top crawled pages
/blog/crm-pricing-compared1,842
/blog/hubspot-alternatives1,318
/pricing1,104
/blog/sales-pipeline-template894
/blog/crm-vs-spreadsheet702
/integrations588

Sixteen crawlers by name

Not “bot traffic” as one grey number. GPTBot is GPTBot, ClaudeBot is ClaudeBot, and you can tell them apart.

OpenAI

Off until you turn it on

One switch per project. A visit is a crawler name, a path and a date — no IPs, no cookies, nothing about a person.

Track AI bot trafficacme.com
Stored
Crawler name
Path requested
Date of the visit
Not stored
No IP addresses
No cookies, no fingerprints
Admin paths skipped entirely

Four ways in, one API key

A WordPress plugin, a Next.js middleware package, a one-line script tag, or an access log you already have. Everything batches in the background, so nothing you install slows a page down.

Connect a data source one API key
WordPress pluginQueues on the request, flushes on shutdown and every five minutes.
Next.js middlewareBatches up to 100 events, or flushes after 60 seconds.
Script tagOne line in your template. Sees only bots that run JavaScript.
Server logsUpload Nginx or Apache access logs to backfill history.
npm i keupera-bot-tracker

import { withKeuperaBotTracker }

from "keupera-bot-tracker";

export const middleware =

withKeuperaBotTracker({

apiKey: process.env.KEUPERA_API_KEY,

});

Install it once and the record keeps itself. The crawlers that decide whether you get quoted are finally on a chart with a name on it.

From one switch to a full crawl record

Turn it on, install it where the request lands, and every AI crawler that touches your site starts showing up by name — with the page it came for and the day it came.

Track AI bot trafficRecord every AI crawler that requests a page on acme.com
Off by default, on when you say so
Nothing personal is stored — bot, path, date
One row per bot, page and day

Flip one switch

Bot tracking is off until you turn it on, per project. Nothing personal is recorded — a visit is a crawler name, a path and a date, counted once per bot, per page, per day.

For the question nobody could answer.

“Is AI actually reading our site?” Same tracker, three ways of settling it.

Crawler visits after the llms.txt ship
GPTBot2104,182
ClaudeBot962,940
PerplexityBot401,806
OpenAI Search0902
Pages by crawler demand 3 never crawled
/blog/crm-pricing-compared6 crawlers
/pricing7 crawlers
/blog/crm-onboarding-checklist1 crawlers
/blog/why-we-rebrandednever crawled
/solutions/agenciesnever crawled
/blog/2025-recapnever crawled
Crawler traffic by client3 workspaces · 30 days
NNorthwindWordPress12,420 visits+38%
LLumen LabsNext.js6,180 visits+12%
FFieldstoneServer logs21,905 visits+61%

It installs wherever your site already runs.

See all integrations
WordPress plugin
Next.js middleware
Script tag, any site
Nginx and Apache logs
Analytics Studio
AI Brand Radar

Counts crawlers. Never counts people.

Keupera for Enterprise
Sixteen crawlers named
Server-side detection
One switch per project
No IPs, no cookies
Batched, never blocking
One row per bot, page, day
Backfill from access logs
On the REST API

Find out who has been reading you.

Start free

Add your domain, flip the switch, and see your first AI crawler land within the day.

  • Sixteen crawlers named
  • Top crawled pages
  • Daily crawl history
  • No credit card
acme.com
Tracking on · first visit in 4 hours
GPTBot/pricing
ClaudeBot/blog/crm-pricing
PerplexityBot/

For agencies

A crawler record per client, whatever they run — and one honest answer when they ask about AI.

  • A tracker per client site
  • WordPress, Next.js or logs
  • Month-on-month by crawler
  • Shareable reports
NCrawler report · AugustShare

Connected

Northwind · WordPress
Lumen Labs · Next.js

Backfilled

Fieldstone · 3 months of logs

Bring your own stack

One npm package, one API key, one line of middleware — or POST the events yourself.

  • npm i keupera-bot-tracker
  • Batched with waitUntil
  • Backfill from access logs
  • Same data on the REST API
npm i keupera-bot-tracker

export const middleware =

withKeuperaBotTracker({

apiKey: process.env.KEUPERA_API_KEY,

});

export const config = {

matcher: ["/((?!api|_next).*)"],

};

Also onThe REST API, same date params

Frequently asked questions

Your time to shine

Take your SEO and GEO to the next level.