Poll and download an export
https://scraper.riken.me/v1/jobs/{id}/exportTry it
Paste your key under Authorization and send a live request to https://scraper.riken.me. The key stays in this browser tab only (session storage, cleared when the tab closes) and is sent nowhere else. A live request spends credits like any other.
The export's state; once done, one presigned URL per part. Download each
with a plain GET and no API key: the URL is the credential. Every GET
signs fresh URLs; urls_expire_at is when these stop working (24 h at
most, sooner when the signing session ends).
Sections by job kind: tiktok.walk and instagram.fetch: creators,
media, walks. tiktok.search: creators, media (the hits), units.
tiktok.audience: creators, media, audience. Up to 50,000 rows per file;
each line is byte-for-byte the object GET /v1/jobs/{id} returns in that list.
stale: the job finished again after this export was built; no URLs,
POST to rebuild.
Headers
| Name | Type | Required | Description | Example |
|---|---|---|---|---|
x-api-key | string | one of the auth headers | Your API key. If both headers are sent, `x-api-key` wins. | sk_... |
Authorization | string | one of the auth headers | `Authorization: Bearer <key>`, the same key. | Bearer sk_... |
Path parameters
| Name | Type | Required | Description | Example |
|---|---|---|---|---|
id | integer | yes | The job id. Another key's job answers as if it did not exist. | 685 |
Status codes
| Status | Charged | Meaning |
|---|---|---|
| 200 | Free | The export is done (with URLs), failed, or stale. Free. |
| 202 | Free | The export is pending or running. Poll poll_url after Retry-After (5 s). Free. |
| 400 | Free | A malformed body, parameter or cursor. Free. |
| 401 | Free | Missing, unknown or revoked key. Free. |
| 404 | Free | No such job, another key's job, or (GET export only) no export requested yet. Free. |
| 409 | Free | The job is still queued or running, or canceled/failed with results still being saved (no finished_at yet). Free. |
| 429 | Free | The key's request rate. Free. |
| 500 | Free | Our fault. Free. |
| 503 | Free | Export is switched off on this server. Free. |
The export is done (with URLs), failed, or stale. Free.
application/json- response
job_id*integerint64state*string"pending""running""done""failed""stale"format*unknownpoll_url*stringsections?Every list this kind exports with its row count, 0 included. Present once done.
parts*array<>rows_total*integerbytes_total*integerurls_expire_at?stringdate-timecredits_charged*unknownfailure_reason?stringretry_at?stringdate-timeattempts*integerrequested_at*stringdate-timestarted_at?stringdate-timefinished_at?stringdate-timeExample request
# A call can be held open up to 180 s (audience: 300 s). Set a client timeout above that.curl -X GET 'https://scraper.riken.me/v1/jobs/685/export'{ "job_id": 685, "state": "done", "format": "ndjson.gz", "poll_url": "/v1/jobs/685/export", "sections": { "creators": 9720, "media": 299818, "walks": 9731 }, "parts": [ { "section": "creators", "part": 0, "rows": 9720, "bytes": 1350211, "url": "https://cs-niche-video.s3.us-west-2.amazonaws.com/scraper/exports/key-7/job-685/attempt-1/creators-0000.ndjson.gz?X-Amz-..." }, { "section": "media", "part": 0, "rows": 50000, "bytes": 6012345, "url": "https://..." }, { "section": "media", "part": 1, "rows": 50000, "bytes": 5998812, "url": "https://..." } ], "rows_total": 319269, "bytes_total": 41234567, "urls_expire_at": "2026-11-05T23:41:00Z", "credits_charged": "0", "attempts": 1, "requested_at": "2026-11-05T18:02:11Z", "started_at": "2026-11-05T18:02:11Z", "finished_at": "2026-11-05T18:04:40Z"}