Count the requests bots made, grouped
count_bot_visitsCount bot visits grouped by bot, path, status, day, or category to reveal which AI assistants can fetch your site, what they read, and crawl failures that may lose citations.
Instructions
The same requests as list_bot_visits, counted by the API rather than listed. groupBy picks the question:
bot— which assistants read the site, and which never turn uppath— what they read, the nearest thing to knowing what they can quotestatus— crawl health: every 4xx and 5xx is a page an assistant tried to read and could notday— whether the attention is growing or fadingcategory— bots fetching for a waiting user against those building an index
A failing status is worth more than its count suggests: an assistant that cannot fetch a page does not retry it for the person waiting, it answers from something else. Each one is a citation that went elsewhere.
botId=chatgpt-user with groupBy=path is the sharpest reading here — that bot fetches because somebody has just asked ChatGPT something, so those paths are being read into answers as they are requested.
The answer is ranked, not paged: the limit largest groups come back and there is no cursor. partial is true when the period held more requests than could be read, so the counts then describe the newest ones only.
A bot visit is a machine fetching a page, not a person reading one. It is the supply side of visibility: an assistant can only quote a page its bot was able to fetch, so this says whether the site is reachable and readable to them at all. It is a different measurement from being named in an answer (list_prompts, list_competitors), from being cited as a source (list_sources), and from somebody arriving afterwards (get_ai_traffic). kind=ai is the assistants; kind=seo is classic search engines and SEO tools.
A request carries the name of the bot in its User-Agent, which is free text anybody can send, so each one is marked verified or not. The API has no filter for it and counts cannot be split by it, so any total here includes requests that only claimed to be that bot. Report a count as an upper bound and say so; never present it as measured reach without the caveat.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | `ai` for AI assistants and their bots, `seo` for search engines and SEO tools. Omit it for both. | |
| path | No | Only this exact path, without the domain and starting with `/`, e.g. `/pricing`. | |
| botId | No | Only this one bot, by the id the other traffic tools report — `chatgpt-user`, `gptbot`, `googlebot` and so on. An unknown id is rejected by the API rather than ignored. | |
| limit | No | How many groups to return, at most 200. | |
| status | No | An exact HTTP status code, or a class such as `4xx` to see only the failures. | |
| vendor | No | Only bots run by this company, spelled as the API spells it: OpenAI, Anthropic, Google, Perplexity, Meta, Amazon, Apple, Microsoft, ByteDance, Yandex, DuckDuckGo, Ahrefs, Semrush, Moz, CommonCrawl, Mistral, Cohere and others. This is not the `assistant` of get_ai_traffic, which matches a referrer instead. | |
| endDate | No | Last day to report on, inclusive. Defaults to today, and must be within 31 days of startDate — these endpoints read a month at a time, not a year. | |
| groupBy | Yes | What to count by. | |
| startDate | No | First day to report on, inclusive. Defaults to 30 days before today. |