Skip to main content

Pagination

/visibility, /citations, and /competitors return at most 1,000 rows per response and page with an opaque cursor. /brands is not paginated — it returns every brand at once. Every paginated response carries a pagination block:
To read the next page, pass nextCursor back as the cursor parameter. Keep going until hasMore is false.
Do not build cursors yourself or parse what is inside one. The encoding is an implementation detail and can change without notice. Pass back exactly the string you received.
Keep every other parameter identical between pages. Changing fromDate, toDate, or brandId mid-run makes the cursor meaningless.

Date range

fromDate and toDate accept YYYY-MM-DD and are both inclusive. Omit them and you get the last 30 days.

How far back you can read

Your plan sets the lookback window:
A request for a wider window is silently clamped, not rejected. You get a 200 with fewer days than you asked for.
Always read meta.fromDate in the response to see the window that was actually applied:
If meta.fromDate is later than the fromDate you sent, the clamp moved it.

Backfilling

For a first load, walk the window in chunks rather than requesting your whole history in one call — a month at a time per brand keeps each run short and makes a failure cheap to retry. After that, a daily incremental pull of the last few days is enough; re-pulling a few days you already have lets late-arriving data settle.