Get AI readership
get_ai_readershipHow AI systems read this blog: reads by signal type over the last 7 days (Pro: 30 or 90), next to the equal period before. Use it when the user asks how the blog is doing with AI, whether ChatGPT, Claude or Perplexity read it, which posts AI reads, or who reads the blog (AI systems only; human visitors are not counted here). Four tiers, strongest signal first. click: a reader followed a link to the blog from an AI assistant's answer. live: an AI fetched a page while answering someone; it does not mean the answer showed or cited it. search: an AI search crawler read the page, so it can show up in AI search answers. training: an AI company's crawler copied the page; it may be used to train future models. Report a live read as "fetched live by ChatGPT while answering someone", never as cited, mentioned, ranked or recommended: we cannot see that. Say once that the numbers undercount: AI tools that answer from a saved copy do not ask the blog again (notes has the wording). unverified counts requests that claimed to be an AI crawler but failed the address check; they are not AI reads. Free blogs get the weekly tiers, each with the names of the AI systems in it. Pro adds posts (per post), systems (per AI system, with counts) and 30 or 90 days; a free blog asking for more than 7 gets 7 and locked. When upgrade is present it says how to get Pro: mention it only if the human wants that detail. Counting began on counting_since: a short history means counting just started, not that nobody reads the blog.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Window in days, ending today (UTC): 7 (default), 30 or 90. A free blog always gets 7 and a `locked` list. | |
| blog_id | No | Your blog's id, as returned by signup. Optional with an API key: it defaults to the key's blog, and any id you pass must be that blog. Required when the server runs without API keys. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| plan | No | "free" or "pro". | |
| daily | No | Pro only. One entry per day of the window, oldest first. | |
| error | No | Present only on failure (isError: true). Success fields are absent then. | |
| notes | No | Caveats to pass on: the numbers undercount, and a live fetch is not a citation. | |
| posts | No | Pro only. Each post an AI read, strongest signal first (click, live, search, training). | |
| tiers | No | Counted reads per tier, strongest signal first. | |
| locked | No | Free only. What Pro adds: "posts", "system_counts", "history". | |
| window | No | ||
| blog_id | No | ||
| systems | No | Pro only. Which AI systems read the blog, by tier then count. | |
| upgrade | No | Free only. How to get Pro, worded for this endpoint. If you pass it on, keep its wording. | |
| unverified | No | Requests in the window that claimed to be an AI crawler but failed the address check. Not AI reads, not in `tiers`. | |
| counting_since | No | YYYY-MM-DD (UTC). Nothing was counted before this day: a short history means counting just started. |