# Weibo Scraper API: Posts, Hot Search, Comments & Profiles (`sauliusautomatesit/weibo-scraper-api`) Actor

Scrape Sina Weibo (微博): hot search list (热搜), trending posts, keyword search, user profiles and posts, post details and comments. Likes, reposts, comments, IP region, images, video links, topics. No login, no cookies; also via MCP. $15 per 1,000 posts.

- **URL**: https://apify.com/sauliusautomatesit/weibo-scraper-api.md
- **Developed by:** [Saulius AutomatesIT](https://apify.com/sauliusautomatesit) (community)
- **Categories:** Social media, Marketing, AI
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $12.75 / 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.
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

## Weibo Scraper API: Posts, Hot Search, Comments & Profiles

Get [Sina Weibo](https://weibo.com) (新浪微博) data in bulk: the **hot search list** (微博热搜) with heat and category, **trending posts**, **keyword search**, **user profiles and their posts**, **single posts** and their **comments**. Every post comes with full text, likes, reposts, comment count, the author's IP region (发布于), images, video link, topics and mentions.

No Weibo account, no cookies of yours, no browser. **$15 per 1,000 posts or profiles**, comments $5 per 1,000, hot list topics $4 per 1,000.

### What you can use it for

- **China social listening**: what people say about a brand, product or event right now, with the newest posts from the realtime tab.
- **Trend tracking**: snapshot the hot search list, the entertainment list and the topic list every hour and see what rises.
- **KOL and competitor research**: an account's followers, verification, post count and newest posts with engagement.
- **Public reaction**: the hottest and newest comments on a post, with each commenter's region, ready for sentiment analysis or an LLM.
- **Media monitoring**: follow official accounts (人民日报, 央视新闻, brand accounts) and collect every new post.

### Why not call Weibo yourself

Weibo has no open API for search or public posts. Its web endpoints (`weibo.com/ajax/...`, `m.weibo.cn/api/...`) answer only after a visitor cookie handshake, and anything outside the visitor allowance sends you to a login page. This Actor does the visitor handshake for both the desktop and the mobile site, rotates IPs when Weibo pushes back, fetches the full text of long posts, and returns plain JSON: one call from Python, JavaScript, cURL or an AI agent.

### How to use it

1. Fill any mix of **Hot lists**, **Search keywords**, **Users**, **Post URLs** or **Trending posts**.
2. Optional: **Include comments** and how many per post.
3. Run it and download the results as JSON, CSV or Excel, or read them through the API.

#### Input example

```json
{
  "hotLists": ["realtime"],
  "searchQueries": ["新能源汽车", "比亚迪"],
  "maxPostsPerSearch": 50,
  "users": ["https://weibo.com/u/2803301701", "央视新闻"],
  "maxPostsPerUser": 50,
  "postUrls": ["https://weibo.com/2803301701/Rljh4rccv"],
  "includeComments": true,
  "maxCommentsPerPost": 50
}
```

### Output

Each item has a `type`: `post`, `comment`, `profile` or `hot-topic`.

#### Post

```json
{
  "type": "post",
  "id": "5349491828064625",
  "mblogid": "RkLvwxPYB",
  "url": "https://weibo.com/1875293522/RkLvwxPYB",
  "text": "分享图片",
  "createdAt": "2026-10-02T00:41:42.000Z",
  "region": "四川",
  "authorId": "1875293522",
  "authorName": "卢克文",
  "authorVerified": true,
  "authorVerifiedReason": "2025微博年度新知博主",
  "authorFollowers": 2070000,
  "reposts": 46,
  "comments": 271,
  "likes": 889,
  "images": ["https://wx3.sinaimg.cn/mw2000/6fc6b552gy1ihnprgec6ij20sg0qu7bq.jpg"],
  "videoUrl": null,
  "topics": [],
  "mentions": [],
  "isRepost": false,
  "repostOf": null,
  "source": "search",
  "searchQuery": "比亚迪",
  "searchView": "all",
  "position": 1
}
```

Video posts also carry `videoUrl` (MP4), `videoTitle`, `videoDurationSeconds`, `videoPlayCount` and `videoCoverUrl`. Reposts carry `repostOf` with the original post's id, URL, text and author.

#### Hot topic

```json
{
  "type": "hot-topic",
  "list": "realtime",
  "rank": 1,
  "topic": "未来几年能留住现金流最重要",
  "category": "互联网",
  "heat": 206826,
  "label": null,
  "url": "https://s.weibo.com/weibo?q=%E6%9C%AA%E6%9D%A5..."
}
```

The topic list (`topics`) adds `summary`, `reads` and `mentionCount`. The pinned official topic at the top of the hot search list comes as `rank: 0`, `isPinned: true`.

#### Profile

```json
{
  "type": "profile",
  "id": "2803301701",
  "screenName": "人民日报",
  "url": "https://weibo.com/u/2803301701",
  "description": "人民日报法人微博。参与、沟通、记录时代。",
  "followers": 158037550,
  "following": 3096,
  "posts": 153937,
  "verified": true,
  "verifiedReason": "《人民日报》法人微博",
  "location": "北京",
  "company": "人民日报社",
  "joinedAt": "2012-07-21T18:28:35.000Z"
}
```

#### Comment

```json
{
  "type": "comment",
  "id": "5350723426451782",
  "postId": "5350720715098384",
  "postUrl": "https://weibo.com/1728715190/RlhtBlok0",
  "text": "神经科学里非常重要的方法学之一",
  "createdAt": "2026-10-05T10:15:38.000Z",
  "region": "浙江",
  "likes": 9,
  "replies": 0,
  "authorName": "本尼迪克特居然",
  "authorFollowers": 471
}
```

### What Weibo shows a logged-out visitor, and so what you get

- **Search**: the first page of each search tab (综合, 热门, 实时, 视频, 图片). Merged and de-duplicated that is **about 40 to 60 posts per keyword**. For more, use more specific keywords or schedule the run: the realtime tab changes by the minute.
- **User posts**: the account's 10 or so newest posts of every kind, then its video feed going back years. Older text and picture posts past the newest 10 need a login, so an account that rarely posts video gives fewer posts than you asked for.
- **Comments**: hottest first, then newest; about 300 per post on busy posts.
- **Not available without login**: fans and followers lists, reposts lists, search past page one. We do not ask for your cookies.

### Pricing

Pay per result, no subscription:

| Item | Price |
|---|---|
| Post | $0.015 ($15 per 1,000) |
| Profile | $0.015 |
| Comment | $0.005 ($5 per 1,000) |
| Hot list topic | $0.004 (a 50-topic hot search snapshot is $0.20) |
| Run start | $0.00005 |

Bronze, Silver and Gold Apify plans pay 5%, 10% and 15% less. Inputs that give nothing (deleted post, unknown user, a keyword with no results) come back as free `error` rows that say why.

### Use it from code or an AI agent

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("sauliusautomatesit/weibo-scraper-api").call(run_input={
    "searchQueries": ["新能源汽车"],
    "includeComments": True,
    "maxCommentsPerPost": 20,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["type"], item.get("url"), item.get("text", "")[:60])
```

As an MCP tool for Claude, Cursor or any MCP client: `https://mcp.apify.com/?tools=sauliusautomatesit/weibo-scraper-api`.

### Related Actors

- [Bilibili API](https://apify.com/sauliusautomatesit/bilibili-api): videos, stats and danmaku from Bilibili.
- [WeChat Article Search](https://apify.com/sauliusautomatesit/wechat-article-search): WeChat official account articles by keyword.

### Notes

The Actor reads only public data that Weibo shows to any logged-out visitor. Use the data in line with Weibo's terms and the privacy laws that apply to you.

# Actor input Schema

## `hotLists` (type: `array`):

Weibo's live rankings. `realtime` is the hot search list (微博热搜, 50 topics with heat and category), `entertainment` the entertainment list (文娱榜, 50), `topics` the topic list (话题榜, with reads and mentions).

## `searchQueries` (type: `array`):

One keyword per line, Chinese or any language: `新能源汽车`, `比亚迪`, `#话题#`. Weibo shows logged-out visitors the first page of each search view, so a keyword gives about 40 to 60 distinct posts across the five views.

## `searchViews` (type: `array`):

Which Weibo search tabs to read for each keyword, in this order: `all` (综合), `hot` (热门), `realtime` (实时, newest), `video` (视频), `pictures` (图片). Posts found in more than one view are kept once.

## `maxPostsPerSearch` (type: `integer`):

Most posts to keep for each keyword.

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

Weibo accounts: profile URL (`https://weibo.com/u/2803301701`, `https://weibo.com/rmrb`, `https://m.weibo.cn/u/2803301701`), numeric id or screen name (`人民日报`). Gives one profile row and the account's newest posts.

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

Newest posts to keep for each user, going back in time (0 = profile only). Logged out, Weibo shows the 10 or so newest posts of every kind, then the account's video posts going back years.

## `includeProfiles` (type: `boolean`):

Followers, following, post count, verification, IP region, company and join date for each user above.

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

Single posts: `https://weibo.com/2803301701/Rljh4rccv`, `https://m.weibo.cn/detail/5350789826481759`, or the post id.

## `trendingPosts` (type: `integer`):

How many posts to take from Weibo's trending feed (热门微博). 0 = off.

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

Add the top comments of every post found, as separate comment rows (charged per comment).

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

Most comments to keep per post, hottest first. Weibo shows logged-out visitors about 300 per post.

## `fetchFullText` (type: `boolean`):

Weibo cuts long posts in lists; this fetches the whole text (one extra request per long post, no extra charge).

## `concurrency` (type: `integer`):

Keywords, users and posts worked on at the same time.

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

Apify Proxy datacenter IPs work. Change only if you need to.

## Actor input object example

```json
{
  "hotLists": [
    "realtime"
  ],
  "searchQueries": [
    "新能源汽车"
  ],
  "searchViews": [
    "all",
    "hot",
    "realtime",
    "video",
    "pictures"
  ],
  "maxPostsPerSearch": 20,
  "maxPostsPerUser": 20,
  "includeProfiles": true,
  "trendingPosts": 0,
  "includeComments": false,
  "maxCommentsPerPost": 20,
  "fetchFullText": true,
  "concurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

Items of type post, comment, profile and hot-topic. Download as JSON, CSV or Excel, or read it from this API endpoint.

## `summary` (type: `string`):

Rows delivered per type, inputs not found, empty searches and failures.

# 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 = {
    "hotLists": [
        "realtime"
    ],
    "searchQueries": [
        "新能源汽车"
    ],
    "maxPostsPerSearch": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("sauliusautomatesit/weibo-scraper-api").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 = {
    "hotLists": ["realtime"],
    "searchQueries": ["新能源汽车"],
    "maxPostsPerSearch": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("sauliusautomatesit/weibo-scraper-api").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 '{
  "hotLists": [
    "realtime"
  ],
  "searchQueries": [
    "新能源汽车"
  ],
  "maxPostsPerSearch": 20
}' |
apify call sauliusautomatesit/weibo-scraper-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sauliusautomatesit/weibo-scraper-api"
        }
    }
}
```

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/5hmRgF4UWdv7fRWmu/builds/4P7FPCYtAiinvUDUg/openapi.json
