Skip to main content
Bulk jobs can return millions of rows, so their result endpoints page the data with a cursor. This page shows how to read every row without skips or duplicates.

Use cursor pagination

Use cursor pagination when reading the results of a bulk job. It stays fast for large result sets and avoids skipped or repeated rows while a job is still being processed. Do not use offset for job results. Start with cursor=0, then pass the returned next_cursor into the next request. Stop when next_cursor is empty.

Supported result endpoints

Every request needs the job ID as id and your API key in the Authorization header.

Query parameters

Page through results

1

Make the first request

Start with cursor=0.
The response returns the current items and a continuation cursor:
2

Continue until the cursor is empty

Pass next_cursor unchanged into the next request. An empty value means there are no more rows.
Do not calculate the next page from a row count or send offset. Only next_cursor determines whether another page is available.

Next steps

Bulk operations

Create jobs, upload inputs, and download results.

Rate limits

Pace your result reads within the request limit.