Riken ScraperDocs

Following

GEThttps://scraper.riken.me/v1/tiktok/user/following
Cost: 1 credit per pagePrice 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/following

One page of the accounts an account follows, newest follow first, usually 50. Send back min_time for the next page; stop when has_more is false. rec_has_more always equals has_more.

A hidden list is free: 200, credits_charged: 0, the page shape with no accounts, following_hidden: true and total: null. It counts toward the free-answer limit.

An account that does not exist is a 404, free. A private account is a 200, charged, {"handle", "account_private": true}.

Coming. Built but not priced: answers 503 route_not_priced until a price row exists.

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
handlestringnoThe TikTok handle. Required unless `user_id` is given. A leading `@` is removed; case does not matter. Letters, digits, `_` and `.` only, at most 64 characters. With both `handle` and `user_id`, `user_id` is ignored. dagestantrainingcamp
user_idstringnoTikTok's numeric user id, at most 20 digits, used only when `handle` is absent. Works only for accounts in our index: an unknown id is `400 unsupported_parameter` ("pass handle"), and an id whose handle has changed is `400 unsupported_parameter` too. Both free, both count toward the free-answer limit. 6918108151024829445
min_timeintegernoThe `min_time` of the previous page (TikTok's own cursor, unix seconds). Absent, empty or `0` means page 1.1792981730
trimbooleannoAccepted and ignored. Must be `true` or `false` (else `400 bad_request`).

Status codes

StatusChargedMeaning
200DependsA page (charged), a hidden list (free, credits_charged 0), or the private-account answer (charged).
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: no capacity within the time limit, or the server is restarting (30 s). rate_limited: the free-answer limit (this answer would have been free). Free; wait Retry-After seconds.
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

A page (charged), a hidden list (free, credits_charged 0), or the private-account answer (charged).

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.

has_more*boolean
min_time*integer

Send back as min_time for the next page.

Formatint64
max_time*integer
Formatint64
next_page_token?string
total*|

TikTok's own count; null on a hidden following list.

offset?integer
myself_user_id?string
status_code*integer
status_msg?string
extra?
log_pb?
followings*array<>
rec_has_more*boolean

Always equals has_more.

following_hidden?unknown

Only on a hidden list (free): no accounts, total null.

handle?string

Only on a hidden list.

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/following?handle=dagestantrainingcamp&user_id=6918108151024829445&min_time=1792981730' \  -H 'Idempotency-Key: profile-dagestantrainingcamp-2026-11-01'
Example Response
{  "credits_charged": 1,  "credits_remaining": 999,  "extra": {    "fatal_item_ids": [],    "logid": "20261030171146081F76B937404FB3139A",    "now": 1793380307000  },  "followings": [    {      "accept_private_policy": null,      "account_labels": null,      "account_region": null,      "ad_cover_url": null,      "advance_feature_item_order": null,      "advanced_feature_info": null,      "authority_status": null,      "avatar_168x168": {        "data_size": 0,        "height": 720,        "uri": "tos-maliva-avt-0068/d6a1705a030406c01fb474ce6cc6f0c2",        "url_list": [          "https://p16-common-sign.tiktokcdn-eu.com/tos-maliva-avt-0068/d6a1705a030406c01fb474ce6cc6f0c2~tplv-tiktokx-cropcenter:100:100.jpeg?x-expires=1793466000"        ],        "url_prefix": null,        "width": 720      },      "avatar_300x300": {        "data_size": 0,        "height": 720,        "uri": "tos-maliva-avt-0068/d6a1705a030406c01fb474ce6cc6f0c2",        "url_list": [          "https://p16-common-sign.tiktokcdn-eu.com/tos-maliva-avt-0068/d6a1705a030406c01fb474ce6cc6f0c2~tplv-tiktokx-cropcenter:720:720.jpeg?x-expires=1793466000"        ],        "url_prefix": null,        "width": 720      },      "avatar_larger": {        "data_size": 0,        "height": 720,        "uri": "tos-maliva-avt-0068/d6a1705a030406c01fb474ce6cc6f0c2",        "url_list": [          "https://p16-common-sign.tiktokcdn-eu.com/tos-maliva-avt-0068/d6a1705a030406c01fb474ce6cc6f0c2~tplv-tiktokx-cropcenter:1080:1080.jpeg?x-expires=1793466000"        ],        "url_prefix": null,        "width": 720      },      "avatar_medium": {        "data_size": 0,        "height": 720,        "uri": "tos-maliva-avt-0068/d6a1705a030406c01fb474ce6cc6f0c2",        "url_list": [          "https://p16-common-sign.tiktokcdn-eu.com/tos-maliva-avt-0068/d6a1705a030406c01fb474ce6cc6f0c2~tplv-tiktokx-cropcenter:720:720.jpeg?x-expires=1793466000"        ],        "url_prefix": null,        "width": 720      },      "avatar_thumb": {        "data_size": 0,        "height": 720,        "uri": "tos-maliva-avt-0068/d6a1705a030406c01fb474ce6cc6f0c2",        "url_list": [          "https://p16-common-sign.tiktokcdn-eu.com/tos-maliva-avt-0068/d6a1705a030406c01fb474ce6cc6f0c2~tplv-tiktokx-cropcenter:100:100.jpeg?x-expires=1793466000"        ],        "url_prefix": null,        "width": 720      },      "avatar_uri": "tos-maliva-avt-0068/d6a1705a030406c01fb474ce6cc6f0c2",      "aweme_count": 5,      "bind_phone": null,      "bold_fields": null,      "can_message_follow_status_list": null,      "can_set_geofencing": null,      "cha_list": null,      "comment_filter_status": null,      "comment_setting": 0,      "commerce_user_level": null,      "cover_url": null,      "create_time": null,      "custom_verify": null,      "cv_level": null,      "download_prompt_ts": null,      "download_setting": 3,      "duet_setting": 3,      "enabled_filter_all_comments": null,      "enterprise_verify_reason": null,      "events": null,      "fake_data_info": null,      "favoriting_count": 28191,      "follow_status": null,      "follower_count": 12,      "follower_status": null,      "followers_detail": null,      "following_count": 2359,      "friends_status": null,      "geofencing": null,      "has_email": null,      "has_insights": null,      "has_orders": null,      "hide_search": null,      "homepage_bottom_toast": null,      "is_ad_fake": false,      "is_block": null,      "is_discipline_member": null,      "is_mute": null,      "is_mute_lives": null,      "is_mute_non_story_post": null,      "is_mute_story": null,      "is_mute_thought": null,      "is_phone_binded": null,      "is_star": null,      "item_list": null,      "language": null,      "live_agreement": null,      "live_commerce": null,      "live_verify": null,      "mention_status": null,      "mutual_relation_avatars": null,      "need_points": null,      "need_recommend": null,      "nickname": "grams",      "original_musician": null,      "platform_sync_info": null,      "prevent_download": null,      "react_setting": null,      "region": null,      "relative_users": null,      "reply_with_video_flag": null,      "search_highlight": null,      "sec_uid": "MS4wLjABAAAAexampleexampleexampleexampleexampleexample1",      "secret": 0,      "share_info": null,      "share_qrcode_uri": null,      "shield_comment_notice": null,      "shield_digg_notice": null,      "shield_edit_field_info": null,      "shield_follow_notice": null,      "short_id": null,      "show_image_bubble": null,      "signature": "hi",      "special_account": null,      "special_lock": null,      "status": null,      "stitch_setting": 3,      "total_favorited": 4,      "type_label": null,      "uid": "6761309637569709061",      "unique_id": "gramsworld",      "unique_id_modify_time": null,      "user_canceled": null,      "user_mode": null,      "user_period": null,      "user_profile_guide": null,      "user_rate": null,      "user_spark_info": null,      "user_tags": null,      "verification_type": null,      "verify_info": null,      "video_icon": null,      "white_cover_url": null,      "with_commerce_entry": null,      "with_shop_entry": null    }  ],  "has_more": true,  "log_pb": {    "impr_id": "20261030171146081F76B937404FB3139A"  },  "max_time": 1793380036,  "min_time": 1792981730,  "myself_user_id": "0",  "next_page_token": "eyJtYXhfY3Vyc29yIjoxNzkzMzgwMDM2LCJtaW5fY3Vyc29yIjoxNzkyOTgxNzMwfQ==",  "offset": 0,  "rec_has_more": true,  "status_code": 0,  "status_msg": "",  "success": true,  "total": 221779}