# Weibo Scraper – Hot Search, Trending Posts, Comments & Profiles (`openharvest/weibo-scraper`) Actor

Weibo scraper for public data, no login: realtime hot search (微博热搜), entertainment and topic boards, trending posts by channel, post details, comments with replies, user video/photo posts and public profile metadata. Pay per result.

- **URL**: https://apify.com/openharvest/weibo-scraper.md
- **Developed by:** [Enes Bulanık](https://apify.com/openharvest) (community)
- **Categories:** Social media, News, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 hot search topics

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

## Weibo Scraper – Hot Search, Trending Posts, Comments & Profiles

Weibo scraper for public data, no login and no cookies: the realtime hot search list (微博热搜), entertainment and topic boards, trending posts (热门微博) by channel, post details, comments with replies, user video and photo posts, and public profile metadata. Use it instead of a general web crawler when you need clean Weibo JSON from many sources in one Actor, priced from **$1 per 1,000 hot search topics** and **$3 per 1,000 posts**.

### What data do you get?

- 🔥 **Hot search (热搜榜)**: the realtime board (~50 topics plus the pinned topic) with rank, heat value (热度), badge (新 / 热 / 沸 / 爆), category and the time each topic entered the board. Also the **entertainment board (文娱榜)** and the **hot topics board (话题榜)** with read counts and summaries.
- 📈 **Trending posts (热门微博)**: the hot feed or one of 30+ channels (society, finance, stocks, tech, cars, celebrities, movies, games, sports, beauty, food…).
- 📝 **Posts**: full text (long posts 长微博 expanded), creation and edit time, posting client, region shown on the post, reposts, comments, likes, pictures (full size), video URL, cover, duration and plays, #topics#, @mentions and the reposted original.
- 💬 **Comments**: hot or newest comments with likes, reply count, floor and author name, plus the **replies (楼中楼)** under each comment.
- 👤 **Profiles**: screen name, followers, following, post count, verification and reason, lifetime reposts / comments / likes, member rank, company, school, registration date and Weibo's public labels.
- 🎬 **User posts**: a user's recent **video** posts and **photo** posts (newest first).

All items are flat JSON with consistent field names. Export as JSON, CSV, Excel, XML or HTML, or use the Apify API.

### Use cases

- **China trend monitoring**: save the hot search board every hour and see what China talks about, with heat and time on board.
- **Brand and campaign tracking**: collect a campaign post with its comments and replies, or a brand account's videos and their engagement.
- **KOL research**: compare followers, verification and lifetime interactions of Weibo creators.
- **Sentiment and NLP**: comments and replies are a large Chinese-language reaction dataset for sentiment analysis and LLM evaluation.
- **News and finance desks**: watch the society, finance or stocks channels for breaking stories.

### How to use

1. Pick **What to scrape**: Hot search, Trending posts, Specific posts, User posts or Public profiles.
2. Fill in post links or users if the mode needs them.
3. Switch on **Include comments** (and **Include replies**) if you want them.
4. Click **Start**. The default input (`{}` = the realtime hot search board) finishes in about 5–10 seconds.

### Input example

```json
{
    "mode": "trendingPosts",
    "trendingChannel": "tech",
    "maxItems": 10,
    "includeComments": true,
    "maxCommentsPerPost": 10,
    "includeReplies": true
}
```

| Field | Type | Description |
|---|---|---|
| `mode` | enum | `hotSearch` (default), `trendingPosts`, `posts`, `userPosts`, `profiles` |
| `hotSearchBoard` | enum | `realtime` (default), `entertainment`, `topics` |
| `trendingChannel` | enum | `hot` (default), `realtime`, `society`, `finance`, `stocks`, `tech`, `cars`, `celebrities`, `games`, `sports`… |
| `postUrls` | array | `https://weibo.com/<uid>/<code>`, `https://m.weibo.cn/detail/<mid>`, a mid or a post code |
| `users` | array | `https://weibo.com/u/<uid>`, `https://weibo.com/n/<name>`, a numeric uid or a screen name |
| `userPostsType` | enum | `videos` (default), `photos`, `all` |
| `maxItems` | integer | Max hot topics / trending posts. Default `50` |
| `maxPostsPerUser` | integer | Default `20` |
| `includeProfile` | boolean | Profile row in `userPosts` mode. Default `true` |
| `includeComments` / `maxCommentsPerPost` | boolean / integer | Comments per post (default 20) |
| `includeReplies` | boolean | Also load replies to comments (counted in the per-post limit) |
| `commentsSort` | enum | `hot` (default) or `time` |
| `fetchLongText` | boolean | Expand truncated long posts (free). Default `true` |
| `proxyConfiguration` | object | Optional proxy (see FAQ) |

### Output sample

Real items from runs on 2026-10-08 (shortened):

```json
{
    "type": "hotSearch",
    "board": "realtime",
    "rank": 1,
    "isPinned": false,
    "word": "肺鼠疫可飞沫传播",
    "hotValue": 1156197,
    "label": "新",
    "category": "健康医疗,海外新闻",
    "isNew": true,
    "isTopic": true,
    "onboardAt": "2026-10-08T14:50:22.000Z",
    "url": "https://s.weibo.com/weibo?q=%23%E8%82%BA%E9%BC%A0%E7%96%AB%E5%8F%AF%E9%A3%9E%E6%B2%AB%E4%BC%A0%E6%92%AD%23"
}
```

```json
{
    "type": "post",
    "source": "trending:hot",
    "rank": 1,
    "postId": "5351726307608462",
    "mblogId": "RlHDwvVj8",
    "url": "https://weibo.com/2803301701/RlHDwvVj8",
    "text": "【创历史新高！#国庆假期日均超3亿人次跨区域流动#】#假期超21亿人次跨区域流动# 记者10月8日从交通运输部获悉：2026年10月1日—7日，累计全社会跨区域人员流动量21.42亿人次…",
    "isLongText": true,
    "isTextTruncated": false,
    "createdAt": "2026-10-08T04:40:45.000Z",
    "client": "微博网页版",
    "authorId": "2803301701",
    "authorName": "人民日报",
    "authorVerified": true,
    "reposts": 193,
    "comments": 244,
    "likes": 739,
    "countsCapped": false,
    "pictures": ["https://wx2.sinaimg.cn/large/0033ImPzly1ihuudrsldgj60ob0obgr902.jpg"],
    "hasVideo": false,
    "topics": ["国庆假期日均超3亿人次跨区域流动", "假期超21亿人次跨区域流动"],
    "isRepost": false
}
```

```json
{
    "type": "comment",
    "postId": "5351726307608462",
    "postUrl": "https://weibo.com/2803301701/RlHDwvVj8",
    "commentId": "5351761239605592",
    "parentCommentId": null,
    "isReply": false,
    "text": "中国人卷完了7天的出行，今天又开始卷工作了",
    "createdAt": "2026-10-08T06:59:32.000Z",
    "likes": 92,
    "replies": 0,
    "floor": 174,
    "authorName": "piggyprince小猪王子3"
}
```

```json
{
    "type": "profile",
    "userId": "1669879400",
    "screenName": "Dear-迪丽热巴",
    "url": "https://weibo.com/u/1669879400",
    "verified": true,
    "verifiedReason": "嘉行传媒签约演员",
    "followers": 82550821,
    "following": 294,
    "posts": 1936,
    "totalInteractions": 6193214534,
    "company": "嘉行传媒",
    "registeredAt": "2010-07-02T05:19:58.000Z",
    "labels": ["演员影响力指数 5043万", "V指数 文娱 93.44分"]
}
```

Error rows are free. They have `type: "error"` and an `errorCode` of `INVALID_INPUT`, `NOT_FOUND`, `NO_RESULTS`, `LOGIN_REQUIRED`, `BLOCKED` or `SCRAPE_FAILED`. The dataset has four views: **Hot search**, **Posts**, **Comments** and **Profiles & errors**.

### Pricing

Pay per event. You pay only for results, and error rows are free.

| Event | Price | Per 1,000 |
|---|---|---|
| `hot-topic`: one hot search / topic board row | $0.001 | $1.00 |
| `post`: one post | $0.003 | $3.00 |
| `comment`: one comment or reply | $0.0015 | $1.50 |
| `profile`: one public profile | $0.003 | $3.00 |

Examples: the full realtime hot search board (50 topics) costs **$0.05**. 10 trending posts with 10 comments each (the input example above) cost $0.03 + $0.15 = **$0.18**. Set *Max cost per run* in the run options. The Actor stops cleanly at your budget and never pushes unpaid items.

### Use with AI agents (MCP)

The Actor works as a tool in Apify's MCP server, so Claude, Cursor and other MCP clients can call it. Add the Actor in your MCP client by its Store name and send input like:

```json
{
    "mode": "hotSearch",
    "hotSearchBoard": "realtime",
    "maxItems": 20
}
```

The agent gets back rows with `rank`, `word`, `hotValue`, `label`, `category` and `url`. To read what people say about a topic, follow up with `"mode": "posts"` and the `leadPostUrl`, with `includeComments: true`. Keep `maxItems` and `maxCommentsPerPost` small in agent loops.

### FAQ

**Do I need a Weibo account or cookies?**
No. The Actor uses the anonymous visitor session that weibo.com gives every logged-out browser. You never share an account.

**Can it search Weibo by keyword?**
No. Weibo shows keyword search (s.weibo.com), full user timelines and repost lists only to logged-in users, and this Actor does not log in. Use the hot search boards, the trending channels, post links and user video/photo feeds instead. The `url` of each hot search row opens Weibo's search page for that topic in your browser.

**Why do some posts show exactly 1,000,000 reposts or comments?**
Weibo shows "100万+" for counts of one million or more and sends the number 1,000,000. Such rows have `countsCapped: true`. Likes are usually exact.

**Why only video and photo posts for users?**
Weibo's logged-out profile view shows the user's video feed and photo wall. Text-only posts and reposts are login-only. Choose `userPostsType: "all"` to merge both feeds, newest first.

**How many comments can I get?**
Hundreds per post. The Actor pages through the comment list (hot or newest) and, with `includeReplies`, through the replies under each comment, up to `maxCommentsPerPost`.

**Is personal data exported?**
Only what is needed: the public author name of each post and comment. E-mail addresses and phone numbers in bios and texts are replaced with `[email removed]` / `[phone removed]`. Commenter ids, commenter IP regions, gender and the "IP属地" of profiles are not exported.

**I see `BLOCKED` error rows.**
Weibo occasionally refuses the anonymous visitor session from a datacenter IP. The Actor retries automatically. If it keeps happening, enable **Proxy configuration → Apify Proxy**.

### Is it legal to scrape Weibo?

This Actor extracts only public data that Weibo shows to any logged-out visitor. It does not log in, bypass paywalls or collect contact details. Weibo's terms of service restrict automated access, and posts can be copyrighted, so make sure your use complies with applicable laws (for example GDPR and China's PIPL) and with Weibo's terms. Do not use the data for spam, harassment or profiling of private individuals. If you are unsure, consult a lawyer.

### Related actors

Related actors by the same developer:

- Bilibili Scraper – Videos, Search, Rankings, Comments & Danmaku
- Douban Scraper – Movies, Books, Ratings, Comments & Reviews
- Telegram Channel Scraper – Posts, Messages & Views, No Login
- Bluesky Scraper – Posts, Search, Profiles & Followers
- Google Trends Scraper – Interest Over Time & Related Queries

### Support & feedback

Missing a field or mode? Open an issue in the **Issues** tab. Feature requests are welcome.

# Actor input Schema

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

<b>hotSearch</b> = Weibo hot search list (微博热搜) with rank and heat. <b>trendingPosts</b> = trending posts (热门微博) of a channel. <b>posts</b> = specific posts from links. <b>userPosts</b> = recent video or photo posts of users (plus their profile). <b>profiles</b> = public profile metadata only.

## `hotSearchBoard` (type: `string`):

Used by <b>hotSearch</b>. <b>realtime</b> = main hot search list (~50 topics + pinned topic), <b>entertainment</b> = 文娱榜, <b>topics</b> = hot topics board (话题榜) with read counts.

## `trendingChannel` (type: `string`):

Used by <b>trendingPosts</b>. The channel of weibo.com/hot/weibo to read.

## `postUrls` (type: `array`):

Used by <b>posts</b>. Accepts <code>https://weibo.com/1669879400/RhKiVkunf</code>, <code>https://m.weibo.cn/detail/5342295734883321</code>, a numeric post id (mid) or a 9-character post code (mblogid).

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

Used by <b>userPosts</b> and <b>profiles</b>. Accepts <code>https://weibo.com/u/1669879400</code>, <code>https://weibo.com/n/人民日报</code>, a numeric user id, or a screen name such as <code>人民日报</code>.

## `userPostsType` (type: `string`):

Used by <b>userPosts</b>. Weibo's logged-out view exposes a user's <b>video</b> feed and <b>photo</b> wall (text-only posts are login-only). <b>all</b> merges both, newest first.

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

Used by <b>hotSearch</b> and <b>trendingPosts</b>: maximum number of rows (the realtime board has ~50 topics).

## `maxPostsPerUser` (type: `integer`):

Used by <b>userPosts</b>.

## `includeProfile` (type: `boolean`):

In <b>userPosts</b> mode, also output one profile row per user (followers, verification, totals).

## `includeComments` (type: `boolean`):

Also scrape comments of every post (trendingPosts, posts and userPosts modes).

## `maxCommentsPerPost` (type: `integer`):

Maximum comments (including replies, if enabled) per post.

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

Also load the replies (楼中楼) under each comment. They count towards the per-post comment limit.

## `commentsSort` (type: `string`):

<b>hot</b> = most liked first (按热度), <b>time</b> = newest first (按时间).

## `fetchLongText` (type: `boolean`):

Weibo truncates long posts (长微博) in lists. When enabled, the full text is loaded (one extra free request per long post).

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

Usually not needed. Enable Apify Proxy if Weibo starts blocking requests.

## Actor input object example

```json
{
  "mode": "trendingPosts",
  "hotSearchBoard": "realtime",
  "trendingChannel": "tech",
  "postUrls": [
    "https://weibo.com/1669879400/RhKiVkunf"
  ],
  "users": [
    "https://weibo.com/u/1669879400",
    "人民日报"
  ],
  "userPostsType": "all",
  "maxItems": 50,
  "maxPostsPerUser": 20,
  "includeProfile": true,
  "includeComments": true,
  "maxCommentsPerPost": 50,
  "includeReplies": true,
  "commentsSort": "hot",
  "fetchLongText": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

All scraped items in the default dataset (JSON, CSV, Excel and more via the dataset export).

## `files` (type: `string`):

Records saved in the default key-value store, e.g. the run summary.

# 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 = {
    "mode": "hotSearch",
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("openharvest/weibo-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 = {
    "mode": "hotSearch",
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("openharvest/weibo-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 '{
  "mode": "hotSearch",
  "maxItems": 50
}' |
apify call openharvest/weibo-scraper --silent --output-dataset

```

## MCP server setup

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