Riken ScraperDocs

Audience

GEThttps://scraper.riken.me/v1/tiktok/user/audience
Cost: 20 creditsPrice not finalComing soonErrors 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/tiktok/user/audience

The countries of an account's followers, estimated from a sample: we read the newest 720 followers and place up to 150 by the country their latest video was posted from. Estimates, subject to change.

Usually 35 to 40 seconds; up to 5 minutes. Set your client timeout to at least 6 minutes.

Charged only when 30 or more followers are placed. 1 to 29 placed: 200, free, X-Audience-Confidence: low. None placed: 200, audienceLocations: [], free. Private account: 200, free, {"account_private": true, "handle"}. Some free answers are kept per account (24 h; private 6 h) and served again with X-Audience-Cached.

Limits: 2 audience requests in flight per key (a third is 429 rate_limited, Retry-After: 30); past 100 free answers in 10 minutes, audience requests from the key are refused before they run.

Coming in beta. Answers 503 route_not_priced until priced.

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_...
Idempotency-KeystringnoAny string up to 255 characters. Makes a retry safe for 24 hours; bound to this API key and the request's parameters.profile-dagestantrainingcamp-2026-11-01

Query parameters

NameTypeRequiredDescriptionExample
handlestringyesThe TikTok handle; a leading `@` is removed. The only parameter, as on ScrapeCreators.karlaakat

Status codes

StatusChargedMeaning
200DependsThe country breakdown (charged at 30+ placed, else free), or the private answer (free).
400FreeA parameter is missing, malformed, or one we cannot honour yet. Free.
401FreeMissing, unknown or revoked key. Free.
402FreeThe key cannot cover this request. needed_credits is the price. Free.
404FreeThe account does not exist. Free; counts toward the free-answer limit.
409FreeA request with this Idempotency-Key and parameters is still running. Free; retry after Retry-After (1 s).
429FreeOver capacity (over_capacity), or the key's audience limits (rate_limited). Free.
500FreeOur fault. Free; retry and quote X-Request-Id.
502FreeTikTok's answer failed or could not be read (including accounts TikTok withholds from logged-out views). Free.
503FreeThe route has no price yet, so it does not serve. Free.
504FreeNo answer within the time limit (180 s; audience 300 s). Free.

Response Body

The country breakdown (charged at 30+ placed, else free), or the private answer (free).

application/json
  1. response
success*unknown
credits_charged*Credits

An amount in credits, as an exact JSON decimal (1, 0.002), never a rounded float.

Range0 <= value
credits_remaining*CreditsRemaining

What the key can still spend after this request.

audienceLocations*array<>

The whole country breakdown, count descending (ties by country code). Empty when no follower could be placed.

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/tiktok/user/audience?handle=karlaakat' \  -H 'Idempotency-Key: profile-dagestantrainingcamp-2026-11-01'
Example Response

The example file is rendered with the generic 1-credit envelope; a charged audience answer carries credits_charged 20.

{  "audienceLocations": [    {      "count": 115,      "country": "United States",      "countryCode": "US",      "percentage": "70.55%"    },    {      "count": 19,      "country": "Mexico",      "countryCode": "MX",      "percentage": "11.66%"    },    {      "count": 3,      "country": "Chile",      "countryCode": "CL",      "percentage": "1.84%"    }  ],  "credits_charged": 1,  "credits_remaining": 999,  "success": true}