Weibo Scraper 微博 - Posts, Comments, Profiles & Hot Search avatar

Weibo Scraper 微博 - Posts, Comments, Profiles & Hot Search

Pricing

from $10.50 / 1,000 weibo item delivereds

Go to Apify Store
Weibo Scraper 微博 - Posts, Comments, Profiles & Hot Search

Weibo Scraper 微博 - Posts, Comments, Profiles & Hot Search

Get Weibo (微博) posts, comments and profiles by keyword, hashtag, user or post link, plus the live hot search board. Text, likes, comments, reposts, media, region and author followers. Black Cat (黑猫投诉) complaints, ad filter, sentiment, translation, only-new mode. No login. Error rows are free.

Pricing

from $10.50 / 1,000 weibo item delivereds

Rating

0.0

(0)

Developer

Scrapewise Data

Scrapewise Data

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

5

Monthly active users

6 hours ago

Last modified

Share

Weibo Scraper

Weibo Scraper turns public Weibo (微博) content into JSON, CSV or Excel without a login. Paste any Weibo link (post, profile, search page, #topic# page or the hot search board) and run, or search keywords. It also reads the live hot search board (热搜), the hot timeline, accounts and topics that match a keyword, and Black Cat (黑猫投诉) consumer complaints by company. Each post comes with full text, likes, comments, reposts, media links, publishing region, hashtags, an isPromoted flag for paid placements and the author's public profile. Optional: public comments and replies (up to 1,000 per post), lexicon sentiment, and an only-new mode for scheduled monitoring of keywords, hashtags, accounts and the hot search board.

What the Weibo scraper fixes

  • One keyword, one tab. Weibo splits search across tabs and serves logged out visitors one page per tab. This Actor reads eleven tabs per keyword and deduplicates them: about 120 to 135 distinct posts per keyword instead of about 11 on the first tab.
  • Re-paying for the same posts on a schedule. With compareWithPreviousRun, a scheduled run delivers and charges only posts no earlier run delivered, for keywords, hashtags and now accounts (new posts of each profile).
  • Ads mixed into engagement data. Every post carries isPromoted, read from Weibo's own 广告 label; adFilter drops or isolates them before charging.
  • Picking a mode. Links pasted in startUrls are each read in the right mode, mixed in one list.

Weibo scraper at a glance

  • Price: US$ 15.00 per 1,000 items (US$ 10.50 on Gold and above). No start fee. Repeated posts skipped by the only-new mode are not charged.
  • Login, cookies, API key: none
  • Simplest input: paste Weibo links in startUrls, or leave the input empty (searches 小米, 30 posts)
  • Error rows (deleted post, missing profile, empty search, blocked page): free, with an errorCode

Switching from another Weibo scraper? Your existing input works

Field names used by other Weibo Actors are read as they are:

Their fieldRead here as
operation (searchWeibo, weiboDetail, userDetail, user_profile, post_details, post_comments, hot_search, hot_timeline, hot_search_delta, user_posts, complaints)mode
keyword, searchAliasessearchQuery, searchQueries
weiboId, postIds / userIdpostUrls / userIds
startDay, endDay, searchDateFrom, searchDateTopublishedAfter, publishedBefore
maxResults, maxPages (20 items per page), maxCommentsmaxItems, maxCommentsPerPost
fetchFullText, sentimentAnalysis, deltaMode, deltaStateKey, complaintCompanyIdsincludeLongText, sentiment, compareWithPreviousRun, snapshotName, complaintCompanies
targetLanguage, translateToEnglish: truetranslateTo

A cookieString is ignored, since nothing here needs a login. Fan and follower lists are not offered; asking for them returns one free row with errorCode: "NOT_OFFERED".

Weibo scraper input examples

{ "startUrls": ["https://weibo.com/u/2803301701", "https://s.weibo.com/top/summary"] }

Scheduled brand monitoring, only new posts, with sentiment:

{
"searchQueries": ["特斯拉", "Tesla"],
"maxItems": 200,
"compareWithPreviousRun": true,
"snapshotName": "tesla-daily",
"sentiment": true
}

Account monitor, only the new posts of each account (schedule it hourly or daily):

{
"mode": "user",
"userIds": ["1892653244", "https://weibo.com/u/2803301701"],
"compareWithPreviousRun": true,
"snapshotName": "accounts-hourly"
}

The first run delivers each profile row and its latest posts; later runs deliver only posts published since, and nothing when there is nothing new (the run status says so).

Full comment thread of one post, with replies:

{ "mode": "posts", "postUrls": ["https://m.weibo.cn/detail/5346411605394884"],
"includeComments": true, "maxCommentsPerPost": 300, "includeReplies": true, "maxRepliesPerComment": 5 }

Other modes: { "mode": "hot" } for the hot search board, { "mode": "profiles", "searchQuery": "小米" } for matching accounts, { "mode": "topics", "searchQuery": "小米" } for matching topics, { "mode": "hot_posts", "hotCategory": ["科技"] } for a hot timeline channel, { "mode": "complaints", "complaintCompanies": ["小米", "京东"] } for Black Cat.

Translate Weibo posts to English

Weibo is in Chinese. Set translateTo to a language code (en, es, pt, fr, de, ru, ja, ko, vi, id, ar, tr) and each row gets a machine translation next to the original: textTranslated (post, long post, comment, reply, profile bio or complaint text), topicTranslated, authorDescriptionTranslated, complaintTitleTranslated, repostOf.textTranslated and translatedTo. The Chinese fields stay exactly as they were. Off by default.

{ "mode": "posts", "postUrls": ["https://m.weibo.cn/detail/5343350941032693"],
"includeComments": true, "maxCommentsPerPost": 5, "translateTo": "en" }

Two comment rows from that run (other fields left out):

[
{ "type": "comment", "text": "买了18fold的咋办", "textTranslated": "What should I do if I buy 18fold?", "translatedTo": "en" },
{ "type": "comment", "text": "一定要一起发没有背屏的max版,我不要背屏",
"textTranslated": "We must send the max version without the back screen together, I don’t want the back screen",
"translatedTo": "en" }
]

The post row of the same run has authorDescription: "科技普惠大众" and authorDescriptionTranslated: "Technology benefits the public". If the translation service fails for a row, the row is still delivered, only without the translated fields. Translation is free during the launch; later it is charged once per row that comes back with at least one translated field.

Weibo data: output example

A real post row from a cloud run of 2026-09-16 (input { "searchQuery": "小米" }), trimmed:

{
"type": "post",
"id": "5343350941032693",
"bid": "RibKS4kEl",
"url": "https://m.weibo.cn/detail/5343350941032693",
"text": "全新小米18 Pro系列\n全新百变背屏\n明日敬请期待\n#小米18Pro系列# 卢伟冰的微博视频",
"createdAt": "2026-09-15T02:00:02+00:00",
"likeCount": 2120,
"commentCount": 466,
"repostCount": 108,
"region": "北京",
"hashtags": ["小米18Pro系列"],
"videoDuration": 8,
"isPromoted": false,
"authorId": "1892653244",
"authorName": "卢伟冰",
"authorVerified": true,
"authorFollowersCount": 3752000,
"source": "search:小米",
"errorCode": null,
"scrapedAt": "2026-09-16T01:17:41.069454+00:00"
}

A hot search topic row from the same day:

{ "type": "topic", "topic": "隐翅虫被女生用手掐着玩", "rank": 2, "heat": 1237211,
"board": "实时热点,每分钟更新一次", "source": "hot" }

Weibo scraper output fields

One flat row per item; type says what it is (post, topic, profile, comment, complaint) and fields that do not apply are null.

FieldMeaning
id, bid, urlNumeric id, short id and m.weibo.cn link
text, isLongTextFull plain text (long posts already opened)
createdAtPublish time, ISO 8601 UTC
likeCount, commentCount, repostCountEngagement counts
region, hashtags, pictures, videoUrlPublishing region, topics, image links, MP4 link
isRepost, repostOfWhether it quotes another post, and that original
authorName, authorVerified, authorFollowersCount, authorPostCountAuthor's public profile (万 and 亿 converted to integers)
isPromoted, promotionLabelPaid placement flag and Weibo's label
topic, rank, heat, discussionCount, readCountOn topic rows
postId, parentCommentId, commenterNameOn comment rows (display name only)
sentiment, sentimentScore, sentimentTermsWith sentiment: true
trend, previousRank, rankChange, heatChangeWith compareWithPreviousRun
complaintTitle, complaintAppeal, complaintStatus, complaintAmountCny, companyNameOn Black Cat complaint rows
textTranslated, topicTranslated, authorDescriptionTranslated, complaintTitleTranslated, translatedToWith translateTo: machine translation next to the Chinese original
source, errorCode, scrapedAtWhere the row came from, error code, collection time

Weibo scraper pricing

One charge per row with content: a post, topic, profile, comment, reply or complaint. Error rows are free and duplicates are removed before charging. US$ 15.00 per 1,000 (Bronze 13.50, Silver 12.00, Gold and above 10.50). The default 30 item run costs US$ 0.45. With compareWithPreviousRun, posts an earlier run already delivered are skipped and not charged. There is no compute bill on top. Translation (translateTo) is free during the launch; later it is charged once per translated row.

Weibo scraper limitations

  • Weibo serves one page per list to a logged out visitor. Search, profile, topic and comment lists answer page 2 with a login redirect. The Actor compensates by width (eleven tabs per keyword), so expect about 120 to 135 posts per keyword, 25 to 40 per topic, 10 to 12 per profile and 60 to 85 hot topics. Comments above 20 per post come from weibo.com, which does page through. For more volume, use more keywords or schedule runs and accumulate.
  • Date filters filter, they do not dig. publishedAfter and publishedBefore drop posts outside the window; Weibo does not serve older posts to a logged out visitor.
  • Sentiment is a word list, not a language model. It handles negation, intensifiers, emoticons and common slang but misses sarcasm. On 20 posts it agreed with a human reading on 15.
  • Some content is hidden from logged out visitors (follower-only, age gated), and the Actor does not use an account to reach it.
  • Black Cat is read by company, since its keyword search and detail pages need a login. Complainant nicknames are left out.
  • Media links expire because Weibo signs them; download files within a few hours.
  • No follower or fan lists, and commenters are display name only.

Weibo scraper error codes (never charged)

errorCodeMeaning
POST_NOT_FOUNDPost deleted, hidden or never existed
PROFILE_NOT_FOUNDNo profile matches that uid, link or name
INVALID_POST_ID, INVALID_DATE, INVALID_INPUT, INVALID_CATEGORYA value in the input could not be read; the message says which
NO_RESULTSNothing public matches the keyword, hashtag or profile
COMPANY_NOT_FOUNDNo Black Cat company matches that name
BLOCKEDWeibo served the login page on every retry for that request
NO_DATA, ITEM_UNREADABLE, UNEXPECTEDOne tab, item or request could not be read; the rest of the run still delivers

Use it from code and AI agents

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("scrapewise/weibo-scraper").call(run_input={"mode": "search", "searchQuery": "Tesla", "maxItems": 30})
for post in client.dataset(run["defaultDatasetId"]).iterate_items():
print(post["createdAt"], post["likeCount"], post["url"], post["text"])

The same works from the HTTP API (run-sync-get-dataset-items), n8n, Make, Zapier and Google Sheets. For AI agents: https://mcp.apify.com/?actors=scrapewise/weibo-scraper.

Video guides from Apify: how to schedule an Actor and how to connect it to other apps.

Requests an agent can pass straight through:

  • "What is on Weibo's hot search board right now?" -> {"mode": "hot", "maxItems": 50}
  • "How do Chinese users feel about BYD? Include sentiment" -> {"mode": "search", "searchQueries": ["比亚迪", "BYD"], "sentiment": true, "maxItems": 100}
  • "Show me the latest consumer complaints against Xiaomi on Black Cat" -> {"mode": "complaints", "complaintCompanies": ["小米"], "maxItems": 30}

Weibo scraper FAQ

Do I need a Weibo account or cookies? No. The Actor takes the same anonymous visitor session a browser gets when it opens m.weibo.cn logged out.

Why not the official Weibo API? Weibo's Open Platform API needs a registered developer app, approval and OAuth, and mainly covers the authorized account's own content. This Actor needs no app or account and reads public search, profiles, topics, comments and the hot search board.

How do I get only new posts every day? Set compareWithPreviousRun: true and a snapshotName, then schedule the run. It works for keywords, hashtags and accounts (mode: user). Seen ids are kept in a key-value store in your own Apify account; delete it to start over.

Can I search in English? Yes. Tesla or Xiaomi return the posts Weibo indexes for them, mostly Chinese text with the Latin term inside. Search both names for full coverage.

Can I use it from an AI agent or n8n? Yes, see "Use it from code and AI agents" above. The output is flat with a type column.

Is it legal? It collects only what Weibo shows any logged out visitor, never private messages or restricted content. How you use the data is your responsibility under Weibo's terms and the privacy laws that apply to you.

What if Weibo changes its API? The affected request comes back as a free row with an errorCode and a message naming what changed, instead of a silent empty dataset. Open an issue on the Actor page.

Changelog

  • 2026-10-20: optional translation of titles and texts (translateTo).
  • 2026-10-19: examples for AI agents (Apify MCP server).
  • 2026-10-18: compareWithPreviousRun in user mode: an account monitor that delivers only each profile's new posts.
  • 2026-10-08: startUrls (paste any Weibo link), profile_only mode, adFilter, and input field names from other Weibo Actors accepted.
  • 2026-10-05: up to 1,000 comments per post and replies under each comment (includeReplies).
  • 2026-10-01: sentiment, isPromoted, and compareWithPreviousRun in search and hashtag mode.