Short-form video
Kwai API
Retrieve public Kwai profiles, paginated user posts and individual video posts.
Retrieve public Kwai profiles, feed pages and video posts with identifiers, engagement and media metadata.
API availability: Available
http://localhost:3017Public API: https://api.scrapeatlas.com.Endpoints
/v1/kwai/profileGet a Kwai profile
Read public account metadata and counts from Kwai’s public web API. Supply exactly one of handle or url. A private profile can expose public metadata with is_private=true.
Reference/v1/kwai/user/postsGet a Kwai user’s posts
Retrieve a public Kwai feed page with albums, post IDs and media metadata in feed order. Pass data.cursor as cursor for continuation.
Reference/v1/kwai/postGet a Kwai post
Retrieve a public Kwai video post by /@handle/photo/id URL, with music, tags and media metadata. Responses retain null values and coverage.
ReferenceQuick start
Create an API key on your account page, then call the public API. Values below are placeholders.
curl "https://api.scrapeatlas.com/v1/kwai/profile?handle=example" \
-H "x-api-key: YOUR_API_KEY"Coverage & limits
- Independent worker on port 3017 with KWAI_API_KEY in x-api-key. No login, browser, cookies, database, result store or consuming-product dependency.
- Only fixed read endpoints on https://www.kwai.com are contacted. The service key is never forwarded, redirects are rejected, and returned media URLs are never fetched.
- Limits: four concurrent operations, 20 seconds, at most three source attempts with one shared transient retry, 4 MiB combined decoded JSON, depth 32 and 60,000 nodes. Feeds return at most 50 posts and 50 album records.
- Input handles support ASCII letters, digits, underscore, dot and hyphen. Canonical /@handle and /@handle/photo/id URLs are accepted.
- Profiles and feeds use source counts as returned. Unknown counters stay null. Profile metadata can be public on a private account; feed retrieval respects privacy and restriction flags.
- Post detail can omit music and tags that profile feeds carry; known omissions produce partial status and coverage warnings.
- Operation and field names follow the ScrapeCreators contract.
| HTTP | failure.code | Meaning |
|---|---|---|
| 200 | partial | Known omissions: profile_counts_unavailable, privacy_unavailable, music_unavailable, tags_unavailable, post_counts_unavailable, media_unavailable, timestamp_unavailable or album_limit. |
| 400 | invalid_request | Missing, duplicate, ambiguous, unsafe or unsupported inputs. |
| 401 | unauthorized | Missing or invalid worker API key. |
| 403 | restricted | The requested feed or post is private or restricted. |
| 404 | not_found | The source returned no requested profile or post. |
| 429 | upstream_rate_limited | Source throttling; no retry. |
| 502 | upstream_challenged | The source challenged the request; no retry. |
| 502 | unsupported_page | Malformed response, mismatched identity, or invalid pagination. |
| 502 | response_too_large payload_too_complex | Byte, depth or node bounds exceeded. |
| 502 | unsafe_redirect request_limit upstream_error | The bounded source request failed. |
| 503 | busy | All worker slots are occupied. |
| 504 | timeout | Total request deadline expired. |