Collect and analyze public Kwai data
Browser
Scavio Kuaishou
Try itRead Kuaishou (China) profiles, posts, live status, videos, comment threads, hashtag feeds, leaderboards and four kinds of search as structured JSON. 14 endpoints priced per endpoint at 1, 2, 10 or 40 credits.
What it does
Read Kuaishou (China) profiles, posts, live status, videos, comment threads, hashtag feeds, leaderboards and four kinds of search as structured JSON. 14 endpoints priced per endpoint at 1, 2, 10 or 40 credits.
The skill document
Kuaishou (China) via Scavio
Read public data from Kuaishou, the Chinese short-video platform: user profiles, their posts and live status, single videos and batches of them, comment threads and their replies, hashtag feeds, the platform leaderboards, and four separate search endpoints. All endpoints return structured JSON.
This is Kuaishou China (kuaishou.com), not Kwai. Kwai international (kwai.com) is not served by this API. See Guardrails.
Pricing is per endpoint, from 1 to 40 credits. There is no flat platform price. Read the cost column before every call.
When to trigger
Use this skill when the user asks to:
- Look up a Kuaishou creator's profile, posts or current live status
- Turn a Kuaishou share link into a user id
- Read a Kuaishou video by photo id or URL, or several at once
- Read the comments on a Kuaishou video, or the replies under one comment
- Search Kuaishou for videos, users, live streams, or all of them at once
- Pull the posts under a Kuaishou hashtag
- Read the Kuaishou hot, live, shopping, brand or music leaderboards
- Research Chinese short-video creators or trends
Setup
Get a free API key at scavio.dev (50 free credits to get started, no card required):
export SCAVIO_API_KEY=sk_live_your_key
Every request is a POST with a JSON body and:
Authorization: Bearer $SCAVIO_API_KEY
Endpoints
Base URL: https://api.scavio.dev. Costs differ by up to 40x between endpoints. Copy the path verbatim from this table.
| Endpoint | Credits | Description |
|---|---|---|
POST /api/v1/kuaishou/profile | 10 | Profile details for a user |
POST /api/v1/kuaishou/user/posts | 1 | A user's top posts, cursor-paginated |
POST /api/v1/kuaishou/user/live | 1 | A user's current live-stream status |
POST /api/v1/kuaishou/user/resolve | 1 | Turns a Kuaishou share link into a user id |
POST /api/v1/kuaishou/video | 2 | A single video by photo id or URL |
POST /api/v1/kuaishou/video/comments | 1 | Comments on a video, cursor-paginated |
POST /api/v1/kuaishou/video/sub-comments | 1 | Replies under one root comment, cursor-paginated |
POST /api/v1/kuaishou/videos/batch | 40 | Up to 20 videos in one call |
POST /api/v1/kuaishou/search | 10 | Mixed-result search |
POST /api/v1/kuaishou/search/videos | 10 | Video search |
POST /api/v1/kuaishou/search/users | 10 | User search |
POST /api/v1/kuaishou/search/live | 10 | Live-stream search |
POST /api/v1/kuaishou/tag/feed | 1 | Posts under a hashtag, cursor-paginated |
POST /api/v1/kuaishou/trending | 1 | Hot, live, shopping, brand and music leaderboards |
Summary of the four tiers: videos/batch is 40. profile and all four search endpoints are 10. video is 2. Everything else is 1.
Cost planning
/profileat 10 credits is the dearest single-object call on the platform. If all you need is a creator's recent posts,/user/postsat 1 credit may be enough on its own./videos/batchat 40 credits is the dearest call, full stop. It is capped at 20 photo ids. Twenty individual/videocalls would cost 40 credits too, so batching saves round trips, not money. Do not reach for it to fetch two or three videos.- The four search endpoints each cost 10. Do not fan out a keyword across all four when one will answer the question.
Workflow
- From a share link: call
/kuaishou/user/resolvewithshare_link(1 credit) to get auser_id. - Creator research:
/kuaishou/user/postswithuser_id(1 credit) for the feed. Only spend the 10 credits on/kuaishou/profileif you need the profile fields themselves. - Live check:
/kuaishou/user/livewithuser_id(1 credit). - A video:
/kuaishou/videowithphoto_idorurl(2 credits). - Comments:
/kuaishou/video/commentswithphoto_id(1 credit). To expand one thread, call/kuaishou/video/sub-commentswith the samephoto_idplus that comment'sroot_comment_id. - Discovery:
/kuaishou/search(mixed),/kuaishou/search/videos,/kuaishou/search/usersor/kuaishou/search/live, all withkeyword, all 10 credits./kuaishou/tag/feedand/kuaishou/trendingare 1 credit each and are the cheap discovery route.
Cursor-paginated: user/posts, video/comments, video/sub-comments, all four search endpoints, and tag/feed. Each returns next_cursor; pass it back as cursor and stop when it is null. Every page of a search costs another 10 credits.
Not paginated at all: profile, user/live, user/resolve, video, videos/batch, trending.
Parameters
Profile (/profile) — 10 credits
| Parameter | Type | Default | Description |
|---|---|---|---|
user_id | string | required | Kuaishou user id, e.g. 5518803932 |
User posts (/user/posts) — 1 credit
| Parameter | Type | Default | Description |
|---|---|---|---|
user_id | string | required | Kuaishou user id |
cursor | string | -- | Pagination cursor from a prior next_cursor |
User live (/user/live) — 1 credit
| Parameter | Type | Default | Description |
|---|---|---|---|
user_id | string | required | Kuaishou user id |
User resolve (/user/resolve) — 1 credit
| Parameter | Type | Default | Description |
|---|---|---|---|
share_link | string (URL) | required | A kuaishou.com or v.kuaishou.com link, e.g. https://v.kuaishou.com/KcdKDwFp. kwai.com is not supported |
Video (/video) — 2 credits
photo_id or url is required.
| Parameter | Type | Default | Description |
|---|---|---|---|
photo_id | string | one of | Kuaishou photo id, e.g. 3xtdqvdnqd3psuc |
url | string (URL) | one of | A Kuaishou video URL |
Video comments (/video/comments) — 1 credit
| Parameter | Type | Default | Description |
|---|---|---|---|
photo_id | string | required | Kuaishou photo id |
cursor | string | -- | Pagination cursor from a prior next_cursor |
Comment replies (/video/sub-comments) — 1 credit
| Parameter | Type | Default | Description |
|---|---|---|---|
photo_id | string | required | Kuaishou photo id |
root_comment_id | string | required | The id of the comment whose replies you want |
cursor | string | -- | Pagination cursor from a prior next_cursor |
count | integer 1-50 | -- | Replies per page |
Videos batch (/videos/batch) — 40 credits
| Parameter | Type | Default | Description |
|---|---|---|---|
photo_ids | array of string | required | 1 to 20 photo ids. The cap of 20 is hard |
Search (/search, /search/videos, /search/users, /search/live) — 10 credits each
| Parameter | Type | Default | Description |
|---|---|---|---|
keyword | string | required | Search keyword (1-200 chars) |
cursor | string | -- | Pagination cursor from a prior next_cursor |
Tag feed (/tag/feed) — 1 credit
| Parameter | Type | Default | Description |
|---|---|---|---|
tag | string | required | Hashtag text (1-200 chars) |
cursor | string | -- | Pagination cursor from a prior next_cursor |
Trending (/trending) — 1 credit
| Parameter | Type | Default | Description |
|---|---|---|---|
board | string | hot | hot, live, shopping, brand, music |
Examples
import requests
BASE = "https://api.scavio.dev"
# Your key from https://scavio.dev. Load it from your environment or secret
# store in real code - keep it out of source control.
API_KEY = "sk_your_key_here"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
# 1. Share link -> user id (1 credit)
resolved = requests.post(f"{BASE}/api/v1/kuaishou/user/resolve", headers=HEADERS,
json={"share_link": "https://v.kuaishou.com/KcdKDwFp"}).json()
user_id = "5518803932"
# 2. Their posts (1 credit) - far cheaper than /profile, which is 10
posts = requests.post(f"{BASE}/api/v1/kuaishou/user/posts", headers=HEADERS,
json={"user_id": user_id}).json()
# 3. Full profile - 10 credits, only call it if you need the profile fields
profile = requests.post(f"{BASE}/api/v1/kuaishou/profile", headers=HEADERS,
json={"user_id": user_id}).json()
# 4. A single video (2 credits)
video = requests.post(f"{BASE}/api/v1/kuaishou/video", headers=HEADERS,
json={"photo_id": "3xtdqvdnqd3psuc"}).json()
# 5. Comments (1 credit), then one thread's replies (1 credit).
# NOTE the path is /video/sub-comments.
comments = requests.post(f"{BASE}/api/v1/kuaishou/video/comments", headers=HEADERS,
json={"photo_id": "5218546261880462502"}).json()
replies = requests.post(f"{BASE}/api/v1/kuaishou/video/sub-comments", headers=HEADERS,
json={"photo_id": "5218546261880462502",
"root_comment_id": "14000000123456789", "count": 20}).json()
# 6. Search - 10 credits PER PAGE
found = requests.post(f"{BASE}/api/v1/kuaishou/search/videos", headers=HEADERS,
json={"keyword": "美妆"}).json()
# 7. Cheap discovery: hashtag feed and leaderboards, 1 credit each
tag = requests.post(f"{BASE}/api/v1/kuaishou/tag/feed", headers=HEADERS,
json={"tag": "挑战"}).json()
board = requests.post(f"{BASE}/api/v1/kuaishou/trending", headers=HEADERS,
json={"board": "hot"}).json()
# 8. Batch - 40 credits, max 20 ids
batch = requests.post(f"{BASE}/api/v1/kuaishou/videos/batch", headers=HEADERS,
json={"photo_ids": ["5228960823332207296", "5196309727975443273"]}).json()
Response
Every response uses the envelope { data, response_time, credits_used, credits_remaining }.
- profile, user/live, user/resolve, video and trending return a single object each: profile details, live status, the resolved user id, the video, and the requested leaderboard.
- user/posts, video/comments, video/sub-comments, the four search endpoints and tag/feed return their rows plus
next_cursor. A nullnext_cursormeans the end of the data. - videos/batch returns the requested videos in one payload.
Always read credits_used off the response rather than assuming. The per-call cost ranges from 1 to 40.
Guardrails
- Call it Kuaishou, or Kuaishou (China). Never Kwai. This API serves kuaishou.com only. Kwai international (kwai.com) is not served: a real kwai.com photo id comes back as an empty envelope, not an error. If the user says "Kwai" or gives a kwai.com link, tell them this API covers Kuaishou China only before spending any credits.
/user/resolveacceptskuaishou.comandv.kuaishou.comlinks only.- Quote the per-endpoint cost, never a platform cost. Saying "Kuaishou calls cost 1 credit" is wrong by up to 40x.
profileis 10,videois 2,videos/batchis 40, all four search endpoints are 10, everything else is 1. - Before a multi-page search, tell the user the running cost. Ten pages of
/search/videosis 100 credits. /videos/batchis capped at 20 photo ids. That cap exists precisely because this is the one call that fans out upstream spend. Do not attempt to work around it by chaining batches without telling the user what it will cost.- The path is
/api/v1/kuaishou/video/sub-comments. Do not derive it from the name "comment replies". Copy the path from the table. - Never fabricate view counts, follower counts, video ids, comment text or leaderboard positions. Only return data the API returned.
- Content and interface text are largely in Chinese. Translate for the user when helpful, but keep the original text alongside so ids and handles stay verifiable.
- Live status is a snapshot. A creator shown as live may have ended the stream seconds later; say so when it matters.
Failure handling
Kuaishou uses a narrow set of error codes. There is no 400, no 404 and no 503 here.
422means a missing identifier, e.g. nophoto_idand nourlon/video. Send one.401means the API key is invalid or missing. CheckSCAVIO_API_KEY.429means a rate or usage limit was exceeded. Wait before retrying. See rate limits.502is the one to understand. Kuaishou hides its errors inside HTTP 200 responses, returning a success status with a failure code in the body. Those are detected and surfaced to you as a502. So a 502 here does not necessarily mean the upstream is down; it often means the id, link or keyword was rejected. Re-check the identifier before retrying blindly, and do not retry more than once or twice.- An empty result set from a kwai.com id is expected, not a bug. See Guardrails.
- If a paginated call returns a null
next_cursor, that is the end of the data. Stop paging, especially on the 10-credit search endpoints. - If
SCAVIO_API_KEYis not set, prompt the user to export it before continuing.
Docs
Related skills
Pull Weibo user profiles and posts, post comments/likes/reposts, keyword search across posts, videos, users, topics and images, the hot-search board and ranking boards, and channel feeds. 31 endpoints, 1 credit each, structured JSON.
Look up TikTok profiles, search videos and users, explore hashtags, read comments, and traverse the social graph (followers/followings). Eleven endpoints, all at 1 credit per request.
Pull Douyin videos, user profiles and feeds, comments, hashtags, music, live rooms, the hot-search board, and keyword search across videos, users, music, live and hashtags. 27 endpoints, structured JSON.
Pull Douyin videos, user profiles and feeds, comments, hashtags, music, live rooms, the hot-search board, and keyword search across videos, users, music, live and hashtags. 27 endpoints, structured JSON.
Pull Weibo user profiles and posts, post comments/likes/reposts, keyword search across posts, videos, users, topics and images, the hot-search board and ranking boards, and channel feeds. 31 endpoints, 1 credit each, structured JSON.