Weibo Scraper 微博 - Posts, Comments, Profiles & Hot Search
Pricing
from $10.50 / 1,000 weibo item delivereds
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
Maintained by CommunityActor stats
0
Bookmarked
8
Total users
5
Monthly active users
6 hours ago
Last modified
Categories
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;adFilterdrops or isolates them before charging. - Picking a mode. Links pasted in
startUrlsare 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 field | Read here as |
|---|---|
operation (searchWeibo, weiboDetail, userDetail, user_profile, post_details, post_comments, hot_search, hot_timeline, hot_search_delta, user_posts, complaints) | mode |
keyword, searchAliases | searchQuery, searchQueries |
weiboId, postIds / userId | postUrls / userIds |
startDay, endDay, searchDateFrom, searchDateTo | publishedAfter, publishedBefore |
maxResults, maxPages (20 items per page), maxComments | maxItems, maxCommentsPerPost |
fetchFullText, sentimentAnalysis, deltaMode, deltaStateKey, complaintCompanyIds | includeLongText, sentiment, compareWithPreviousRun, snapshotName, complaintCompanies |
targetLanguage, translateToEnglish: true | translateTo |
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.
| Field | Meaning |
|---|---|
id, bid, url | Numeric id, short id and m.weibo.cn link |
text, isLongText | Full plain text (long posts already opened) |
createdAt | Publish time, ISO 8601 UTC |
likeCount, commentCount, repostCount | Engagement counts |
region, hashtags, pictures, videoUrl | Publishing region, topics, image links, MP4 link |
isRepost, repostOf | Whether it quotes another post, and that original |
authorName, authorVerified, authorFollowersCount, authorPostCount | Author's public profile (万 and 亿 converted to integers) |
isPromoted, promotionLabel | Paid placement flag and Weibo's label |
topic, rank, heat, discussionCount, readCount | On topic rows |
postId, parentCommentId, commenterName | On comment rows (display name only) |
sentiment, sentimentScore, sentimentTerms | With sentiment: true |
trend, previousRank, rankChange, heatChange | With compareWithPreviousRun |
complaintTitle, complaintAppeal, complaintStatus, complaintAmountCny, companyName | On Black Cat complaint rows |
textTranslated, topicTranslated, authorDescriptionTranslated, complaintTitleTranslated, translatedTo | With translateTo: machine translation next to the Chinese original |
source, errorCode, scrapedAt | Where 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.
publishedAfterandpublishedBeforedrop 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)
| errorCode | Meaning |
|---|---|
POST_NOT_FOUND | Post deleted, hidden or never existed |
PROFILE_NOT_FOUND | No profile matches that uid, link or name |
INVALID_POST_ID, INVALID_DATE, INVALID_INPUT, INVALID_CATEGORY | A value in the input could not be read; the message says which |
NO_RESULTS | Nothing public matches the keyword, hashtag or profile |
COMPANY_NOT_FOUND | No Black Cat company matches that name |
BLOCKED | Weibo served the login page on every retry for that request |
NO_DATA, ITEM_UNREADABLE, UNEXPECTED | One 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 ApifyClientclient = 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.
Related scrapers
- WeChat Articles Scraper: WeChat official account articles, search and full text.
- Douyin Hot Search: China trends from Douyin, Baidu, Zhihu and Toutiao.
- Xiaohongshu (RedNote) Scraper: RedNote notes, profiles and feeds.
- Douban Scraper: Douban reviews and ratings of movies and books.
- Bilibili Scraper: Bilibili videos, comments, channels and stats.
Changelog
- 2026-10-20: optional translation of titles and texts (
translateTo). - 2026-10-19: examples for AI agents (Apify MCP server).
- 2026-10-18:
compareWithPreviousRuninusermode: an account monitor that delivers only each profile's new posts. - 2026-10-08:
startUrls(paste any Weibo link),profile_onlymode,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, andcompareWithPreviousRuninsearchandhashtagmode.