# China Trending Topics: Weibo, Douyin, Baidu Hot Search & More (`sinodata/china-trending-topics`) Actor

China hot search API, no login: real-time trending lists from Weibo (微博热搜), Douyin (抖音热榜), Baidu (百度热搜), Toutiao, Bilibili, Zhihu, Kuaishou, news sites and 20 boards in one dataset, with rank, heat and link. "Only new topics" mode for hourly trend alerts.

- **URL**: https://apify.com/sinodata/china-trending-topics.md
- **Developed by:** [SinoData](https://apify.com/sinodata) (community)
- **Categories:** News, Social media
- **Stats:** 8 total users, 7 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.45 / 1,000 trending topics

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

## China Trending Topics: Weibo, Douyin, Baidu, Zhihu & More

See what China is talking about **right now**, across its biggest platforms, in one dataset. This Actor collects the public hot search and trending lists of seven platforms in a few seconds, with no login and no browser:

| Platform | List | Topics |
|---|---|---|
| **Weibo** | 微博热搜 hot search | 50 |
| **Douyin** (Chinese TikTok) | 抖音热榜 hot search | 50 |
| **Baidu** | 百度热搜 hot search | ~50 |
| **Toutiao** | 今日头条热榜 hot board | 50 |
| **Bilibili** | B站热搜 hot search | 50 |
| **Zhihu** | 知乎热榜 hot list | 30 |
| **The Paper** | 澎湃热闻 hot news | 20 |

That's about **300 trending topics per run**, all in the same format.

**Optional lists** (only fetched when you pick them in **Platforms**):

| Platform | List | Topics |
|---|---|---|
| **Kuaishou** | 快手热榜 hot list | 50 |
| **Tencent News** | 腾讯新闻热点 | ~50 |
| **NetEase News** | 网易新闻热榜 | 100 |
| **Sina News** | 新浪热搜 | ~45 |
| **36Kr** | 36氪热榜 (tech and business) | ~18 |
| **Weibo entertainment** | 微博文娱榜 (shows, celebrities, films) | 50 |
| **Baidu movies** | 百度电影榜 | 10 |
| **Baidu TV series** | 百度电视剧榜 | 10 |
| **Baidu novels** | 百度小说榜 | 30 |
| **Baidu cars** | 百度汽车榜 | 30 |
| **Baidu games** | 百度游戏榜 | 30 |
| **Baidu memes** | 百度热梗榜 (internet slang and memes) | 30 |
| **Bilibili ranking** | B站排行榜 (top 100 videos, `heat` = views) | 100 |

Tencent News and NetEase News publish a ranked list without a heat score, so `heat` is empty for them; use `rank`. For 36Kr, `heat` is the article's read count.

### Use cases

- **Media monitoring and PR**: get an alert when your brand, product or industry trends in China.
- **Newsrooms and analysts**: track the Chinese news cycle hour by hour across platforms.
- **Marketing**: spot trending topics for timely content in the Chinese market.
- **Research**: build a time series of Chinese public attention by running this every hour with Apify **Schedules**.

### How to use

1. Pick the platforms you want (or leave the list empty for all of them).
2. Run it. A full run takes a few seconds.
3. For monitoring, add a **Schedule** (for example every hour) and connect an integration (Slack, email, Google Sheets, webhook).

#### Example input

```json
{
  "platforms": ["weibo", "douyin", "baidu", "zhihu"],
  "maxItemsPerPlatform": 20
}
```

### Only new topics (monitoring mode)

Turn on **Only new topics** and run the Actor on an hourly **Schedule**. Each run then returns only the topics that **newly appeared** on a list since the previous run, so you get a clean feed of what just started trending, and you pay only for those.

- The first run returns everything and sets the baseline.
- A topic that drops off a list and comes back after **Treat as new again after (hours)** (default 24) counts as new again.
- Runs that share a **Memory name** share one memory. Use a different name for each separate monitor.
- The memory is kept in a key-value store called `china-trending-topics-memory` in your own Apify account. Delete it to start over.

```json
{
  "platforms": ["weibo", "douyin", "baidu"],
  "onlyNew": true,
  "memoryName": "hourly-china-monitor"
}
```

### Output

One record per trending topic:

```json
{
  "type": "trend",
  "platform": "weibo",
  "rank": 1,
  "title": "为什么现在退房时酒店不查房了",
  "url": "https://s.weibo.com/weibo?q=%23...%23",
  "heat": 1326472,
  "heatText": "1326472",
  "label": "新",
  "category": "民生新闻",
  "description": null,
  "imageUrl": null,
  "capturedAt": "2026-10-03T08:16:20.144Z"
}
```

- `heat` is each platform's own popularity score, so compare ranks or trends *within* a platform, not heat values across platforms.
- `capturedAt` is the same for every record of one run, so each run is one snapshot.
- Some platforms add extra fields: Zhihu has `answerCount`, `followerCount` and an excerpt; Douyin has `videoCount`; The Paper has `publishedAt`, `tags` and `commentCount`; Baidu marks pinned entries with `pinned`.

### Pricing

**$0.0005 per trending topic** ($0.50 per 1,000). A full run of all seven platforms (about 300 topics) costs about $0.15. In **Only new topics** mode you pay only for what newly appeared: in our tests about 30 new topics showed up across all seven lists every 20 minutes, so an hourly run returns roughly 50 to 100 topics and costs about $0.03 to $0.05. Lower `maxItemsPerPlatform` or pick fewer platforms to spend less.

### Notes

- Only public lists that any logged-out visitor can see are collected.
- The lists are what each platform shows at the moment of the run; they change every few minutes.
- If a platform temporarily fails, the others are still saved and the log names the one that failed.

### Feedback

Want another platform (for example Xiaohongshu or Kuaishou) or a field that's missing? Open an issue on the Issues tab.

# Actor input Schema

## `platforms` (type: `array`):

Which trending lists to fetch. Leave empty for the seven main lists (Weibo, Douyin, Baidu, Toutiao, Bilibili, Zhihu, The Paper). All other lists (Kuaishou, news sites, 36Kr, Weibo entertainment, Baidu movie/TV/novel/car/game/meme boards, Bilibili video ranking) are only fetched when you pick them.

## `maxItemsPerPlatform` (type: `integer`):

How many topics to keep from each list (the lists themselves have 18 to 100 entries).

## `onlyNew` (type: `boolean`):

Return only topics that weren't on the list in earlier runs. Ideal with an hourly Schedule: you get (and pay for) just what newly entered each list. The first run returns everything and sets the baseline.

## `memoryName` (type: `string`):

Runs that share this name share one memory of seen topics. Use a different name for each separate monitor (for example one per Schedule).

## `rememberHours` (type: `integer`):

A topic that dropped off a list and comes back after this many hours counts as new again.

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

Not needed for normal use.

## Actor input object example

```json
{
  "platforms": [
    "weibo",
    "douyin",
    "baidu",
    "toutiao",
    "bilibili",
    "zhihu",
    "thepaper"
  ],
  "maxItemsPerPlatform": 50,
  "onlyNew": false,
  "memoryName": "default",
  "rememberHours": 24,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

No description

## `results` (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 = {
    "platforms": [
        "weibo",
        "douyin",
        "baidu",
        "toutiao",
        "bilibili",
        "zhihu",
        "thepaper"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("sinodata/china-trending-topics").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 = { "platforms": [
        "weibo",
        "douyin",
        "baidu",
        "toutiao",
        "bilibili",
        "zhihu",
        "thepaper",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("sinodata/china-trending-topics").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 '{
  "platforms": [
    "weibo",
    "douyin",
    "baidu",
    "toutiao",
    "bilibili",
    "zhihu",
    "thepaper"
  ]
}' |
apify call sinodata/china-trending-topics --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sinodata/china-trending-topics"
        }
    }
}
```

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/xR1qWM0jgeGzB5vI9/builds/E5LXmLZJ9UdgCRDJA/openapi.json
