# Weibo Scraper - Keyword Search, Hot Search & Comments (`piotrv1001/weibo-scraper`) Actor

Scrape Weibo (微博) without login: keyword search, the live hot-search board (热搜) with heat, hot-timeline posts, full posts by URL, post comments with replies, user profiles and users' latest posts, with hashtags, reposts and author follower counts.

- **URL**: https://apify.com/piotrv1001/weibo-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** Social media, Lead generation, Automation
- **Features:** Limited permissions
- **Stats:** 250 total users, 7 monthly users, 93.5% runs succeeded, 8 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

$5.00 / 1,000 posts

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: Keyword Search, Hot Search (微博热搜), Posts, Comments and Profiles

Export **Weibo (微博) data** without logging in. The **Weibo Scraper** searches Weibo posts by keyword, returns the live Weibo hot search list (微博热搜榜) with rank and heat, Weibo posts with likes, comments and shares, the latest posts of any account, post comments (微博评论) with their first replies, and user profiles with follower counts and verification. Use it as a practical Weibo API alternative for trend monitoring, brand and media research, and China social listening.

### 🎯 Use Cases

- **Search Weibo by keyword for brand monitoring**: run your brand, product or competitor names (华为, 特斯拉, iPhone) on a schedule and collect the top and latest posts that mention them, with engagement, hashtags and the author's follower count.
- **Track Weibo hot search (微博热搜) every hour**: save the full 热搜榜 with rank, heat and label, and build your own history of what China is talking about.
- **Monitor Weibo trending posts**: pull the posts Weibo is pushing in its hot feed, with engagement numbers, images, videos and the author's region.
- **Collect Weibo comments for sentiment analysis**: export comments on any post, newest first or hot first, with like counts, the commenter's province and follower count.
- **Benchmark brands, media and KOLs**: compare followers, post counts, verification and lifetime likes, comments and reposts across Weibo accounts.
- **Monitor accounts' new posts**: pull the latest posts of a list of brand, media or KOL accounts every few hours.
- **Archive specific Weibo posts**: paste post links and get the full text of long posts, images, video links and engagement at the time of the run.

### ✨ Features

- **Seven modes in one Actor**: keyword search, hot timeline, hot search board, post details, post comments, user profiles and user posts.
- **Keyword search without login**: about 70-80 posts per keyword (Weibo's top results plus the latest ones), with the author's follower count, following count and verification on every post.
- **Hot search with heat**: rank, keyword, heat score, label (热, 新…) and a ready search link for every topic, plus the pinned topics above the ranking. Paid placements are left out.
- **Full post text**: long posts are expanded to their full text in both the hot timeline and post details mode, not cut at the feed's ~140-character preview.
- **Comments with replies**: each comment carries its reply count and the first replies Weibo shows under it, at no extra charge.
- **Flexible user input**: profile links, custom links like `weibo.com/rmrb`, `weibo.com/n/{name}` links, numeric ids, plain screen names (人民日报) or even a post link (it resolves to the post's author).
- **Hashtags, reposts and ads flagged**: every post carries its hashtags (`topics`), the device it was posted from (`source`), an ISO date (`createdAtIso`), whether it is a repost (with the original post's link, author and text) and whether it is a promoted post (`isAd`).
- **No duplicates**: the hot timeline repeats posts between pages, and several keywords can find the same post, so each post is saved once; repeated users and comments are skipped too.
- **Numbers as numbers**: likes, comments, shares, heat and follower counts are integers, ready for sorting and charts.
- **No account needed**: no Weibo login, cookies or API key.

### 🛠️ How It Works

1. **Pick a mode**: keyword search, hot timeline, hot search, post details, post comments, user profiles or user posts.
2. **Add keywords, post links or users** if the mode needs them, and set a limit.
3. **Run the scraper** and download the results as JSON, CSV or Excel, or pull them through the Apify API.

### ⚙️ Input

| Field | Used by | What it does |
|---|---|---|
| **What to scrape** (`mode`) | all | `hotTimeline` (default), `hotSearch`, `search`, `postDetails`, `postComments`, `userProfiles` or `userPosts`. |
| **Keywords** (`keywords`) | search | Keywords or phrases, in Chinese or English. About 70-80 posts per keyword. |
| **Post URLs** (`postUrls`) | postDetails, postComments | `weibo.com/{user}/{id}`, `m.weibo.cn/detail/{id}`, `m.weibo.cn/status/{id}` links or bare post ids. |
| **Users** (`users`) | userProfiles, userPosts | `weibo.com/u/{uid}` links, custom links like `weibo.com/rmrb`, `weibo.com/n/{name}` links, numeric ids or screen names (`人民日报`). |
| **Max comments per post** (`maxCommentsPerPost`) | postComments | Comments per post. Default `100`. |
| **Comment order** (`commentsSort`) | postComments | `newest` (default) reaches much deeper into a thread; `hot` returns Weibo's top comments first but stops near 300. |
| **Limit** (`limit`) | all | Maximum results in the whole run (posts, topics, comments or profiles). Default `100`. |

Posts about two brands:

```json
{
    "mode": "search",
    "keywords": ["华为", "特斯拉"],
    "limit": 200
}
```

Latest posts of media accounts:

```json
{
    "mode": "userPosts",
    "users": ["人民日报", "https://weibo.com/u/2803301701"]
}
```

Comments on one post:

```json
{
    "mode": "postComments",
    "postUrls": ["https://weibo.com/1763990660/RjANMzWLc"],
    "maxCommentsPerPost": 500,
    "limit": 500
}
```

Profiles of media accounts:

```json
{
    "mode": "userProfiles",
    "users": ["https://weibo.com/u/2803301701", "新浪新闻", "https://weibo.com/rmrb"]
}
```

### 💰 Pricing

Pay only for the results you get. No monthly rental. Every row in the dataset (a post, a hot search topic, a comment or a profile) counts as one result.

| Event | Price | What you get |
|---|---|---|
| **Result** | $0.005 per result ($5.00 per 1,000) | One post, hot search topic, comment or profile with all its fields |

Replies attached to a comment are part of that comment's row and are not charged separately.

Examples:

- The full hot search board (about 50 ranked topics plus the pinned ones) = about $0.26 per snapshot.
- 100 hot timeline posts = $0.50.
- One keyword search (about 75 posts) = about $0.38.
- The latest posts of 10 accounts (about 100 posts) = about $0.50.
- 500 comments on one post = $2.50.
- 20 user profiles = $0.10.

### 📊 Sample Output: Weibo Posts and Hot Search

A post from keyword search (same shape in the hot timeline, post details and user posts modes; `keyword` only in search, the author's `followersCount`, `followingCount` and `verifiedReason` only in search and user posts):

```json
{
    "type": "post",
    "postId": "5359418364397589",
    "postUrl": "https://weibo.com/7914490013/RoVK4is0R",
    "author": {
        "id": "7914490013",
        "name": "圈内人X_m",
        "profileImage": "https://tvax4.sinaimg.cn/crop.0.0.1080.1080.1024/008DCooJly8ii7nakpx6zj30u00u0jwp.jpg?…",
        "profileUrl": "https://weibo.com/u/7914490013",
        "verified": true,
        "followersCount": 14000,
        "followingCount": 416,
        "verifiedReason": "汽车博主"
    },
    "createdAt": "Thu Oct 29 18:06:14 +0800 2026",
    "createdAtIso": "2026-10-29T10:06:14.000Z",
    "text": "一位华为制造与大企业军团高管反问了一个问题:\"有药企说干实验需要4周，目标是先缩短到1周。我反过来问，为什么不是一天呢?…",
    "likes": 9898,
    "comments": 1861,
    "shares": 258,
    "sharesIsCapped": false,
    "images": ["https://wx3.sinaimg.cn/large/008DCooJly1iijds2i89oj30u018p783.jpg"],
    "videos": [],
    "location": "山东",
    "source": "iPhone 17 Pro Max(星宇橙色)",
    "topics": ["华为制药军团不做药"],
    "isAd": false,
    "isRepost": false,
    "repostOf": null,
    "keyword": "华为"
}
```

A hot search topic:

```json
{
    "type": "hotSearch",
    "rank": 2,
    "pinned": false,
    "keyword": "拾荒老人不知自己每月养老金3700元",
    "heat": 1698630,
    "label": "热",
    "searchUrl": "https://s.weibo.com/weibo?q=%E6%8B%BE%E8%8D%92…"
}
```

Every row has a `type` field: `post`, `hotSearch`, `comment` or `profile`. `location` is the province or country Weibo shows next to a post or comment (发布于 / 来自), and is `null` when the author hides it; most government and media accounts do. In hot search rows, pinned topics have `pinned: true`, no rank or heat, and a `postUrl` linking the post behind the topic. Weibo stops counting reposts at 1,000,000 (it shows "100万+"), so `shares` is 1,000,000 with `sharesIsCapped: true` on those posts. On a repost, `isRepost` is `true` and `repostOf` holds the original post's `postId`, `postUrl`, `authorName` and `text`. Follower counts that Weibo shows rounded ("1.4万") come out as numbers (14000).

Comment rows carry `postId`, `postUrl`, `commentId`, `text`, `createdAt`, `createdAtIso`, `likes`, `location`, `replyCount`, the commenter (`id`, `name`, `profileUrl`, `verified`, `followersCount`) and a `replies` array with the same fields. Profile rows carry `userId`, `screenName`, `profileUrl`, `avatar`, `description`, `location`, `gender`, `verified`, `verifiedType`, `verifiedReason`, `followersCount`, `followingCount`, `postsCount`, `totalInteractions`, `totalLikes`, `totalComments`, `totalReposts`, `registeredAt`, `company`, `education` and `credit` (the Weibo sunshine credit level, 阳光信用).

### 🔁 Track Weibo Trending: Schedule and Integrate

Weibo hot search changes by the minute, so for trend tracking run hot search mode **every hour** (or every 15 minutes for breaking news): each run is a timestamped snapshot of the 热搜榜, and together they show when a topic entered, peaked and dropped. For brand or KOL benchmarks, a **daily** or **weekly** profile run is enough. Set it up in Apify **Schedules**, then send the results to **Google Sheets**, **Zapier**, **Make**, **n8n** or a webhook with Apify **integrations**.

### 🤖 Use with AI Agents (MCP)

This Actor works as a tool in Claude, ChatGPT, Cursor and other MCP clients through the Apify MCP server (`https://mcp.apify.com`). An agent can fetch today's Weibo trending topics with:

```json
{ "mode": "hotSearch" }
```

### ❓ FAQ

**Does Weibo have an official API?** Weibo runs an open platform for developers, which needs a registered app and user authorization before you can call it, and access to many endpoints is restricted. This Actor needs no app, key or Weibo account: you get the public hot search board, posts, comments and profiles as clean JSON from one input form, and long posts are expanded to their full text.

**How do I track Weibo hot search (微博热搜) history?** Weibo shows only the current board. Schedule this Actor in hot search mode every hour and keep each run's dataset (or append them to a Google Sheet). The `rank` and `heat` fields across runs give you each topic's rise and fall.

**Do I need a Weibo account or Chinese phone number?** No. The Actor works logged out, so it covers what Weibo shows to visitors, keyword search included.

**Can it search Weibo by keyword?** Yes, without login. Each keyword returns about 70-80 posts (79 for 华为 and 61 for Tesla in our test): Weibo's top results plus the most recent ones, collected from every search tab Weibo shows logged-out visitors. Deeper paging and custom date ranges in Weibo search need a logged-in account, so for ongoing monitoring schedule the search every few hours; repeated runs pick up the newest posts.

**Can it scrape a user's posts?** User posts mode returns each account's latest ~10 posts (pinned posts included), which is the first page of the timeline Weibo shows logged-out visitors. A user's full post history needs a logged-in account, so this Actor does not offer it; schedule the run to keep up with new posts.

**How many Weibo comments can I get per post?** Weibo shows logged-out visitors only part of a thread, so expect most but not all comments. In our tests: 182 of 217 on a small thread and 1,000+ on a post with 139k comments. Newest-first order goes deepest; hot order stops near 300. Some authors switch on comment curation (评论精选): then only the comments they pick are public, and the run log says so.

**Why is a field empty or missing?** The author's follower count, following count and verification text come with posts in search and user posts modes; hot timeline and post details posts don't carry them, so run user profiles mode for those authors. `location` is `null` when the author hides it, and `company` and `education` when the profile does not list them.

**What does the run status tell me?** Every run ends with a status such as `Saved 400 comments.`, plus a note when the run stopped at your max charge limit, stopped before its timeout, could not scrape some inputs, or when Weibo showed logged-out visitors only part of a comment thread.

### 🔗 Related Scrapers

- [Xiaohongshu (RedNote) Video Transcript Scraper](https://apify.com/piotrv1001/xiaohongshu-rednote-video-transcript-scraper): trending Xiaohongshu videos as text, the other big Chinese social platform next to Weibo.
- [VK Posts Scraper](https://apify.com/piotrv1001/vk-posts-scraper): public wall posts with likes and reposts from VK, for Russian-language social monitoring.
- [Threads Posts Scraper](https://apify.com/piotrv1001/threads-posts-scraper): posts, replies and profiles from Threads, to compare the same brands outside China.
- [Telegram Channel Scraper](https://apify.com/piotrv1001/telegram-channel-scraper): posts and views from public Telegram channels, for news and media monitoring.
- [Reddit Posts Scraper](https://apify.com/piotrv1001/reddit-posts-scraper): posts and comment threads from Reddit, for Western social listening alongside Weibo.

# Actor input Schema

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

hotTimeline: posts from Weibo's hot feed. hotSearch: the live 热搜 hot-search board with heat. search: posts matching the keywords below (about 70-80 top and latest posts per keyword). postDetails: full posts from the URLs below. postComments: comments (with first replies) on the posts below. userProfiles: follower counts, verification, registration date and totals for the users below. userPosts: the latest ~10 posts of each user below.

## `keywords` (type: `array`):

For search. One keyword or phrase per entry, in Chinese or English (e.g. 华为, 特斯拉, iPhone). Each keyword returns about 70-80 posts: Weibo's top results plus the latest ones, from one page per search tab, which is what logged-out visitors can see.

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

For postDetails and postComments. Accepts weibo.com/{user}/{id}, m.weibo.cn/detail/{id}, m.weibo.cn/status/{id} links or bare post ids.

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

For userProfiles and userPosts. Accepts weibo.com/u/{uid} links, numeric user ids, weibo.com/n/{name} links or screen names (e.g. 人民日报). userPosts returns each user's latest ~10 posts (the first page of the timeline Weibo shows logged-out visitors).

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

For postComments. Newest-first order reaches whole threads of several hundred comments; the largest posts (100k+ comments) are cut off by Weibo for logged-out visitors.

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

For postComments. newest reaches much deeper into a thread; hot returns Weibo's top comments first but stops near 300.

## `limit` (type: `integer`):

Maximum number of results in the whole run (posts, topics, comments or profiles).

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

Required. Weibo does not respond to Apify's shared platform IPs, so the Actor cannot run without a proxy. The default datacenter proxy works; switch to Residential only if you start seeing blocks.

## Actor input object example

```json
{
  "mode": "hotTimeline",
  "maxCommentsPerPost": 100,
  "commentsSort": "newest",
  "limit": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `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 = {
    "mode": "hotTimeline",
    "limit": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/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": "hotTimeline",
    "limit": 100,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/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": "hotTimeline",
  "limit": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call piotrv1001/weibo-scraper --silent --output-dataset

```

## MCP server setup

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