Riken ScraperDocs

Poll and download an export

GEThttps://scraper.riken.me/v1/jobs/{id}/export
Cost: FreeLiveErrors are free

Try 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.

GET
/v1/jobs/{id}/export

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

NameTypeRequiredDescriptionExample
x-api-keystringone of the auth headersYour API key. If both headers are sent, `x-api-key` wins.sk_...
Authorizationstringone of the auth headers`Authorization: Bearer <key>`, the same key.Bearer sk_...

Path parameters

NameTypeRequiredDescriptionExample
idintegeryesThe job id. Another key's job answers as if it did not exist.685

Status codes

StatusChargedMeaning
200FreeThe export is done (with URLs), failed, or stale. Free.
202FreeThe export is pending or running. Poll poll_url after Retry-After (5 s). Free.
400FreeA malformed body, parameter or cursor. Free.
401FreeMissing, unknown or revoked key. Free.
404FreeNo such job, another key's job, or (GET export only) no export requested yet. Free.
409FreeThe job is still queued or running, or canceled/failed with results still being saved (no finished_at yet). Free.
429FreeThe key's request rate. Free.
500FreeOur fault. Free.
503FreeExport is switched off on this server. Free.

Response Body

The export is done (with URLs), failed, or stale. Free.

application/json
  1. response
job_id*integer
Formatint64
state*string
Value in"pending""running""done""failed""stale"
format*unknown
poll_url*string
sections?

Every list this kind exports with its row count, 0 included. Present once done.

parts*array<>
rows_total*integer
bytes_total*integer
urls_expire_at?string
Formatdate-time
credits_charged*unknown
failure_reason?string
retry_at?string
Formatdate-time
attempts*integer
requested_at*string
Formatdate-time
started_at?string
Formatdate-time
finished_at?string
Formatdate-time

Example 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'
Example Response
{  "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"}