Skip to main content
Export an entire source table from the Data API into your warehouse or analytics pipeline. Raw endpoints return unfiltered rows from the underlying database with cursor-based pagination and snapshot consistency headers.
Raw endpoints require a key of type raw; reading a table (GET /v1/raw/{table_name}) additionally needs both personal data grants, personal and personal_financial, otherwise it returns 403. A transformed key gets 403 on GET /v1/raw/{table_name} and an empty list from GET /v1/raw/tables — see Key types. Raw tables that are not released for your environment appear neither in /v1/raw/tables nor in /v1/changes, and a direct call returns 404.
1

List available tables

Call GET /v1/raw/tables to discover which tables are available, their primary keys, row counts, and sync status.
Example response:
2

Start the export

Request the first page of the table you want. Set limit up to the maximum of 10000.
Example response:
3

Paginate with the cursor

Pass the next_cursor value into the cursor query parameter for each subsequent request. Repeat until next_cursor is null.
4

Verify snapshot consistency

Check the X-Snapshot-At response header on every page. All rows within a single cursor sequence are consistent as of that timestamp. If the header changes between pages, start the export over to ensure a single snapshot view.
5

Full Python example

A complete script that exports a table page by page, following the cursor until exhausted, and verifies snapshot consistency across pages. Requires the requests package.
bulk_export.py
Cursor sequences remain stable under concurrent writes. Because raw tables can receive updates during a long export, X-Snapshot-At tells you which sync version each page belongs to. For a guaranteed single-snapshot export, retry from the beginning if the snapshot timestamp differs across pages.