# Kwai Scraper (`automly/kwai-scraper`) Actor

Scrape Kwai videos by keyword or hashtag, any creator's profile and videos, playlists and single videos by link: views, likes, comments and shares counts, caption, hashtags, music, genres, author, post time, MP4 and cover links. No login.

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

## Pricing

from $1.30 / 1,000 videos

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Scraper

### What is Kwai Scraper?

**Kwai Scraper** is a tool that lets you **scrape Kwai videos, creator profiles, hashtags and keyword searches**: views, likes, comments and shares counts, captions, hashtags, music, genres, transcripts, post times, MP4 and cover links, and each creator's followers. Paste keywords, hashtags or Kwai links, click **Start**, and download the results as Excel, CSV or JSON.

- ⚡ **Fast:** 1,000 videos with music, genres and transcripts in about a minute
- 🔎 **Five ways in:** keywords, hashtags, profiles, playlists and single video or share links in one run
- 🎵 **Rich rows:** music, genres and transcript on every video, plus the creator's follower, like and video counts
- 🔓 **No login:** no Kwai account, no cookies, nothing to install
- 🆓 **Try it free:** the $5 of free monthly usage on Apify covers your first few thousand videos

### What can Kwai Scraper do?

- **Scrape Kwai videos by keyword**: search Kwai for any word (futebol, receita, makeup) and get the matching videos, hundreds or thousands deep for popular words.
- **Scrape a Kwai hashtag**: every video posted under #futebol, #receitafacil or your campaign tag, thousands deep.
- **Scrape a Kwai profile**: the creator's followers, following, likes and video count, plus their newest videos.
- **Scrape Kwai video details** from a video link, a numeric video ID or a `k.kwai.com` share link copied from the app.
- **Scrape a Kwai playlist**: every video in a creator's playlist.
- **Download Kwai videos**: each row has a direct MP4 link and the cover image.
- **Export Kwai data to Excel, CSV or JSON**, or send it to Google Sheets, Make, Zapier or n8n.

### What data can you extract from Kwai?

| 🎬 Videos | 📊 Engagement | 👤 Creators |
|---|---|---|
| Video ID and link | Views | Name and @handle |
| Caption and hashtags | Likes | Profile link and photo |
| Post time | Comments count | Followers and following |
| Duration, width, height | Shares | Likes received |
| MP4 link, cover, first frame | AI-generated flag | Number of videos |
| Music name, author, audio file | Genres | Bio, verified badge, gender |
| Transcript (when Kwai has one) | | Kwai user IDs |

### How to scrape Kwai videos

1. [Create a free Apify account](https://console.apify.com/sign-up) (no credit card).
2. Open **Kwai Scraper** and type keywords in **Search keywords**, hashtags in **Hashtags**, or paste Kwai links and @handles in **Kwai links, @handles or video IDs**.
3. Set how many videos you want per keyword, hashtag or playlist, and per profile.
4. Click **Start**. Rows appear in the **Output** tab as they are found.
5. Download them as Excel, CSV, JSON or HTML, or read them through the Apify API.

### How much does it cost to scrape Kwai?

You pay per result: one price for each video row and one for each profile row, listed on the **Pricing** tab. Higher Apify plans pay less per result. Videos already saved earlier in the same run are never saved or charged twice, and an input that turns out not to exist costs nothing.

Set **Max results** or a maximum cost for the run to cap what you spend. The run stops as soon as either is reached and keeps everything saved so far.

### ⬇️ Input

| Setting | What it does |
|---|---|
| **Search keywords** | Words to search Kwai videos for, one per line, e.g. `futebol` or `comida árabe`. |
| **Hashtags** | Hashtags with or without `#`, e.g. `futebol` or `#receitafacil`. |
| **Kwai links, @handles or video IDs** | Video, profile, hashtag, playlist or share links, `@handles`, or numeric video IDs. |
| **Videos per keyword, hashtag or playlist** | Most videos to save for each of them (default 100). |
| **Videos per profile** | How many of each creator's newest videos to save with the profile (default 20; 0 = profile only). |
| **Music, genres and transcript for every video** | On by default. Off gives slightly faster runs without those columns on list videos. |
| **Max results** | Most rows in the whole run (default 100; 0 = no limit). |

Videos for two keywords and a creator's profile with their 30 newest videos:

```json
{
  "searchQueries": ["futebol", "receita"],
  "startUrls": ["https://www.kwai.com/@jadebelchior905"],
  "maxVideosPerList": 200,
  "videosPerProfile": 30,
  "maxItems": 500
}
```

A hashtag and a few videos by link:

```json
{
  "hashtags": ["#receitafacil"],
  "startUrls": [
    "https://www.kwai.com/@jadebelchior905/video/5213629630362183094",
    "https://k.kwai.com/p/CCzy11ul"
  ],
  "maxVideosPerList": 1000,
  "maxItems": 0
}
```

### ⬆️ Output

Every row has a `type`: `video` or `profile`. A video row:

```json
{
  "type": "video",
  "id": "5213629630362183094",
  "url": "https://www.kwai.com/@jadebelchior905/video/5213629630362183094",
  "caption": "# tatuagem",
  "hashtags": [],
  "createTime": "2026-01-19T13:45:42Z",
  "viewCount": 185361,
  "likeCount": 12282,
  "commentCount": 103,
  "shareCount": 311,
  "duration": 21,
  "playUrl": "https://aws-br-cdn.kwai.net/upic/2026/01/19/21/BMjAy...e09.mp4?tag=...",
  "coverUrl": "https://aws-br-pic.kwai.net/upic/2026/01/19/21/BMjAy...5c4.webp",
  "musicName": "Áudio original criado por Jade Belchior",
  "genres": ["Tattoo/Body Art/Piercings", "Fashion"],
  "authorUsername": "jadebelchior905",
  "authorName": "Jade Belchior",
  "authorFollowersCount": 7085,
  "authorVideosCount": 278,
  "source": "https://www.kwai.com/@jadebelchior905/video/5213629630362183094"
}
```

A profile row:

```json
{
  "type": "profile",
  "id": "3xrv6d35sjf7p6q",
  "userId": "150001727185707",
  "username": "jadebelchior905",
  "name": "Jade Belchior",
  "url": "https://www.kwai.com/@jadebelchior905",
  "bio": "A beleza começa no momento em que você decide ser você mesma.",
  "verified": false,
  "followersCount": 7085,
  "followingCount": 35,
  "likesCount": 43775,
  "videosCount": 278
}
```

The **Overview** table shows the main columns for both row types; **All fields** shows every column. A run report (inputs, rows saved per input, anything not found) is saved with each run.

### How can I use Kwai data?

- **Trend research in Brazil and Latin America**: see which videos, sounds and genres take off for a keyword or hashtag, by views, likes and shares.
- **Influencer discovery**: find creators posting about your niche and compare their followers, likes and posting volume.
- **Campaign tracking**: follow a branded hashtag and count the videos, views and shares it collects.
- **Competitor monitoring**: schedule runs on rival creators' profiles and track every new video and its numbers.
- **Content and AI datasets**: captions, transcripts, genres and MP4 links for video analysis.

### Use Kwai Scraper with the API and integrations

Run it from your code with the Apify client:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("automly/kwai-scraper").call(run_input={
    "hashtags": ["futebol"],
    "maxVideosPerList": 100,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["url"], item["viewCount"])
```

Connect it to Make, Zapier, n8n, Google Sheets or Slack, schedule it daily or weekly, or get a webhook when a run finishes.

#### Use with AI agents (MCP)

AI agents can run Kwai Scraper through the Apify MCP server. Ask for example: "Find the 50 most recent Kwai videos of @jadebelchior905 with their views and likes". The agent sends:

```json
{"startUrls": ["@jadebelchior905"], "videosPerProfile": 50}
```

### Want to get other data from short-video apps?

| Actor | What it gets |
|---|---|
| [TikTok Scraper](https://apify.com/automly/tiktok-scraper) | TikTok videos, profiles, hashtags and searches |
| [TikTok Hashtag Scraper](https://apify.com/automly/tiktok-hashtag-scraper) | Every video under a TikTok hashtag |
| [Douyin Scraper](https://apify.com/automly/douyin-scraper) | Douyin (Chinese TikTok) videos, profiles and comments |
| [YouTube Shorts Scraper](https://apify.com/automly/youtube-shorts-scraper) | YouTube Shorts by keyword or channel |
| [Instagram Scraper](https://apify.com/automly/instagram-scraper) | Instagram posts, Reels and profiles |

### ❓ FAQ

#### How many videos can I get from one keyword?

As many as Kwai has for it. Popular Portuguese keywords like `receita` give 1,000 videos and more; a narrow keyword runs out sooner (`comida árabe` gave 135). When a keyword runs out, the run report says how many different videos Kwai showed for it. Popular hashtags also go thousands of videos deep.

#### Is there a limit on profiles?

No. A profile gives every public video the creator has posted, newest first, up to the number you set.

#### Can I get the comments of Kwai videos?

Not at the moment: Kwai does not show comment text to visitors who are not signed in, and this scraper uses public data only. Every video row has the comments count.

#### Do I need a Kwai account?

No. Kwai Scraper reads only what anyone can see on Kwai without signing in. You never share a password or cookies.

#### Can I download Kwai videos?

Yes. `playUrl` is a direct MP4 link and `coverUrl` the cover image. These links expire after a while, so download the files soon after the run.

#### Does it work for Kwai outside Brazil?

Yes. Kwai is one app worldwide, so you get videos in Portuguese, Spanish, Indonesian, Arabic and other languages. Brazil has by far the most content.

#### What about Kuaishou (快手)?

Kuaishou is the same company's app for mainland China, with separate content. This scraper covers Kwai.

#### Is it legal to scrape Kwai?

Kwai Scraper collects only public data: videos, captions, public counts and public creator profiles that anyone can see without an account. It does not collect private data. Creator names, handles and bios can be personal data under laws like the GDPR or Brazil's LGPD, so use them only for a legitimate reason. Read more in [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/). Kwai Scraper is not affiliated with, endorsed by or connected to Kwai or Kuaishou.

#### Something isn't working?

Open an issue on the **Issues** tab with the input you used, and we will look at it quickly. Missing a field or an input type? Tell us there too.

If Kwai Scraper saves you time, a short review on the Store helps other people find it. Thank you!

# Actor input Schema

## `searchQueries` (type: `array`):

Words to search Kwai videos for, one per line, e.g. futebol, receita, makeup or comida árabe. Each keyword gives matching videos until it runs out or reaches 'Videos per keyword, hashtag or playlist'. Portuguese keywords find the most videos.

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

Hashtags with or without #, one per line, e.g. futebol or #receitafacil. Each gives the videos posted under that hashtag, in Kwai's own order. Popular hashtags go thousands of videos deep.

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

Kwai links, one per line, e.g. https://www.kwai.com/@jadebelchior905/video/5213629630362183094 (a video), https://www.kwai.com/@jadebelchior905 or @jadebelchior905 (a profile and its videos), https://www.kwai.com/topic/futebol (a hashtag), https://www.kwai.com/@jadebelchior905/playlist/141667664531555211 (a playlist), app share links like https://k.kwai.com/p/CCzy11ul (paste the whole shared message if you like) or a numeric video ID.

## `maxVideosPerList` (type: `integer`):

Most videos to save for each keyword, hashtag or playlist, e.g. 100. Busy keywords and hashtags have thousands.

## `videosPerProfile` (type: `integer`):

How many of each creator's newest videos to save with their profile, e.g. 20. Set 0 for the profile row only.

## `videoDetails` (type: `boolean`):

Adds the music track, Kwai's genres, the spoken-text transcript (when Kwai has one) and the creator's follower, like and video counts to every video row. Turn off for slightly faster runs; video links always get them.

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

Most rows to save in the whole run (videos and profiles together), e.g. 100. Set 0 for no limit.

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

Leave the default.

## Actor input object example

```json
{
  "searchQueries": [
    "futebol"
  ],
  "startUrls": [
    "https://www.kwai.com/@jadebelchior905"
  ],
  "maxVideosPerList": 50,
  "videosPerProfile": 20,
  "videoDetails": true,
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `details` (type: `string`):

No description

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

No description

## `report` (type: `string`):

No description

# 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 = {
    "searchQueries": [
        "futebol"
    ],
    "startUrls": [
        "https://www.kwai.com/@jadebelchior905"
    ],
    "maxVideosPerList": 50,
    "videosPerProfile": 20,
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("automly/kwai-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 = {
    "searchQueries": ["futebol"],
    "startUrls": ["https://www.kwai.com/@jadebelchior905"],
    "maxVideosPerList": 50,
    "videosPerProfile": 20,
    "maxItems": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("automly/kwai-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 '{
  "searchQueries": [
    "futebol"
  ],
  "startUrls": [
    "https://www.kwai.com/@jadebelchior905"
  ],
  "maxVideosPerList": 50,
  "videosPerProfile": 20,
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call automly/kwai-scraper --silent --output-dataset

```

## MCP server setup

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