# Kwai & Kuaishou Scraper — Video, Profile, Search & Trending (`memo23/kwai-kuaishou-scraper`) Actor

Scrape Kwai and Kuaishou (快手) short-video data — no login, no browser. Kwai: video detail, creator profiles, creator video history, keyword search (videos + users), hashtag feeds. Kuaishou: video detail and the trending hot board. Clean unified JSON.

- **URL**: https://apify.com/memo23/kwai-kuaishou-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Social media, Videos, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Kwai & Kuaishou Scraper — Video, Profile, Search & Trending

Scrape **Kwai** and **Kuaishou (快手)** short-video data without a login, an API key, or a headless browser. Point it at a video, a creator, a keyword or a hashtag and get back clean, flat JSON: view/like/comment/share counts, playable MP4 URLs, creator stats, and China's Kuaishou trending hot board.

![How it works](https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-kwai-kuaishou.png)

### Why use this Kwai & Kuaishou Scraper

Kwai (Kuaishou's international app) and Kuaishou (China's #2 short-video platform) sit behind heavy anti-bot defenses and expose no public API. This Actor talks to the platforms' own web endpoints the way the site does, so you get the same numbers the apps show — exact follower counts, real view counts, and direct video URLs — at scale, with one clean row per item and no scraping infrastructure to run yourself.

- **No login, no API key, no browser.** A built-in residential proxy is included.
- **Both platforms in one Actor** — Kwai for the international/LATAM market, Kuaishou for China.
- **Full numbers, not rounded** — 2,587,582 fans, not "2.5M".
- **Playable MP4 URLs** on every video row for download or archival.
- **Multilingual search** — Chinese, English and mixed queries.

### What it scrapes

**Kwai (kwai.com)**

- Video detail — caption, views, likes, comments, shares, MP4 URLs, cover, category, duration, creator.
- Creator profile — followers, following, total likes, video count, bio, verified flag, avatar.
- Creator video history — a creator's full posting history, paginated.
- Keyword video search.
- Keyword creator search — find influencers by niche, with follower counts.
- Hashtag / topic feeds.

**Kuaishou (kuaishou.com)**

- Video detail — caption, views, likes, comments, shares, MP4 URLs, creator and follower count.
- Trending hot board (快手热榜) — the day's trending topics, with view counts and their top video IDs.
- Trending-video expansion — full video detail for the videos behind each trending topic.

### Supported inputs

Paste any of these into **Kwai / Kuaishou URLs or IDs**; each is auto-classified:

| Input | Example | Result |
|---|---|---|
| Kwai video | `https://www.kwai.com/@rayceitas/video/5207718657197499071` | video detail |
| Kwai profile | `https://www.kwai.com/@maisreceitas` | creator profile |
| Kuaishou video | `https://www.kuaishou.com/short-video/3xn9sujjgg2zh6e` | video detail |

Keyword search, creator search, hashtags and the Kuaishou hot board have their own input fields.

### Use cases

- **KOL / creator discovery** — build influencer shortlists for Kwai's LATAM market or Kuaishou's China market by keyword, with follower counts.
- **China & LATAM market research** — track what's trending via keyword search and the Kuaishou hot board.
- **Content-trend tracking** — time-series of trending videos, hashtags and engagement velocity.
- **Creator audits / due diligence** — full posting history with per-video engagement metrics.
- **Brand monitoring** — detect branded content and measure its performance on Chinese short-video platforms.
- **Video archival & repurposing** — HTTPS-ready MP4 URLs for every video.

### How it works

The Actor loads a browser-shaped session against each platform's own web endpoints and reads the same JSON the site renders from. Kwai's read endpoints are unsigned, so video, profile, creator, search and hashtag data come straight back. Kuaishou video detail is read from the mobile share page, and the trending hot board from the platform's public GraphQL. Every response is flattened to one stable row per item. Large numeric IDs are preserved as strings at full precision, and media URLs are normalized to HTTPS.

### Input configuration

| Field | What it does |
|---|---|
| **Kwai / Kuaishou URLs or IDs** | Mixed list of video/profile/Kuaishou-video references. |
| **Kwai: also scrape creator videos** | For each Kwai profile, also pull its posted videos. |
| **Max videos per Kwai creator** | Cap per creator (default 40). |
| **Kwai: video search keywords** | Keyword video search. |
| **Kwai: creator search keywords** | Keyword creator search. |
| **Max results per Kwai keyword** | Cap per keyword (default 40). |
| **Kwai: hashtag / topic names** | Hashtag feeds (with or without #). |
| **Max videos per Kwai hashtag** | Cap per hashtag (default 40). |
| **Kuaishou: trending hot board** | One row per trending topic. |
| **Kuaishou: expand hot-board videos** | Full video detail for trending videos. |
| **Max Kuaishou trending videos** | Cap on expanded trending videos (default 60). |
| **Max items (total)** | Global cap across the whole run. |
| **Proxy configuration** | Optional; a residential proxy is built in. |

### Output samples

Kwai video:

```json
{
  "platform": "kwai",
  "type": "video",
  "photoId": "5209970402356005512",
  "url": "https://www.kwai.com/@maisreceitas/video/5209970402356005512",
  "caption": "o melhor e mais fácil bolo de chocolate",
  "createTime": "2026-09-19T...",
  "durationMs": 75837,
  "viewCount": 1371792,
  "likeCount": 140512,
  "commentCount": 4222,
  "shareCount": 312,
  "category": "Cooking",
  "coverUrl": "https://...webp",
  "videoUrls": ["https://...mp4"],
  "authorKwaiId": "maisreceitas",
  "authorName": "Mais Receitas",
  "authorVerified": false
}
```

Kuaishou video:

```json
{
  "platform": "kuaishou",
  "type": "video",
  "photoIdStr": "3xn9sujjgg2zh6e",
  "url": "https://www.kuaishou.com/short-video/3xn9sujjgg2zh6e",
  "caption": "...",
  "viewCount": 10099008,
  "likeCount": 328153,
  "commentCount": 3483,
  "shareCount": 1268,
  "videoUrls": ["https://...mp4"],
  "authorName": "央视新闻",
  "authorFanCount": 80701574,
  "authorVerified": true
}
```

Kuaishou trending topic:

```json
{ "platform": "kuaishou", "type": "hotRank", "rank": 1, "name": "郑钦文首夺中网女单冠军", "photoIds": ["3x...", "3x..."] }
```

### Key output fields

| Field | Description |
|---|---|
| `platform` | `kwai` or `kuaishou` |
| `type` | `video`, `profile`, `user`, or `hotRank` |
| `photoId` / `photoIdStr` | Video ID |
| `url` | Canonical video or profile URL |
| `caption` | Video caption |
| `viewCount` / `likeCount` / `commentCount` / `shareCount` | Engagement metrics |
| `videoUrls` | Playable MP4 URL(s) |
| `coverUrl` | Thumbnail |
| `authorName` / `authorKwaiId` / `authorId` | Creator identity |
| `fanCount` / `authorFanCount` | Follower count (exact) |
| `category` | Kwai content category |

### FAQ

**Do I need a login or cookie?** No. Every operation above works without one.

**Can it scrape Kwai comments?** Not in this version. Kwai's web comment endpoint is login-walled — it returns an empty list to guests. There is an optional, beta `kwaiCookie` input for users who supply their own logged-in cookie, but it is untested and not guaranteed.

**Can it scrape Kuaishou search, profiles, or a creator's full video list?** Not in this version. Those Kuaishou endpoints require the app's native request signature, which is outside this Actor's no-login, no-browser scope. Kuaishou **video detail** and the **trending hot board** both work. For Kwai, search, profiles and creator videos all work.

**Why residential proxy?** Kuaishou's trending board answers reliably only from a China-region exit; the Actor ships one, so you don't configure anything.

**How is it billed?** Per result row — you pay for the data you keep.

### Support

Found a bug or need a field added? Open an issue on the Actor's Issues tab and it will be looked at.

### ⚠️ Disclaimer

This Actor scrapes only publicly available data from Kwai and Kuaishou — the same information any visitor can see without logging in. It does not access private accounts, bypass authentication, or collect personal data beyond what the platforms publish openly. You are responsible for how you use the data and for complying with Kwai's and Kuaishou's terms of service, the GDPR, the CCPA, and any other laws that apply to you. Do not use scraped data to harass, dox, or harm anyone. This Actor is not affiliated with, endorsed by, or connected to Kuaishou Technology or any of its brands.

### SEO Keywords

Kwai scraper, Kuaishou scraper, 快手 scraper, Kwai API, Kuaishou API, Kwai video scraper, Kuaishou video downloader, Kwai creator scraper, Kwai influencer scraper, KOL discovery China, Kwai keyword search, Kwai hashtag scraper, Kuaishou trending, 快手热榜, Kuaishou hot board, Kwai profile scraper, Chinese short video scraper, Kwai LATAM scraper, Kwai Brazil scraper, short video data extraction, Kwai engagement metrics, Kuaishou video metadata, no-login Kwai scraper.

# Changelog

This Actor's version history is a separate document: https://apify.com/memo23/kwai-kuaishou-scraper/changelog.md

# Actor input Schema

## `startUrls` (type: `array`):

Kwai video URLs, Kwai profile URLs (@handle), or Kuaishou short-video URLs. Also accepts bare IDs. Each is auto-classified:

- Kwai video → full video detail
- Kwai profile (@handle) → creator profile (turn on 'Also scrape creator videos' to add their posts)
- Kuaishou short-video → full video detail

## `kwaiCreatorVideos` (type: `boolean`):

For each Kwai profile in the URL list, also scrape the creator's posted videos (paginated).

## `maxCreatorVideos` (type: `integer`):

Upper bound on videos collected per Kwai creator when 'Also scrape creator videos' is on.

## `kwaiSearchKeywords` (type: `array`):

Keyword video search on Kwai. Each keyword returns a page of matching videos. Chinese, English and mixed queries all work.

## `kwaiUserKeywords` (type: `array`):

Keyword creator search on Kwai — find influencers by niche. Each keyword returns matching creators with follower counts.

## `maxResultsPerSearch` (type: `integer`):

Upper bound on rows per Kwai keyword (videos or creators).

## `kwaiHashtags` (type: `array`):

Kwai hashtag or topic names, with or without the leading #. Each returns a page of videos under that topic.

## `maxResultsPerHashtag` (type: `integer`):

Upper bound on videos collected per Kwai hashtag.

## `kuaishouHotBoard` (type: `boolean`):

Scrape the Kuaishou trending hot board — one row per trending topic, with its name, view count and the IDs of its top videos.

## `kuaishouHotBoardVideos` (type: `boolean`):

For each trending topic, also fetch full video detail for its top videos (views, likes, comments, MP4 URL, creator). Independent of the topic rows above.

## `maxHotBoardVideos` (type: `integer`):

Upper bound on the number of trending videos expanded across the whole hot board.

## `kwaiCookie` (type: `string`):

A logged-in kwai.com cookie string. Kwai comments are login-walled on the web; a valid cookie here is intended to unlock them. This path is BETA and not guaranteed. Video, profile, creator-videos, search and hashtag scraping all work without it.

## `maxItems` (type: `integer`):

Global cap on the number of dataset items across the whole run. Leave empty for no cap.

## `proxyConfiguration` (type: `object`):

Optional. The Actor ships a built-in residential proxy, so you usually leave this off. Supply your own proxy only if you need a specific region or provider.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.kwai.com/@rayceitas/video/5207718657197499071"
    },
    {
      "url": "https://www.kwai.com/@maisreceitas"
    },
    {
      "url": "https://www.kuaishou.com/short-video/3xn9sujjgg2zh6e"
    }
  ],
  "kwaiCreatorVideos": false,
  "maxCreatorVideos": 40,
  "kwaiSearchKeywords": [],
  "kwaiUserKeywords": [],
  "maxResultsPerSearch": 40,
  "kwaiHashtags": [],
  "maxResultsPerHashtag": 40,
  "kuaishouHotBoard": false,
  "kuaishouHotBoardVideos": false,
  "maxHotBoardVideos": 60,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `items` (type: `string`):

Every scraped row. The `platform` and `type` fields tell each row apart (kwai/kuaishou; video/profile/user/hotRank).

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.kwai.com/@rayceitas/video/5207718657197499071"
        },
        {
            "url": "https://www.kwai.com/@maisreceitas"
        },
        {
            "url": "https://www.kuaishou.com/short-video/3xn9sujjgg2zh6e"
        }
    ],
    "kwaiSearchKeywords": [],
    "kwaiUserKeywords": [],
    "kwaiHashtags": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/kwai-kuaishou-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [
        { "url": "https://www.kwai.com/@rayceitas/video/5207718657197499071" },
        { "url": "https://www.kwai.com/@maisreceitas" },
        { "url": "https://www.kuaishou.com/short-video/3xn9sujjgg2zh6e" },
    ],
    "kwaiSearchKeywords": [],
    "kwaiUserKeywords": [],
    "kwaiHashtags": [],
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/kwai-kuaishou-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.kwai.com/@rayceitas/video/5207718657197499071"
    },
    {
      "url": "https://www.kwai.com/@maisreceitas"
    },
    {
      "url": "https://www.kuaishou.com/short-video/3xn9sujjgg2zh6e"
    }
  ],
  "kwaiSearchKeywords": [],
  "kwaiUserKeywords": [],
  "kwaiHashtags": []
}' |
apify call memo23/kwai-kuaishou-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,memo23/kwai-kuaishou-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/lRx3uLcLwwtfZNl1g/builds/j60Rm6nSrrflahrbz/openapi.json
