# Kuaishou 快手 Scraper - Videos, Comments, Users & Hot Lists (`clover_folktale/kuaishou-scraper`) Actor

Scrape Kuaishou (快手, also known as Kwai): search videos, photo posts, live rooms, sounds and hashtags by keyword, list a user's or hashtag's videos, get video details, comments with replies and IP region, find users, read hot lists. No login or cookies needed. Export JSON, CSV or Excel.

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

## Pricing

from $2.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

Scrape public data from Kuaishou (快手) without a login: videos and photo posts by keyword, the videos of a user or hashtag, video details, comments with replies, users by keyword, live rooms, sounds, hashtags and the platform's hot and ranking lists. Built for market research, trend tracking, creator discovery and sentiment analysis on one of China's largest short-video platforms.

### What is Kuaishou?

Kuaishou (快手, also known internationally as Kwai) is a Chinese short-video and live-streaming platform. This Actor is not affiliated with Kuaishou; it reads the public pages and lists anyone can see.

### What data can you get?

| Mode | What it returns |
|---|---|
| `search` | Videos, photo posts, live rooms, sounds or hashtags found by keyword |
| `searchUsers` | Users found by keyword, with followers and bio |
| `userVideos` | Latest or most popular videos of a user (by numeric user ID) |
| `videoDetails` | One record per video ID or video link |
| `comments` | Top-level comments of videos, optionally with replies |
| `hotLists` | Hot list, category boards, hot-search people, live, shopping and brand rankings, music ranking |
| `hashtagVideos` | Most popular or newest videos of a hashtag |

Video records: `videoId`, `url`, `workType`, `description`, `hashtags`, `createdAt`, `durationSeconds`, `playCount`, `likeCount`, `commentCount`, `shareCount`, `collectCount`, `downloadCount`, `authorId`, `authorName`, `authorKwaiId`, `authorGender`, `authorVerified`, `authorAvatarUrl`, `authorProfileUrl`, `musicId`, `musicTitle`, `musicArtist`, `coverUrl`, `videoUrl`, `width`, `height`.
User records: `userId`, `name`, `kwaiId`, `gender`, `bio`, `avatarUrl`, `followerCount`, `videoCount`, `likeCount`, `verified`. Counts the app shows as rounded text ("1.1k", "75.6m") are converted and are approximate above 999.
Comment records: `commentId`, `parentCommentId`, `text`, `likeCount`, `replyCount`, `createdAt`, `isHot`, `authorId`, `authorName`, `authorAvatarUrl`, `authorVerified`, `authorRegion` (IP region shown next to the comment), `replyToUserName`.
Ranking records (`type: hotItem`): `listType`, `rank` (0 = pinned), `title`, `subtitle`, `hotValue`, `hotValueText`, `viewCount`, `itemId`, `userId`.

### How to use Kuaishou Scraper

1. Open the Actor and choose a mode.
2. Fill the list that belongs to the mode (keywords, user IDs, video IDs or links, hashtags or lists); the fields are named after the mode.
3. Set the maximum number of results per input and run.
4. Export the dataset as JSON, CSV or Excel, or read it through the API.

### Input

| Field | Type | Mode | Meaning |
|---|---|---|---|
| `mode` | string | all | One of the seven modes. Default `search` |
| `keywords` | list | search | Each keyword is a separate search. Default `美食` |
| `searchType` | string | search | `video`, `image`, `live`, `music` or `tag`. Default `video` |
| `userKeywords` | list | searchUsers | Each keyword is a separate user search |
| `users` | list | userVideos | Numeric user IDs (the `userId` of a user search). Profile links are not supported |
| `userSort` | string | userVideos | `latest` or `popular` |
| `videos` | list | videoDetails, comments | Numeric video IDs or Kuaishou video links; a pasted share message works |
| `includeReplies` | boolean | comments | Also output replies under each comment |
| `hashtags` | list | hashtagVideos | Names such as `美食` or `#美食` |
| `hashtagTab` | string | hashtagVideos | `hot` or `latest` |
| `lists` | list | hotLists | `hot`, `entertainment`, `society`, `useful`, `challenge`, `people`, `live`, `shopping`, `brand`, `music` |
| `maxResults` | integer | all | Maximum items per input, up to 1000. Default 20 |

Empty input `{}` runs a keyword search for 美食 and returns 20 videos.

```json
{"mode": "comments", "videos": ["5254012114897019306"], "includeReplies": true, "maxResults": 100}
```

### Output example

```json
{"type": "video", "videoId": "5254012114897019306", "url": "https://www.kuaishou.com/short-video/3xfdf952b4qfehk",
 "workType": "video", "description": "#老铁解馋饭局", "hashtags": ["老铁解馋饭局"], "createdAt": "2026-07-06T08:47:42Z",
 "durationSeconds": 8.9, "playCount": 16344911, "likeCount": 179220, "commentCount": 8750, "shareCount": 24838,
 "authorId": "1952531864", "authorName": "Example author", "keyword": "美食"}
```

### How much does it cost?

You pay per event: a start fee of $0.0125 per run and $0.002 per item returned.

- Keyword search, user search and the latest videos of a user pay the start fee again for every further keyword or user.
- Video details, comments, hashtags, ranking lists and popular videos of a user pay one start fee per run.
- Example: 100 videos for one keyword cost $0.0125 + 100 x $0.002 = $0.2125. Two keywords with 50 videos each cost $0.025 + 100 x $0.002 = $0.225. 200 comments of one video cost $0.0125 + $0.40 = $0.4125.
- A spending limit set on the run is respected: the run stops cleanly when the next item or start fee does not fit.

Free Apify plan: every run returns a sample dataset (a real result of the prefilled input) so you can see the output format; your input is not used and nothing is charged. To run your own queries, use any paid Apify plan.

### Use cases

- Track which topics and sounds trend on Kuaishou's hot lists day by day.
- Find creators in a niche and compare followers, videos and verification.
- Collect comments and replies for sentiment and customer research.
- Monitor the videos under a hashtag or of competitor accounts.
- Build a dataset of captions, hashtags and engagement for content research.

### Integrations and API

Runs can be started through the Apify API, scheduled, and connected to integrations such as webhooks, Zapier or Make.

```python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("clover_folktale/kuaishou-scraper").call(run_input={"mode": "search", "keywords": ["美食"], "maxResults": 50})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["description"], item["playCount"])
```

### Tips and limits

- Keyword and ID lookups can be slow: a request may take 10 to 40 seconds.
- The platform sometimes refuses a hashtag that exists for a while. A hashtag refused six times in a row is reported as not found and the run goes on with the next one; if you are sure it exists, run it again later.
- A hashtag or video the platform does not know counts as not found (keyword search always answers something) and is not charged by itself: the run's first start fee is charged once the platform has answered, and an empty answer counts. Keyword search, user search and latest videos of a user take a start fee for every further input in advance; an input the platform answers with nothing (for example a user ID that does not exist) still pays it.
- Later search pages are only requested while the page before them (the first one included) brought at least 7 new items, so a run can return fewer items than `maxResults` when the platform has no more.
- Paging beyond a few hundred results per keyword may repeat items; repeats are removed and never charged twice.
- User videos need the numeric user ID. Take it from a `searchUsers` run.
- Video links resolve to the video ID first; in comments mode that costs one extra request per link.
- In comments mode with replies, only threads with at least two missing replies are expanded.
- Counts shown as rounded text on the platform ("1.1k") are approximate.

### FAQ

**Do I need a Kuaishou account?** No login or cookies are needed.

**Is it legal?** Only public data is returned. No phone numbers, messages or other private data. You are responsible for how you use it.

**How fresh is the data?** Each run reads the platform at that moment.

**Why are some fields empty?** The platform does not show every field everywhere, for example `downloadCount` or `authorKwaiId`.

**Can I schedule runs and export?** Yes, to JSON, CSV, Excel and more.

### More tools from the same developer

- [Douyin 抖音 Scraper - Videos, Comments, User IDs & IP Location](https://apify.com/clover_folktale/douyin-scraper)
- [TikTok Scraper - Video Search, Hashtags & Author Profiles](https://apify.com/clover_folktale/tiktok-scraper)
- [Bilibili B站 Scraper - Videos, Comments, Subtitles & User IDs](https://apify.com/clover_folktale/bilibili-scraper)
- [Xiaohongshu 小红书 RedNote Scraper - Notes, Comments & User IP](https://apify.com/clover_folktale/xiaohongshu-scraper)
- [Weibo 微博 Scraper - Posts, Comments, User IDs & IP Location](https://apify.com/clover_folktale/weibo-scraper)

# Actor input Schema

## `mode` (type: `string`):

What to scrape: videos (or photos, live rooms, sounds, hashtags) found by keyword, users found by keyword, the videos of users, details of single videos, comments, ranking lists, or the videos of hashtags.

## `keywords` (type: `array`):

Search keywords; each keyword is a separate search. Falls back to "美食" when empty.

## `userKeywords` (type: `array`):

Search keywords; each keyword is a separate user search. Falls back to "美食" when empty.

## `users` (type: `array`):

Numeric user IDs such as 2613731401 (the userId field of a user search result). Profile links are not supported. Falls back to a sample user when empty.

## `videos` (type: `array`):

Numeric video IDs or Kuaishou video links (a pasted share message works). A link costs one extra request in comments mode. Falls back to a sample video when empty.

## `hashtags` (type: `array`):

Hashtag names such as 美食 or #美食. Falls back to "美食" when empty.

## `lists` (type: `array`):

Which ranking lists to read; each list is a separate input.

## `searchType` (type: `string`):

What the keyword search returns.

## `userSort` (type: `string`):

Latest videos, or the user's most popular videos.

## `hashtagTab` (type: `string`):

Most popular or newest videos of the hashtag.

## `includeReplies` (type: `boolean`):

Also output the replies under each comment. Replies count toward the limit and are charged like comments.

## `maxResults` (type: `integer`):

Maximum items for each input (up to 1000). You are charged $0.002 per item returned, plus a $0.0125 start fee per run. Keyword search, user search and the latest videos of a user pay the start fee again for every further input.

## Actor input object example

```json
{
  "mode": "search",
  "keywords": [
    "美食"
  ],
  "userKeywords": [
    "美食"
  ],
  "users": [
    "2613731401"
  ],
  "videos": [
    "5254012114897019306"
  ],
  "hashtags": [
    "美食"
  ],
  "lists": [
    "hot"
  ],
  "searchType": "video",
  "userSort": "latest",
  "hashtagTab": "hot",
  "includeReplies": false,
  "maxResults": 20
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped items (JSON, CSV, Excel via the dataset API).

# 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 = {
    "keywords": [
        "美食"
    ],
    "userKeywords": [
        "美食"
    ],
    "users": [
        "2613731401"
    ],
    "videos": [
        "5254012114897019306"
    ],
    "hashtags": [
        "美食"
    ],
    "lists": [
        "hot"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("clover_folktale/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 = {
    "keywords": ["美食"],
    "userKeywords": ["美食"],
    "users": ["2613731401"],
    "videos": ["5254012114897019306"],
    "hashtags": ["美食"],
    "lists": ["hot"],
}

# Run the Actor and wait for it to finish
run = client.actor("clover_folktale/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 '{
  "keywords": [
    "美食"
  ],
  "userKeywords": [
    "美食"
  ],
  "users": [
    "2613731401"
  ],
  "videos": [
    "5254012114897019306"
  ],
  "hashtags": [
    "美食"
  ],
  "lists": [
    "hot"
  ]
}' |
apify call clover_folktale/kuaishou-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,clover_folktale/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/7qAaRfiWRWg1vgSex/builds/jIkgiQtvbPj4WZ8Er/openapi.json
