The Bot WHOIS API
Query the full bot registry over HTTPS and get JSON back. The read endpoints below are public - no key required - and are the same data that powers this site.
Introduction
The API mirrors everything in the public registry - every tracked bot, its operator, category, sentiment, published user-agents and IP ranges. Every response is JSON. All requests must be made over HTTPS; plain HTTP is refused.
https://botwhois.org/api/v1.Response format
Every endpoint returns the same envelope. On success, success is true and the payload is in data. List endpoints add a meta object with pagination totals. On failure, success is false and error carries a human-readable message.
{
"success": true,
"data": [ /* … */ ],
"meta": { "total": 544, "skip": 0, "take": 50 }
}{
"success": false,
"error": "Invalid sentiment: Maybe"
}Errors
The API uses conventional HTTP status codes. A 2xx is success, a 4xx is a problem with the request, and a 5xx is an error on our side.
Authentication
The read endpoints documented here are public and need no authentication. Write operations - submitting a bot, reviewing candidates, managing tags - require an admin key sent as Authorization: Bearer <ADMIN_API_KEY> and are not part of the public API. Contact us if you need write access.
/v1/botsList bots
Returns a paginated list of tracked bots. Filter by category, operator sentiment, or kind; search by name or description; and page with take/skip. Pass since to fetch only records updated after a timestamp.
curl "https://botwhois.org/api/v1/bots?category=AI%20Crawler&take=1"{
"success": true,
"data": [
{
"id": "clx…",
"name": "GPTBot",
"operator": "OpenAI",
"category": "AI Crawler",
"sentiment": "GoodBot",
"verificationStatus": "Verified",
"kind": "BOT",
"userAgents": "[\"GPTBot/1.0\"]",
"ipRanges": "[\"…\"]",
"operatorSlug": "openai",
"botSlug": "gptbot"
/* … plus the full bot record + sources[] */
}
],
"meta": { "total": 27, "skip": 0, "take": 1 }
}/v1/bots/{id}Retrieve a bot
Fetch the full record for a single bot by its id, including its sources and URLs. Returns 404 if no bot matches.
curl https://botwhois.org/api/v1/bots/clx0000000000000000000000{
"success": true,
"data": {
"id": "clx…",
"name": "GPTBot",
"operator": "OpenAI",
"category": "AI Crawler",
"sentiment": "GoodBot",
"sources": [ { "sourceName": "Cloudflare" } ]
/* … full bot record */
}
}/v1/tagsList tags
Returns every tag with its bot count. Tags are a lightweight cross-cutting label on top of categories.
curl https://botwhois.org/api/v1/tags{
"success": true,
"data": [
{ "id": "…", "name": "AI", "slug": "ai", "botCount": 61 }
]
}/v1/reddit/{botId}Community posts
Returns Reddit discussion for a bot. Cached results are served directly from the registry; when nothing is cached the endpoint attempts a bounded live lookup, which may be unavailable. Best-effort - handle a non-200 or empty result.
curl https://botwhois.org/api/v1/reddit/clx0000000000000000000000{
"success": true,
"data": [
{ "title": "…", "subreddit": "webdev", "url": "…", "upvotes": 342 }
]
}/v1/trends/{botId}Traffic trends
Returns the cached search-interest timeseries for a bot. When no cache exists, data is an empty array plus a googleTrendsUrl to view it directly.
curl https://botwhois.org/api/v1/trends/clx0000000000000000000000{
"success": true,
"data": [ { "date_from": "2026-01-01", "values": [57] } ],
"cachedAt": "2026-04-26T00:00:00.000Z"
}