Skip to main content
Beta. This endpoint is new and its response shape may still change. It is the crawl-intelligence sibling of Export Analytics: same authentication, windowing, and domain scoping, but it reports attribution tiers (was the bot’s identity IP-verified?) and each bot’s intent.
Returns a single JSON document of crawl rollups for every domain on your account — both domains you own and domains shared with you. For each domain it breaks bot traffic down by bot and by attribution tier (verified / declared / unknown), and annotates every bot with its intent (why it crawls — e.g. training, search-classic, answer-fetch).
Always call this endpoint from a server-side environment (backend API, serverless function, build script, etc.). Never include your API key in client-side code — it will be visible to anyone inspecting your frontend.
Programmatic (API key) access requires the Pro plan and above — requests from Starter accounts return 403 plan_upgrade_required.

Request

Headers

Body Parameters

Choose the reporting window in one of two ways — a rolling period, or an explicit startDate/endDate range. The two are mutually exclusive. Range rules — a request that breaks any of these returns 400 invalid_request:
  • period and startDate/endDate cannot be combined.
  • endDate cannot be sent on its own — it requires a startDate.
  • Dates must be real calendar dates in YYYY-MM-DD form (e.g. 2026-02-30 is rejected).
  • startDate must not be after endDate, and neither may be in the future.
  • The range may span at most 365 days (inclusive), the same cap as the 365d period.

Example Request

Single domain, explicit range:

Response

Success (200)

Fields

Attribution tiers

Every crawl is placed in exactly one tier, based on whether the bot’s claimed identity could be confirmed:
verified is point-in-time: it means confirmed against the operator’s published ranges as of when those ranges were last fetched (refreshed weekly). A named bot appearing only as declared is normal — many bots (social crawlers, most AI answer bots) publish no verifiable IP ranges.

Bot intent

intent describes why a bot crawls, from our bot taxonomy:

Legacy data before the cutover

Verified crawl tracking begins at legacyCutover (2026-07-09). Requested days before it are backfilled from legacy User-Agent-only analytics, so the tier semantics differ:
  • Only Googlebot and Bingbot were IP-verified before the cutover, so only they carry a verified tier on legacy days. Every other bot is declared (it was UA-only).
  • AI bots (GPTBot, ClaudeBot, PerplexityBot) were UA-only before the cutover, so they appear as declared there and can appear as verified after — expect a step-change at the cutover date, not a real traffic shift.
  • A few legacy columns are family aggregates (e.g. all OpenAI crawlers were counted together) and are reported under a single representative bot for those days.
For a clean, tier-accurate comparison, request windows that start on or after 2026-07-09.

Error Responses

Examples

JavaScript / Node.js