# Douyin Hot Search Scraper API - Trending Topics (`dami_studio/douyin-hot-search-scraper`) Actor

Scrape Douyin (抖音) hot-search boards without a login: rank, topic, hot value, view count, video count, live rooms, badge, start time and cover image. Hot, entertainment, society and rising boards. $0.40 per 1,000 topics - the lowest price of any Douyin hot-search scraper on the Apify Store.

- **URL**: https://apify.com/dami\_studio/douyin-hot-search-scraper.md
- **Developed by:** [Dami's Studio](https://apify.com/dami_studio) (community)
- **Categories:** Social media, News, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 API — Trending Topics

Reads the live hot-search boards on [Douyin](https://www.douyin.com) (抖音, the Chinese TikTok) and returns one row per trending topic: its rank, the topic text, Douyin's own hot value and view count, how many videos and live rooms are attached to it, the badge Douyin puts next to it, when the topic started, and the cover image.

No Douyin account, no cookie, no signature. The boards are public and this actor reads them directly.

**$0.40 per 1,000 topics** ($0.0004 each), plus $0.001 each time a run starts — the lowest per-topic price of any Douyin hot-search scraper on the Apify Store with an active user base; the next cheapest, `bovi/douyin-scraper` (16 monthly users), is $0.465 per 1,000 even on its cheapest volume tier, and the dedicated `zen-studio/douyin-hot-search-scraper` (194 monthly users) is $5.99 plus a $0.05 start fee.

### Boards

| Board | What it is | Rows |
|---|---|---|
| `hot` | 抖音热榜 — the main hot list you see on douyin.com/hot | ~51 |
| `entertainment` | 娱乐榜 — film, TV, music, celebrities | ~50 |
| `society` | 社会榜 — news, economy, public affairs | ~50 |
| `rising` | 实时上升热点 — the real-time rising strip | 5 |

`rising` is carried inside the hot list's own response, so selecting both costs one request, not two.

### What a row looks like

Real output from a run on 2026-08-07:

```json
{
  "board": "society",
  "boardName": "Society board (社会榜)",
  "rank": 3,
  "isPinned": false,
  "word": "“新疆阿勒泰八月能滑雪”不实",
  "hotValue": 8042653,
  "viewCount": 610881,
  "videoCount": 1,
  "discussionVideoCount": 1,
  "articleCount": 0,
  "liveRoomCount": 0,
  "peakRank": 14,
  "label": 16,
  "labelName": "Debunked (辟谣)",
  "labelImageUrl": "https://lf3-static.bytednsdoc.com/obj/eden-cn/.../hotspot_detail_page/16.png",
  "eventTime": "2026-08-07T11:15:54.000Z",
  "eventTimestamp": 1786101354,
  "sentenceId": "2601412",
  "groupId": "7669937843521768744",
  "coverUrl": "https://p3-sign.douyinpic.com/tos-cn-p-0015/...~noop.jpeg?x-expires=...",
  "coverUrls": ["...", "...", "..."],
  "searchUrl": "https://www.douyin.com/search/%E2%80%9C%E6%96%B0%E7%96%86...",
  "hotSpotUrl": "https://www.douyin.com/hot/2601412/%E2%80%9C%E6%96%B0%E7%96%86...",
  "boardActiveTime": "2026-08-08 06:04:45",
  "scrapedAt": "2026-08-07T22:05:33.412Z"
}
```

`hotValue` is Douyin's internal heat score — useful for ranking topics against each other in the same snapshot, not as an absolute. `viewCount` is the topic's total views. `peakRank` is the best rank the topic has held.

`labelName` is read off the badge art Douyin itself serves: New (新), Commercial (商), Hot (热), Exploding (爆), Premiere (首发), Exclusive (独家), Challenge (挑战), Debunked (辟谣), Widely discussed (热议). About a third of topics carry one; the rest have `label: 0` and `labelName: null`.

`isPinned` marks the promo/PSA row Douyin pins above rank 1 on the ranked boards. It has `rank: null` and no counts.

### Input

```json
{
  "boards": ["hot", "entertainment", "society", "rising"],
  "maxItems": 200
}
```

Leave the input empty and you get the hot list (~51 topics). Clear the board list entirely and you get one labelled sample row and no charges for topics.

### Measured numbers

From real runs on the Apify platform, 2026-08-07:

| Run | Rows | Wall time | What you pay |
|---|---|---|---|
| `rising` only | 5 | 2.6 s | $0.0030 |
| `hot` only | 51 | 6.7 s | $0.0214 |
| all four boards | 156 | 14.0 s | $0.0634 |

(The "what you pay" column is the $0.001 start fee plus $0.0004 per topic returned.)

156 topics is the practical ceiling — that is every topic Douyin publishes across all four boards at one moment. Set `maxItems` lower if you only want the top of a board.

### Topics move fast

The boards refresh every few minutes. `boardActiveTime` is Douyin's own timestamp for the snapshot (Beijing time) and `eventTime` is when the topic first appeared. Two runs ten minutes apart will differ in ranks and hot values. If you want a time series, run it on a schedule and keep the snapshots.

### What this does not do

- **No keyword search.** Douyin's search endpoint requires a logged-in account — it answers `status_code: 2483` / 请先登录 to anonymous callers. This actor covers the hot-search boards only. If you need arbitrary keyword search, you need an actor that ships Douyin credentials.
- **No videos per topic.** Douyin does not expose the videos behind a hot topic without an account. The one endpoint that answers anonymously (`aweme/related`) returns the generic recommendation feed, not the topic's videos, so it is not shipped — it would be a fake column. `videoCount` tells you how many videos Douyin counts under the topic; the list itself is not available.
- **No translation.** `word` is the topic exactly as Douyin publishes it, in Chinese.
- **Cover URLs expire.** `coverUrl` is a signed CDN link with roughly a day of life. Download the image if you need to keep it.
- **No live-room contents.** `liveRoomCount` is a count only.

### FAQ

**What is the Douyin hot search list?**
It is Douyin's trending board — the ranked list of topics people in China are searching for and posting about right now, published at douyin.com/hot. It refreshes every few minutes.

**Do I need a Douyin account or cookies?**
No. The hot-search boards are public. This actor reads them without any login, cookie or request signature.

**Can this scrape Douyin by keyword?**
No. Douyin's keyword search requires an account and returns `status_code: 2483` to anonymous requests. This actor covers the hot-search boards. Nothing about it is search-by-keyword.

**How much does it cost?**
$0.001 to start a run, then $0.0004 per topic — $0.40 per 1,000. A full four-board run returns 156 topics for about $0.063.

**How many topics do I get per run?**
About 51 from the hot list, 50 each from entertainment and society, 5 from the rising strip. 156 in total. Douyin does not publish more than that.

**Is the output in Chinese?**
The topic text is, because that is what Douyin publishes. Every other field — rank, counts, timestamps, badge names, URLs — is numeric or English.

**How do I track a topic over time?**
`sentenceId` is stable for a topic across runs. Schedule the actor, keep every snapshot, and join on `sentenceId`.

**What does hotValue mean?**
It is Douyin's heat score for the topic. Compare it between topics in the same snapshot. It is not a view count — `viewCount` is.

**Is it legal?**
It reads a public page that anyone can open in a browser, without logging in or evading any access control. Check your own jurisdiction and Douyin's terms before you build on it.

**What happens if Douyin blocks a run?**
You get an uncharged diagnostic row explaining what happened. You are only charged for topics that actually come back.

### Output fields

`board`, `boardName`, `rank`, `isPinned`, `word`, `hotValue`, `viewCount`, `videoCount`, `discussionVideoCount`, `articleCount`, `liveRoomCount`, `peakRank`, `label`, `labelName`, `labelImageUrl`, `eventTime`, `eventTimestamp`, `sentenceId`, `groupId`, `coverUrl`, `coverUrls`, `searchUrl`, `hotSpotUrl`, `boardActiveTime`, `scrapedAt`.

# Actor input Schema

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

Which Douyin hot-search boards to read. "Hot list" is the main 抖音热榜 (about 50 topics). "Rising hotspots" is the 5-topic 实时上升热点 strip and comes free with the hot list. Each board is a separate ranking of roughly 50 topics.

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

Hard cap on rows returned across all selected boards (1-1000). You are charged per topic returned. One board is about 50 topics, so all four is about 155.

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

Optional. The actor already uses its own egress and reaches Douyin without a proxy of yours; leave this alone unless you need to exit from a specific network.

## Actor input object example

```json
{
  "boards": [
    "hot"
  ],
  "maxItems": 200,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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": [
        "hot"
    ],
    "maxItems": 200,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("dami_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": ["hot"],
    "maxItems": 200,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("dami_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(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 '{
  "boards": [
    "hot"
  ],
  "maxItems": 200,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call dami_studio/douyin-hot-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/douyin-hot-search-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/NcnLblZ0zsJE4rTjg/builds/9mervOt0XuK0uwsGZ/openapi.json
