Skip to main content

The envelope

List and report endpoints return info and data:
Rows use named fields, never positional arrays. A report row carries the group_by dimensions you asked for plus the metrics you asked for, and nothing else.

Pagination

Pass limit for the page size and, for the next page, cursor set to the previous response’s info.next_cursor. next_cursor is null on the last page. A cursor belongs to the query that produced it. Changing anything except limit — dates, filters, grouping — and reusing the cursor returns 400 invalid_cursor rather than a silently wrong page.

Dates

  • start_date and end_date are inclusive calendar days, YYYY-MM-DD.
  • Answer reports use UTC days, the days RankRaft’s daily scans are filed under. Answers exist once a day, so finer time slices do not exist.
  • Traffic reports (/v1/reports/bots, /v1/reports/referrals) take an optional IANA timezone (default UTC) for day boundaries and for date and hour buckets.
  • Answer reports span at most 92 days; traffic reports at most 400 days.
  • Timestamps in responses are ISO 8601 in UTC (2026-10-16T09:00:00.000Z).

Numbers

  • visibility_score is 0–100, as on the dashboard.
  • Rates and shares (mention_rate, citation_rate, prompt_coverage, share_of_voice, citation_share, sentiment shares, verified_share) are fractions from 0 to 1.
  • average_position is 1-based (1 = named first) and null when the brand was never named.
  • To compare two periods, make two requests and subtract. Never average daily rows to get a period figure; ask for the period directly.