Initial search delivery
POST /v1/search accepts a limit from 1–100 (default 25), which caps the number of creators delivered and billed. It returns those results in data, their count in total, and a search_id for later retrieval.
The initial response delivers the visible result set together, with has_more: false and no next cursor. You do not need to fetch more pages to collect that response’s results.
Read a saved search
GET /v1/search/{search_id} reads the same result set. Its limit controls the page size (1–100, default 25). Start without a cursor, then pass next_cursor unchanged while has_more is true.
These reads are free. They do not run a new search or add creators beyond the original POST limit. Keep reads under the credential that created the search.
Posts pagination
GET /v1/posts uses stable keyset pagination rather than numeric offsets. Its limit is the page size, and each returned post is billed normally. When has_more is true, pass next_cursor into the next request with the same sort value.
Post cursors are tied to their ordering. A cursor created with sort=most_likes cannot be reused with sort=recent; the API returns 400 instead of restarting from the first page. This prevents duplicate or skipped posts when paginating changing datasets.
For sort=top_engagement, the ordering is (likes + comments) / views. Posts without measurable views are returned after posts with a calculated engagement rate.
Other paginated resources
Free rereads apply to saved search results. Other endpoints charge according to their own result or page pricing. Keep the same resource, filters, and ordering when passing an opaque cursor.- Lookalikes charge per creator delivered.
- TikTok live data charges per source page for paginated operations.
- YouTube live data charges per fetched search page.