Open source · self-hosted · built for SEO and GEO teams
See who is crawling your websites
Bot Observability is a self-hosted dashboard for tracking AI crawlers, search engines, SEO tools, and automated agents across your web projects.
See which URLs they request, whether those requests succeed, and how crawler activity changes over time. Connect your app with one server-side API call and inspect the results across projects.
Already running your own instance? Sign in
Top bots this week
Bot hits (7d)
18,090
AI share
61.6%
11,140 hits
See it in action
Example data — not a live queryExplore illustrative examples of the dashboard views. Your own Overview centers on one traffic chart, request summaries and links to evidence, with detailed analysis available on demand.
Bot hits (7d)
18,090
AI share
61.6%
11,140 hits
Error rate
1.2%
217 4xx/5xx hits
Data health
Healthy
Heartbeat 2m ago · Event 4s ago
How it works
Send events
Your website sends bot request details to /api/bot-hit. The Next.js request proxy reports redirects it returns and 200 for requests it forwards; a backend that observes the final response can report that instead.
Bots get identified
Every event is matched against 130+ known crawler patterns and (where possible) checked using forward-confirmed reverse DNS for supported search crawlers, server-side, on the way in.
You inspect the traffic
Review request counts, observed pages and reported outcomes, with links to retained request evidence.
What you get
Bot identity
Detect crawler families, categories, and verified vs UA-only traffic.
Traffic trends
Compare bot, page, and project movement across daily, weekly, and monthly views.
Response quality
Review status classes, failing paths, API hits, and sensitive route probes.
What you can inspect
Overview
Totals, crawler mix, daily trend, time-of-day distribution, movers, and AI crawls and user-triggered fetches by company.
Bots
Full bot list with categories, project spread, hit share, and last seen time — includes a per-bot detail view and an AI-only filter.
Health
2xx/3xx/4xx/5xx mix, failing paths, and sensitive/API path hits.
Raw Events
Filterable event log for individual bot requests and debugging.
Response status reporting
Status reporting depends on tracked sites sending status_code. Rows without that field are shown as not captured, not as a real HTTP status.
Use the Status tab to find bots reading broken URLs, hitting API routes, probing admin/login paths, or generating server errors.
Useful ingestion fields
Bot categories
Bulk model data collection
Citation and retrieval indexes
User-triggered page fetches
Indexes pages for search results
Third-party rank-tracking and SEO tools
Link previews and unfurlers
Uptime and performance checks
Scripts, libraries, archivers, and unclassified bots
Get started
Use Node.js 24 and a Postgres database (Aiven, Neon, or any standard Postgres). Clone the repo, then:
npm install npm run setup # creates .env with secrets + runs migrations npm run dev
Open /dashboard and sign in with your BOT_ADMIN_TOKEN. Open Website connection to install the sender and verify a website probe. Probes do not add bot traffic. Installation and connection steps are in the README.