# Douyin Hot Search Scraper - Real-Time Trending Topics (`zen-studio/douyin-hot-search-scraper`) Actor

Scrape Douyin (抖音) real-time trending topics across all 5 hot-search boards. Get rank, hot value, view count, video count, cover image, and event time for every topic. No login or setup needed. Export to JSON, CSV, or Excel.

- **URL**: https://apify.com/zen-studio/douyin-hot-search-scraper.md
- **Developed by:** [Zen Studio](https://apify.com/zen-studio) (community)
- **Categories:** Videos, Social media, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.99 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Douyin Hot Search Scraper (抖音热榜) — Real-Time Trending Topics, Hashtags & Rankings (2026)

<blockquote style="border-left:4px solid #4C945E;background:#F0FDF4;padding:12px 16px">
<span style="font-size:16px;font-weight:700;color:#1C1917">Douyin's (抖音) live trending boards (热榜) in clean structured JSON — hot search, seeding, entertainment, social, and challenge</span> <span style="font-size:15px;color:#57534E"> — rank, hot value (热度), view count, video count, cover image, badge, and when each topic started trending. ~50 topics per board. No login, no account, no setup.</span>
</blockquote>

![Douyin Hot Search Scraper](https://iili.io/CFEiJFs.png)

<table>
<tr>
<td colspan="5" style="padding:10px 14px;background:#4C945E;border:none;border-radius:4px 4px 0 0">
<span style="color:#FAFAF9;font-size:14px;font-weight:700;letter-spacing:0.5px">Zen Studio · Chinese-platform suite</span>
<span style="color:#E8F5E9;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;RedNote (小红书), Douyin (抖音), Xigua (西瓜视频)</span>
</td>
</tr>
<tr>
<td style="padding:10px 12px;border:1px solid #E7E5E4;background:#E8F5E9;border-right:none;border-top:none;vertical-align:top;width:20%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-3TJaaOJDU1AMiOoJM-Vu2eVr0P6N-douyin-profile-scraper-logo.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/zen-studio/douyin-hot-search-scraper" style="color:#4C945E;text-decoration:none;font-weight:700;font-size:13px">Douyin&nbsp;Hot&nbsp;Search</a></span><br>
<span style="color:#4C945E;font-size:11px;font-weight:600">&#10148; You are here</span>
</td>
<td style="padding:10px 12px;border:1px solid #E7E5E4;border-right:none;border-top:none;vertical-align:top;width:20%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-3TJaaOJDU1AMiOoJM-Vu2eVr0P6N-douyin-profile-scraper-logo.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/zen-studio/douyin-search-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Douyin&nbsp;Search</a></span><br>
<span style="color:#78716C;font-size:11px">Keyword + filters, 60+ fields</span>
</td>
<td style="padding:10px 12px;border:1px solid #E7E5E4;border-right:none;border-top:none;vertical-align:top;width:20%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-3TJaaOJDU1AMiOoJM-Vu2eVr0P6N-douyin-profile-scraper-logo.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/zen-studio/douyin-profile-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Douyin&nbsp;Profile</a></span><br>
<span style="color:#78716C;font-size:11px">Followers, posts & hashtags</span>
</td>
<td style="padding:10px 12px;border:1px solid #E7E5E4;border-right:none;border-top:none;vertical-align:top;width:20%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-3TJaaOJDU1AMiOoJM-Vu2eVr0P6N-douyin-profile-scraper-logo.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/zen-studio/douyin-video-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Douyin&nbsp;Video</a></span><br>
<span style="color:#78716C;font-size:11px">Metadata + MP4 downloads</span>
</td>
<td style="padding:10px 12px;border:1px solid #E7E5E4;border-top:none;vertical-align:top;width:20%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-3TJaaOJDU1AMiOoJM-Vu2eVr0P6N-douyin-profile-scraper-logo.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/zen-studio/douyin-comments-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Douyin&nbsp;Comments</a></span><br>
<span style="color:#78716C;font-size:11px">Comments & nested replies</span>
</td>
</tr>
</table>

#### Copy to your AI assistant

````

zen-studio/douyin-hot-search-scraper on Apify. Scrapes Douyin's (抖音) real-time trending topics across five boards: hot search, entertainment, social, seeding, and challenge. Call ApifyClient("TOKEN").actor("zen-studio/douyin-hot-search-scraper").call(run\_input={...}), then client.dataset(run\["defaultDatasetId"]).list\_items().items. Full spec: GET https://api.apify.com/v2/acts/zen-studio~douyin-hot-search-scraper/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Token: https://console.apify.com/account/integrations

````

### What you get

Up to ~50 trending topics per board, each with rank, hot value, view count, video count, cover image, badge, and when the topic started trending. Five boards to choose from, scraped live in seconds.

#### Boards

- **Hot Search (热点榜):** the main real-time trending list
- **Seeding (种草榜):** product / recommendation trends
- **Entertainment (娱乐榜):** celebrity and entertainment trends
- **Social (社会榜):** news and society trends
- **Challenge (挑战榜):** trending hashtag challenges

### How to Get Douyin Trending Topics

#### Basic — the main hot-search board

```json
{
  "boards": ["hotspot"],
  "maxResultsPerBoard": 50
}
````

#### Track news + society trends together

```json
{
  "boards": ["hotspot", "social"],
  "maxResultsPerBoard": 50
}
```

#### Every board in one run

```json
{
  "boards": ["hotspot", "seeding", "entertainment", "social", "challenge"],
  "maxResultsPerBoard": 50
}
```

### Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `boards` | string\[] | `["hotspot"]` | Which boards to scrape. Any of `hotspot` / `seeding` / `entertainment` / `social` / `challenge`. Pick one or several. |
| `maxResultsPerBoard` | integer | `50` | How many topics to return per board (1–60). Douyin makes ~50 available per board, so higher values simply return everything on the board. |

### What Data Can You Extract from Douyin Hot Search?

One row per trending topic. Each row carries **31 fields** covering ranking (`rank`, `position`, `maxRank`), engagement (`hotValue`, `viewCount`, `videoCount`, `discussVideoCount`), the cover image (`coverImageUrl` plus the full `wordCover` object with every mirror URL), the topic badge (`labelUrl`), timing (`eventTime`, `boardActiveTime`, `scrapedAt`), Douyin IDs (`sentenceId`, `groupId`), category codes (`wordType`, `label`, `sentenceTag`, `displayStyle`), and sparse passthroughs (`postAwemeInfo`, `wordSubBoard`, `topicInfo`, `roomCount`, `hotlistParam`).

#### Output Example

A real row, shown in full. Sparse fields come back as `null` so the shape stays consistent across every topic.

```json
{
  "type": "trending",
  "board": "hotspot",
  "listType": "board",
  "rank": 25,
  "position": 24,
  "maxRank": 24,
  "word": "你真的自由了",
  "hotValue": 8387467,
  "viewCount": 31839695,
  "videoCount": 10,
  "discussVideoCount": 1,
  "articleDetailCount": 0,
  "coverImageUrl": "https://p9-sign.douyinpic.com/tos-cn-i-0813/oED1ACAaQC1GYIEC7f9AAXjAzHfoogSmADAAFq~noop.jpeg?lk3s=bfd515bb&x-expires=1780362000&x-signature=Uu1Roin4sExdXHbenKbtgnljiUM%3D&from=3218412987",
  "wordCover": {
    "uri": "tos-cn-i-0813/oED1ACAaQC1GYIEC7f9AAXjAzHfoogSmADAAFq",
    "url_list": [
      "https://p9-sign.douyinpic.com/tos-cn-i-0813/oED1ACAaQC1GYIEC7f9AAXjAzHfoogSmADAAFq~noop.jpeg?lk3s=bfd515bb&x-expires=1780362000&x-signature=Uu1Roin4sExdXHbenKbtgnljiUM%3D&from=3218412987",
      "https://p26-sign.douyinpic.com/tos-cn-i-0813/oED1ACAaQC1GYIEC7f9AAXjAzHfoogSmADAAFq~noop.jpeg?lk3s=bfd515bb&x-expires=1780362000&x-signature=UHB%2FxFTiF0EJiun%2F4%2F%2F%2BHxVZLe8%3D&from=3218412987",
      "https://p3-sign.douyinpic.com/tos-cn-i-0813/oED1ACAaQC1GYIEC7f9AAXjAzHfoogSmADAAFq~noop.jpeg?lk3s=bfd515bb&x-expires=1780362000&x-signature=%2FZO5wkJPwrMBlqgQVf27CVc6DEI%3D&from=3218412987"
    ]
  },
  "labelUrl": "https://lf3-static.bytednsdoc.com/obj/eden-cn/vjl_avo_upfbvk/ljhwZthlaukjlkulzlp/hotspot_detail_page/9.png",
  "eventTime": "2026-06-01T13:46:28.000Z",
  "boardActiveTime": "2026-06-02 03:31:14",
  "sentenceId": "2520435",
  "groupId": "6655587063489893635",
  "wordType": 1,
  "label": 9,
  "sentenceTag": 1002,
  "displayStyle": 0,
  "canExtendDetail": false,
  "hotlistParam": { "version": 1 },
  "postAwemeInfo": {
    "music_id": "7097660854023260964",
    "most_used_music_id_map": {
      "1128": "7097660854023260964",
      "2329": "7097660854023260964",
      "8663": "7097660854023260964"
    }
  },
  "wordSubBoard": [3],
  "topicInfo": null,
  "roomCount": null,
  "isPinned": false,
  "scrapedAt": "2026-06-01T19:32:07.000Z"
}
```

### Advanced Usage

#### Daily trend tracking

Schedule a run once or twice a day and store each dataset. The `eventTime`, `hotValue`, and `maxRank` fields let you chart how a topic climbs and fades over time, and `boardActiveTime` tells you exactly when Douyin last refreshed the ranking.

#### Read Chinese trends in English

Feed `word` through a translation step to turn the trending phrases into English in your own pipeline — useful for newsrooms, trend reports, and social listening dashboards.

#### Pull the videos behind a trend

Take any `word` and pass it to the [Douyin Search Scraper](https://apify.com/zen-studio/douyin-search-scraper) to fetch the actual videos driving the topic, with full metadata, creator profiles, and engagement stats.

### Pricing — Pay Per Event (PPE)

**$7.99 per 1,000 results.** Each trending topic written to the dataset counts as one result. Cross-board duplicates are billed only once, and there is no charge for a board that fails to load.

| Event | Per call | Per 1,000 |
|-------|----------|-----------|
| `result` (one trending topic row) | $0.00799 | $7.99 |

#### Free tier

10 lifetime runs, limited to the first selected board (~50 topics per run). No credit card. Plenty to evaluate the data shape before upgrading for all five boards.

### FAQ

**How many topics are returned per board?**
Around 50 — that's how many Douyin publishes per board. Set `maxResultsPerBoard` lower to cap it, or up to 60 to take everything the board offers.

**How fresh is the data?**
Live — every board is fetched on demand at run time. The `boardActiveTime` field records exactly when Douyin last refreshed that ranking.

**Can I scrape all five boards in one run?**
Yes. List them in `boards` and each is fetched and returned in the same run. A topic that appears on more than one board is returned once and billed once.

**What's the difference between `rank`, `position`, and `maxRank`?**
`rank` is the topic's 1-based position within the board as returned in this run. `position` is the server-reported rank, and `maxRank` is the highest (best) rank the topic has reached during its run on the board.

**Why does the top row sometimes have no hot value or view count?**
The very first row is often Douyin's hand-pinned headline slot, flagged with `isPinned: true`. Douyin promotes it editorially rather than by engagement, so it carries no `hotValue` / `viewCount` / `videoCount` — those fields come back as `null`. Every other row is ranked by hot value and has full metrics. Filter on `isPinned: false` if you only want the algorithmically-ranked topics.

**Are the cover image URLs permanent?**
The cover and badge image URLs are signed and stay valid for roughly two weeks. If you need them long-term, download the bytes from `coverImageUrl` (or any URL in `wordCover.url_list`) into your own storage shortly after the run.

**Do I need a proxy or login?**
No. The boards are public and load from any region without an account. A proxy is optional and only needed if you want to egress from a specific country.

**Can I get the videos, profiles, or comments behind a topic?**
Not in this actor — it returns the trending boards only. Use the other actors in this collection (see the navigation table at the top) to pull videos, creator profiles, comments, or transcripts.

### More Zen Studio scrapers for Chinese platforms

**🎬 Short-video & social**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-3TJaaOJDU1AMiOoJM-Vu2eVr0P6N-douyin-profile-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Douyin 抖音**
  - [Douyin Search Scraper](https://apify.com/zen-studio/douyin-search-scraper)
  - [Douyin Profile Scraper](https://apify.com/zen-studio/douyin-profile-scraper)
  - [Douyin Video Scraper](https://apify.com/zen-studio/douyin-video-scraper)
  - [Douyin Comments Scraper](https://apify.com/zen-studio/douyin-comments-scraper)
  - [Douyin Transcripts Scraper](https://apify.com/zen-studio/douyin-transcripts-scraper)
  - [Douyin Creator Rankings Scraper](https://apify.com/zen-studio/douyin-xingtu-rankings-scraper)
  - [Douyin Live Recorder](https://apify.com/zen-studio/douyin-live-recorder)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-mHKEEgoDqr6btQQer-fUs5ZquIeN-xiaohongshu-search-scraper-logo-square.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **RedNote 小红书**
  - [RedNote User Profile Scraper](https://apify.com/zen-studio/rednote-user-profile-scraper)
  - [RedNote Search Scraper](https://apify.com/zen-studio/rednote-search-scraper)
  - [RedNote Comments Scraper](https://apify.com/zen-studio/rednote-comments-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-dexCSKEZtKS8hg4fT-lD4weyiYga-shigua-____-scraper-logo.jpg" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Xigua 西瓜视频**
  - [Xigua Video Search Scraper](https://apify.com/zen-studio/xigua-video-search-scraper)
  - [Xigua Video Detail Scraper](https://apify.com/zen-studio/xigua-video-detail-scraper)

**🛒 E-commerce**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-PsAKYWM55HG4AHXjK-ItywU7Bp0s-taobao-search-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Taobao 淘宝**
  - [Taobao Search Scraper](https://apify.com/zen-studio/taobao-search-scraper)
  - [Taobao Product Detail Scraper](https://apify.com/zen-studio/taobao-detail-scraper)
  - [Taobao Seller Products Scraper](https://apify.com/zen-studio/taobao-seller-products-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-uZy6tbKLKnSVtT4BN-emXnT123uR-jd-com-scraper-logo-square.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **JD.com 京东**
  - [JD.com Search Scraper](https://apify.com/zen-studio/jd-com-search-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-ghXSMZcW3GxsCrkiR-5hnvsKv4Yt-1688-wholesale-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **1688 阿里巴巴**
  - [1688 Wholesale Scraper](https://apify.com/zen-studio/1688-wholesale-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-5QcLc4BHaLMBUKYs3-f3CWQ60Row-goofish-search-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Goofish 闲鱼**
  - [Goofish (Xianyu) Search Scraper](https://apify.com/zen-studio/goofish-xianyu-search-scraper)
  - [Goofish (Xianyu) Seller Scraper](https://apify.com/zen-studio/goofish-xianyu-seller-scraper)

**🏠 Real estate & autos**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-1tAzNSf8Kz0v7Q2Lr-AINJ7FsZVU-anjuke-scraper-logo.jpg" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Anjuke 安居客**
  - [Anjuke For-Sale Listings Scraper](https://apify.com/zen-studio/anjuke-real-estate-scraper)
  - [Anjuke New-Home Scraper](https://apify.com/zen-studio/anjuke-new-home-scraper)
  - [Anjuke Rental Listings Scraper](https://apify.com/zen-studio/anjuke-rent-scraper)
  - [Anjuke Listing Detail Scraper](https://apify.com/zen-studio/anjuke-sale-detail-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-32OkWqsiUywoq2ci3-7JhFlW1qg3-58__-real-estate-scraper-logo.jpg" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **58.com 58同城**
  - [58.com Real Estate Scraper](https://apify.com/zen-studio/58-real-estate-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-ytaE4YpSmjXDmibPv-L1UMPHa2bO-che168-autohome-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Autohome 汽车之家**
  - [Autohome (Che168) Used-Car Scraper](https://apify.com/zen-studio/che168-car-scraper)

### Support

- **Bugs**: Issues tab
- **Features**: Issues tab

### Legal Compliance

Extracts publicly available data from Douyin (抖音). Users must comply with Douyin's terms of service and applicable data protection regulations (GDPR, CCPA).

***

*Structured Douyin trending boards — rank, hot value, view count, video count, cover image, and event time — one row per topic, in clean JSON.*

# Actor input Schema

## `boards` (type: `array`):

Choose which Douyin trending boards to pull. Each board returns up to ~50 live trending topics.<br><br>• <b>Hot Search (热点榜)</b> — the main real-time trending list<br>• <b>Seeding (种草榜)</b> — product and recommendation trends<br>• <b>Entertainment (娱乐榜)</b> — celebrity and entertainment trends<br>• <b>Social (社会榜)</b> — news and society trends<br>• <b>Challenge (挑战榜)</b> — trending hashtag challenges

## `maxResultsPerBoard` (type: `integer`):

Maximum number of trending topics to return per board. Douyin makes roughly 50 available per board, so higher values simply return everything currently on the board.

## Actor input object example

```json
{
  "boards": [
    "hotspot"
  ],
  "maxResultsPerBoard": 50
}
```

# Actor output Schema

## `trendingTopics` (type: `string`):

Link to the dataset containing all scraped Douyin trending topics.

# 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 = {
    "boards": [
        "hotspot"
    ],
    "maxResultsPerBoard": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("zen-studio/douyin-hot-search-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 = {
    "boards": ["hotspot"],
    "maxResultsPerBoard": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("zen-studio/douyin-hot-search-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "boards": [
    "hotspot"
  ],
  "maxResultsPerBoard": 50
}' |
apify call zen-studio/douyin-hot-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=zen-studio/douyin-hot-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Douyin Hot Search Scraper - Real-Time Trending Topics",
        "description": "Scrape Douyin (抖音) real-time trending topics across all 5 hot-search boards. Get rank, hot value, view count, video count, cover image, and event time for every topic. No login or setup needed. Export to JSON, CSV, or Excel.",
        "version": "0.0",
        "x-build-id": "tC8d2pcfNo0caOSol"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/zen-studio~douyin-hot-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-zen-studio-douyin-hot-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/zen-studio~douyin-hot-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-zen-studio-douyin-hot-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/zen-studio~douyin-hot-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-zen-studio-douyin-hot-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "boards": {
                        "title": "Trending boards",
                        "type": "array",
                        "description": "Choose which Douyin trending boards to pull. Each board returns up to ~50 live trending topics.<br><br>• <b>Hot Search (热点榜)</b> — the main real-time trending list<br>• <b>Seeding (种草榜)</b> — product and recommendation trends<br>• <b>Entertainment (娱乐榜)</b> — celebrity and entertainment trends<br>• <b>Social (社会榜)</b> — news and society trends<br>• <b>Challenge (挑战榜)</b> — trending hashtag challenges",
                        "items": {
                            "type": "string",
                            "enum": [
                                "hotspot",
                                "seeding",
                                "entertainment",
                                "social",
                                "challenge"
                            ],
                            "enumTitles": [
                                "Hot Search (热点榜)",
                                "Seeding / Recommendations (种草榜)",
                                "Entertainment (娱乐榜)",
                                "Social (社会榜)",
                                "Challenge (挑战榜)"
                            ]
                        },
                        "default": [
                            "hotspot"
                        ]
                    },
                    "maxResultsPerBoard": {
                        "title": "Max results per board",
                        "minimum": 1,
                        "maximum": 60,
                        "type": "integer",
                        "description": "Maximum number of trending topics to return per board. Douyin makes roughly 50 available per board, so higher values simply return everything currently on the board.",
                        "default": 50
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
