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

Scrape Weibo (新浪微博) without login: keyword search with date ranges, post details, comments and replies, user profiles and the hot-search board. Cheapest on the Store, $3 per 1,000 posts.

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

## Pricing

from $8.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 – Search, Posts, Comments & Hot Search

Scrape **Weibo (新浪微博)** without login, cookies or an API key. **Search any keyword or #hashtag** with date ranges, get **full post text** (long posts are expanded), **engagement counts** (likes, comments, reposts), **images and video links**, **topics and @mentions**, the **reposted post**, **comments and reply threads**, **user profiles** (followers, following, verification, bio, location) and Weibo's **hot-search board (热搜)** with heat values.

**Mix sources in one run**: keywords, post links, profiles and trending together. Posts found twice are saved once. **$8 per 1,000 posts**, up to 9x cheaper than the most-used Weibo scrapers, with no monthly fee.

### What you can use it for

- **Brand and product monitoring in China**: every public post that mentions your brand, product or competitor, newest first, with the author's region.
- **Trend and crisis tracking**: snapshot the hot-search board every hour and see how fast a topic grows.
- **Sentiment and market research**: Chinese posts and comments with clean text and engagement counts, ready for analysis.
- **Influencer (KOL) research**: find who posts about a niche, then pull their profile with followers and verification.
- **AI / NLP datasets**: posts and comments with a clean `text` and `markdown` field for RAG and training.
- **Scheduled feeds**: turn on **Only new posts** to get just the new posts for a keyword on every run.

### How to scrape Weibo

1. **Create a free Apify account** (no credit card needed to start) and open this Actor.
2. **Pick what you want** in the input form. Add **Search keywords** (Chinese or English, or a #hashtag) for posts, **Post URLs** for single posts, **Profile URLs or user IDs** for profiles, or switch on **Trending** for the hot-search board. You can fill several at once.
3. **Set the limits.** *Max posts per search* is how many posts each keyword returns. Use *Posted after / Posted before* to focus on a period. Turn on **Include comments** if you want the discussion under each post.
4. **Click Start.** A search of 100 posts takes under a minute. Results appear in the **Output** tab while it runs.
5. **Download or connect.** Export as JSON, CSV, Excel or HTML, or read the dataset through the API, Make, Zapier, n8n, Google Sheets or a webhook.
6. **Automate it.** Open **Schedules**, add a daily or hourly schedule, and switch on **Only new posts** so every run returns just what is new for your keywords.

**Tips**

- To follow a person, search their name or a hashtag they use. Weibo hides a logged-out visitor's view of anyone's own timeline.
- One keyword returns about 650 posts at most. To collect a whole month, run one search per week with *Posted after / before*.
- Keep *Full text of long posts* on. Weibo cuts long posts in search results, and this fetches the rest at no extra cost.
- The hot-search board changes every few minutes. Schedule it hourly and compare the `rank` and `heat` fields over time.

### Output: post

```json
{
  "type": "post",
  "id": "5354958493848038",
  "mblogId": "Rn3IJg938",
  "url": "https://weibo.com/7849268899/Rn3IJg938",
  "text": "#金玟庭[超话]#  我可以手把手教，我是iPhone",
  "publishedAt": "2026-10-17T02:44:18+00:00",
  "client": "iPhone客户端",
  "region": "云南",
  "authorName": "Jiiouo_w",
  "author": {
    "id": "7849268899",
    "name": "Jiiouo_w",
    "url": "https://weibo.com/u/7849268899",
    "avatarUrl": "https://tvax4.sinaimg.cn/crop.0.0.1080.1080.1024/008zcJphly8ie02tn0pf1j30u00u0jtz.jpg",
    "verified": false,
    "verifiedReason": null,
    "followers": null
  },
  "repostsCount": 0,
  "commentsCount": 0,
  "likesCount": 1,
  "topics": [
    "金玟庭[超话]"
  ],
  "mentions": [],
  "links": [
    {
      "title": "金玟庭超话",
      "url": "sinaweibo://pageinfo?containerid=10080868d76cea78912a2b2913655c36d2dd56&extparam=金玟庭&extension=%7B%22mblog_object_ref%22%3A%22content%22%7D"
    }
  ],
  "images": [
    "https://wx3.sinaimg.cn/large/008zcJphgy1ii55lkpi94j30dt0u0taf.jpg"
  ],
  "video": null,
  "isLongText": false,
  "isEdited": false,
  "repostOf": null,
  "source": "search",
  "searchQuery": "iPhone"
}
```

### Output: comment or reply

```json
{
  "type": "comment",
  "id": "5353269314455293",
  "postId": "5353269197276522",
  "postUrl": "https://weibo.com/3669102477/RmlM3uwXg",
  "isReply": true,
  "parentCommentId": "5353269221130661",
  "text": "欧尼呀",
  "publishedAt": "2026-10-12T10:52:06+00:00",
  "authorName": "介介歪的圆脑袋",
  "author": {
    "id": "7394158264",
    "name": "介介歪的圆脑袋",
    "url": "https://weibo.com/u/7394158264",
    "avatarUrl": "https://tvax2.sinaimg.cn/crop.0.0.1080.1080.1024/0084p8laly8ih88rb6ekuj30u00u0go0.jpg",
    "verified": true,
    "verifiedReason": "微博原创视频博主",
    "followers": 13566
  },
  "likesCount": 9544,
  "replyCount": null,
  "replyToUser": "雪再飘祎会儿",
  "region": "广东",
  "likedByAuthor": false,
  "images": []
}
```

### Output: profile

```json
{
  "type": "user",
  "id": "1669879400",
  "name": "Dear-迪丽热巴",
  "url": "https://weibo.com/u/1669879400",
  "avatarUrl": "https://tvax1.sinaimg.cn/crop.0.0.1080.1080.1024/63885668ly8geyrcrw0zjj20u00u0mz6.jpg",
  "verified": true,
  "verifiedReason": "嘉行传媒签约演员　",
  "followers": 82550518,
  "description": "一只喜欢默默表演的小透明。工作联系jaywalk@jaywalk.com.cn 🍒",
  "gender": "female",
  "location": "上海",
  "following": 294,
  "postsCount": 1937,
  "domain": null,
  "verifiedType": 0,
  "level": 9,
  "createdAt": "2010-07-02 13:19:58",
  "company": "嘉行传媒",
  "school": "上海戏剧学院",
  "birthday": "双子座",
  "ipLocation": null,
  "creditLevel": "阳光信用极好",
  "website": "http://blog.sina.com.cn/dillaba",
  "totalLikes": 3263418047,
  "totalComments": 1055183143,
  "totalReposts": 1897628766
}
```

### Output: hot-search topic

```json
{
  "type": "trend",
  "rank": 1,
  "word": "拿打工人血汗钱给女儿铺星路",
  "label": "新",
  "heat": 1124302,
  "isPinned": false,
  "url": "https://s.weibo.com/weibo?q=%23%E6%8B%BF%E6%89%93%E5%B7%A5%E4%BA%BA%E8%A1%80%E6%B1%97%E9%92%B1%E7%BB%99%E5%A5%B3%E5%84%BF%E9%93%BA%E6%98%9F%E8%B7%AF%23",
  "postUrl": null,
  "category": null
}
```

### Input

```json
{
  "searchQueries": ["小米", "#新能源汽车#"],
  "postedAfter": "2026-10-01",
  "postedBefore": "2026-10-15",
  "maxPostsPerSearch": 300,
  "users": ["https://weibo.com/u/1669879400"],
  "postUrls": ["https://weibo.com/3669102477/RmlM3uwXg"],
  "trending": "hotSearch",
  "includeComments": true,
  "maxCommentsPerPost": 20,
  "maxRepliesPerComment": 3
}
```

Leave the input empty to get a small sample.

### Pricing

You pay per result, plus a tiny start fee. No monthly fee, and you are never charged for items that were not saved.

| Result | Price per 1,000 |
|---|---|
| Post | $8.00 |
| Profile | $8.00 |
| Comment or reply | $1.00 |
| Hot-search topic | $1.00 |

Set the maximum cost per run in the run options and the Actor stops there. Example: 8 keywords × 300 posts (2,400 posts) plus 3,200 comments and replies is about $22.

### Use with AI (LangChain / LlamaIndex / CrewAI)

Each post has a `markdown` field (text with links and hashtags kept) ready for LLMs. With LangChain (`pip install langchain-apify`):

```python
from langchain_apify import ApifyWrapper
from langchain_core.documents import Document

apify = ApifyWrapper()  # reads APIFY_API_TOKEN
loader = apify.call_actor(
    actor_id="smoldesk/weibo-scraper",
    run_input={"searchQueries": ["新能源汽车"], "maxPostsPerSearch": 100},
    dataset_mapping_function=lambda v: Document(
        page_content=v.get("markdown") or v.get("text") or "",
        metadata={k: v.get(k) for k in ("type", "url", "postUrl", "authorName", "likesCount", "publishedAt")},
    ),
)
docs = loader.load()
```

Already have a run? Use `ApifyDatasetLoader(dataset_id="<run's dataset ID>", dataset_mapping_function=...)`. **LlamaIndex**: `ApifyActor` from `llama-index-readers-apify`. **CrewAI / Claude / MCP clients**: add the Actor as a tool through the Apify MCP server: `https://mcp.apify.com?actors=smoldesk/weibo-scraper`.

### Limitations

Weibo shows logged-out visitors less than logged-in users. This Actor never logs in, so:

- **A user's own post timeline is not available** (Weibo asks for a login). To collect what a person posts, search keywords or hashtags, or read single posts by link.
- **Followers and following lists are not available** (login required). Profiles show the counts.
- Weibo returns about **48 posts per page and roughly 14 pages (about 650 posts) per search**. For more, split the period with **Posted after / Posted before** (for example one search per week).
- Search results are **newest first**. Weibo's own "hot" and "people" search tabs are not available.
- Weibo sometimes limits requests. The Actor retries with fresh sessions and switches to datacenter proxies on its own, so very large runs can take a few minutes.

### FAQ

**Does Weibo have a public API?** Weibo's official API needs an approved app and mostly returns your own account's data. This Actor reads the same public endpoints the Weibo website loads for any visitor, and returns clean, English-named JSON.

**Do I need a Weibo account, cookies or a Chinese phone number?** No. Nothing to log in to, nothing to configure.

**Do I need a proxy or VPN?** No. It works from Apify's servers as is.

**Can I search in English?** Yes. Keywords and #hashtags work in Chinese and English.

**How do I scrape Weibo comments?** Turn on **Include comments**, choose how many comments per post and how many replies per comment. Comments come with their author, likes and the region Weibo shows.

**How do I get only new posts?** Turn on **Only new posts** and schedule the Actor. Each run returns posts that earlier runs with the same keyword and dates haven't seen.

**Is it legal?** It collects only data Weibo shows publicly to every visitor, with no login. Follow copyright and privacy laws (e.g. PIPL, GDPR) when you reuse it.

### Feedback

Found a bug or missing a field? Open an issue in the **Issues** tab. If the Actor saved you time, a short review on this page helps other people find it.

### More Actors from Smoldesk Studios

- [Bilibili Scraper](https://apify.com/smoldesk/bilibili-scraper): videos, stats, danmaku, comments and creators from China's video site, no login
- [Google Hotels Scraper](https://apify.com/smoldesk/google-hotels-scraper): hotel prices for your dates in any currency, ratings, review aspects and booking-site prices, worldwide
- [Google Trends Scraper](https://apify.com/smoldesk/google-trends-scraper): interest over time, by region and city, related queries and Trending now — no API key
- [Telegram Channel Scraper](https://apify.com/smoldesk/telegram-channel-scraper): public channel posts, views, reactions and subscribers
- [Substack Scraper](https://apify.com/smoldesk/substack-scraper): newsletters, subscriber counts and posts
- [Shopify Store Analyzer](https://apify.com/smoldesk/shopify-store-analyzer): apps, contacts and products of any Shopify store
- [Career Site Jobs Scraper](https://apify.com/smoldesk/career-site-jobs-scraper): live jobs from 13,000+ company career sites (Greenhouse, Lever, Workday, Ashby) with salary and seniority
- [SEEK, JobStreet & JobsDB Scraper](https://apify.com/smoldesk/seek-jobs-scraper): jobs and salaries across Australia and Southeast Asia

# Actor input Schema

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

Keywords or #hashtags to search on Weibo, newest posts first. Chinese and English both work. One search per entry.

## `postedAfter` (type: `string`):

Only posts from this date on, for example 2026-10-01 or 2026-10-01T08:00:00Z. Use together with the next field to split long periods: Weibo shows only about 650 posts per search.

## `postedBefore` (type: `string`):

Only posts up to this date, for example 2026-10-15.

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

Stop each search after this many posts. Weibo returns about 48 per page and at most roughly 14 pages (about 650 posts) per keyword and date range.

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

Weibo posts to read: weibo.com/<user>/<post>, m.weibo.cn/detail/<id>, or just the numeric ID. Deleted or private posts are skipped without charge.

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

Profiles to read: weibo.com/u/<uid>, weibo.com/<custom-name>, m.weibo.cn/profile/<uid> or the numeric user ID. Weibo only shows a user's post timeline to logged-in users, so this returns the profile, not their posts. To get a user's posts, search keywords instead.

## `trending` (type: `string`):

Add what is trending on Weibo right now: the hot-search board (rank, topic, heat) and/or the posts Weibo pushes to guests.

## `maxTrending` (type: `integer`):

How many hot-search topics, and how many trending posts, to save.

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

Also save comments for every post (extra charge per comment).

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

Top-level comments to save per post.

## `commentSort` (type: `string`):

Which comments to take first.

## `maxRepliesPerComment` (type: `integer`):

Replies to save under each comment. 0 = comments only.

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

Weibo cuts long posts in search results. Fetch the full text (one extra request per long post, no extra charge).

## `profileDetails` (type: `boolean`):

Add join date, company, school, zodiac and credit level to profiles.

## `onlyNewPosts` (type: `boolean`):

Remember posts from earlier runs and skip them, so a scheduled run returns and charges only new posts per keyword.

## `maxConcurrency` (type: `integer`):

Requests in flight at once. Lower it if you see many blocked-session warnings.

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

Optional. Weibo works from Apify servers without a proxy; the Actor switches to datacenter proxies by itself if it gets blocked. Residential proxies are not needed.

## Actor input object example

```json
{
  "searchQueries": [
    "人工智能"
  ],
  "maxPostsPerSearch": 20,
  "trending": "none",
  "maxTrending": 20,
  "includeComments": false,
  "maxCommentsPerPost": 20,
  "commentSort": "hot",
  "maxRepliesPerComment": 0,
  "fetchFullText": true,
  "profileDetails": true,
  "onlyNewPosts": false,
  "maxConcurrency": 3
}
```

# Actor output Schema

## `posts` (type: `string`):

Weibo posts (type = post).

## `comments` (type: `string`):

Comments and replies (type = comment).

## `users` (type: `string`):

User profiles (type = user).

## `trends` (type: `string`):

Hot-search topics (type = trend).

# 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 = {
    "searchQueries": [
        "人工智能"
    ],
    "maxPostsPerSearch": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("smoldesk/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 = {
    "searchQueries": ["人工智能"],
    "maxPostsPerSearch": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("smoldesk/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 '{
  "searchQueries": [
    "人工智能"
  ],
  "maxPostsPerSearch": 20
}' |
apify call smoldesk/weibo-scraper --silent --output-dataset

```

## MCP server setup

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