Start 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.
Write all of a finished job's results as gzipped NDJSON files, read in one
database snapshot. Free; owner key only. The job must be done,
failed or canceled with finished_at set, else 409 job_not_finished.
Idempotent: POST again and you get the same export, not rebuilt. It is
rebuilt only when the last export failed or the job finished again after
it was built. 202 while it builds, with Location and Retry-After: 5.
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 POST '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"}