Weibo Scraper - Posts, Search, Profiles & AI Translation
Pricing
from $2.08 / 1,000 posts
Weibo Scraper - Posts, Search, Profiles & AI Translation
Weibo scraper (微博) without login: keyword search, account posts, profiles, post links, comments and the hot search board. One row per post, $0.004 each (first page as a visitor; more pages with your own cookies). Paid: AI translation to English or Korean and AI topic summaries.
Pricing
from $2.08 / 1,000 posts
Rating
0.0
(0)
Developer
daehwan kim
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Scrape Weibo (微博) without login: give keywords, accounts or post links and get one row per post — full text of long posts, time, likes, comments and reposts, pictures, video, region, author — plus a profile row per account, a row per search and, if you want them, a row per comment. Without cookies Weibo shows visitors the first page only (about 20 posts per search, about 10 per account); more pages with your own cookies. Every post also gets free rule-based fields (language, hashtags, mentions, engagement). On paid plans you can add AI translation into English or Korean and an AI topic summary per search or account.
Main price: $0.004 per post ($0.0032 on BRONZE, $0.00208 on GOLD and up). With it, on every run: a run-start fee once ($0.005; BRONZE $0.004) and each search made ($0.01; BRONZE $0.008) or profile ($0.005; BRONZE $0.004). Only if you turn them on: each comment ($0.001; BRONZE $0.0008) and each comment thread checked ($0.002; BRONZE $0.0016), each checked AI translation ($0.003) and AI summary ($0.03). Details under Pricing. A paid run of 5 keywords × 20 posts with AI translation is about $0.66 on BRONZE ($0.004 + 5 × $0.008 + 100 × $0.0032 + 100 × $0.003 = $0.664).
| Free plan (preview) | Paid Apify plan (Starter and up) | |
|---|---|---|
| Inputs read per run | the first entry of the input (one search, account, post link or trending topic) | every entry: up to 100 searches, 200 accounts, 1,000 post links, the top 50 trending topics |
| Post rows | 1 per run, in full | up to maxPostsPerSearch / maxPostsPerUser (default 20, up to 1,000 each) |
| Profile rows | the first entry's account, in full (when it is an account) | every account |
| Search row | how many posts the pages held; its hashtag and engagement totals are of the one post shown | totals of every post delivered |
| Pages past the first (with your own cookies) | locked — your cookies are not used | yes |
| Comment rows | locked | up to commentsPerPost per post (up to 1,000) |
| AI translation (English / Korean) | locked — a free run asks no model | per post, checked before it is charged |
| AI topic summary per search / account | locked | one row each (it reads up to 30 posts, the first 300 characters of each), citing the posts it rests on |
| What a paid run would take | in a free-plan-preview row: posts found and withheld (counted, never shown), an estimate of the paid run of your input with your settings (BRONZE prices), and a fixed example of paid rows | — |
| Price | the event prices below (FREE tier) | the event prices with plan discounts |
| Apify plan | Discount on every collection event |
|---|---|
| FREE | — |
| BRONZE | 20% |
| SILVER | 35% |
| GOLD, PLATINUM, DIAMOND | 48% |
A free run ends as SUCCEEDED with a status message and a free-plan-preview row. Withheld posts are counted there and nowhere else: their text, IDs and links are in no row and in no total. An AI layer you did not turn on is shown as a setting to turn on (aiTranslate, aiSummary, commentsPerPost), not as a locked count. To get the full output, switch to a paid Apify plan, set what you want, and run the input again.
What paid rows look like — an example on made-up sample data (not a Weibo post, not a result of any run and not a measured model answer; the free-plan-preview row carries the same example):
{"recordType": "post","postUrl": "https://m.weibo.cn/detail/0000000000000001","text": "示例:新款示例车今天到店试驾,续航比上一代多了一百公里。","likesCount": 120, "commentsCount": 2, "repostsCount": 8,"translation": { "status": "translated", "language": "en", "text": "Example: the new example car arrived at the showroom for test drives today; its range is a hundred kilometres longer than the last model's." }}{"recordType": "summary","scope": { "kind": "search", "value": "示例品牌" },"postsRead": 20,"summary": "Example: posts compare the new model's range with the old one; most are test-drive reports.","sentiment": "mixed","themes": [{ "what": "Range compared with the previous model", "evidencePostIds": ["0000000000000001"] }]}
What it is for
- China market research and social listening: what people post about a brand, a product or a policy, with likes, comments and reposts to rank by.
- Reading Weibo without reading Chinese: turn on AI translation and every post row carries an English or Korean translation next to the original.
- Briefings: one AI summary row per keyword or account — what the posts are about, the overall sentiment and up to five themes, each pointing to the posts it comes from.
- Trend tracking:
trendingTopicsreads Weibo's hot search board (微博热搜) and searches its top topics, with each topic's rank and heat on its search row. - Account monitoring: a profile row (followers, post count, verification, region, creation date) and the latest posts of each account.
How it reads Weibo (no login needed)
- As a visitor. Weibo gives every visitor a cookie of its own. With it the Actor reads the first page of a search (its real-time and top feeds together, about 20 posts), the first page of an account's posts (about 10), profiles, single posts with their full text, and comments.
- Through a proxy if Weibo refuses. If Weibo turns a direct request away, the run moves once to a residential proxy (Hong Kong) and goes on. You can also turn on your own proxy in
proxyConfiguration. Proxy use is included in the event prices. - With your own session (optional, paid plans). Weibo shows page 2 onwards of a search or an account only to logged-in users. To read more, paste the cookies of your own logged-in weibo.com session in
cookies(SUB=…; SUBP=…, or a cookie export in JSON). We never ask for a password. The cookies are used only for those pages; they are not logged, stored or put in any row. Weibo may limit or lock an account that is used for automated reading — use an account for which you accept that risk.
A page is asked for only while the run still wants posts or comments of it and your run's maximum charge pays for at least one more; each page is delivered and charged before the next is asked for. A search, an account or a post that failed on our side (a lost connection, a server error after our retries, an answer we could not read, a visitor cookie Weibo would not issue — the lookup itself was then never asked) becomes a notice row (no charge) and the run goes on; one Weibo answered with a refusal of its own (a block, a rate limit, its login wall) is a lookup made: a lookup-refused row; the run-start fee stays charged once the run has looked something up.
Input
| Field | Type | Description |
|---|---|---|
searchQueries | array | Keywords, 1–100 characters each. Each search made is charged once as search-query, also one that returns no posts |
users | array | 1195230310, weibo.com/u/1195230310, m.weibo.cn/u/…, weibo.com/n/name, weibo.com/<alias> or @name → a profile row and the latest posts |
postUrls | array | weibo.com/<uid>/<mblogid>, m.weibo.cn/detail/<mid>, m.weibo.cn/status/<id>, a mid or an mblogid |
trendingTopics | integer | Search the top N topics of the hot search board (0–50, default 0) |
maxPostsPerSearch | integer | 1–1,000 (default 20). About 20 without cookies |
maxPostsPerUser | integer | 1–1,000 (default 20). About 10 without cookies |
commentsPerPost | integer | 0–1,000 (default 0), paid plans. Each comment is a comment row; each post whose comments Weibo answered also gets one comment-thread row (comment-thread-checked), also when it holds no comment or Weibo refused it |
aiTranslate | boolean | AI translation of each post with Chinese text (paid plans) |
aiSummary | boolean | One AI summary row per search and per account with 3+ posts; it reads up to 30 posts, the first 300 characters of each (paid plans) |
aiLanguage | string | en (default) or ko |
aiMaxItems | integer | The most posts and summaries sent to the model in a run (default 300, up to 5,000) |
cookies | string (secret) | Optional: your own weibo.com session cookies, paid plans |
proxyConfiguration | object | Off by default (see above) |
Field names of other Weibo scrapers work too: keywords / keyword / searchQuery, userIds / userId / userUrls, postIds / weiboId, cookieString, maxItems / maxResults.
{"searchQueries": ["新能源汽车", "华为"],"users": ["https://weibo.com/u/2803301701"],"maxPostsPerSearch": 20,"commentsPerPost": 20,"aiTranslate": true,"aiSummary": true,"aiLanguage": "en"}
Output
Every row has recordType. One dataset, several kinds of rows (the dataset has a view for each):
post — postId, mblogid, postUrl, text (full text of long posts; isLongText, fullTextFetched), createdAt (ISO), source (app), region, authorId, authorName, authorUrl, authorFollowers, authorVerified, authorVerifiedReason, likesCount, commentsCount, repostsCount, engagement, images, videoUrl, mediaType, isRepost, repostOf, hashtags, mentions, links, language, foundBy, translation (status, language, text), exists, billedEvents.
profile — uid, screenName, profileUrl, alias, description, gender, location, ipLocation, followersCount, followingCount, postsCount, verified, verifiedReason, avatarUrl, createdAt, birthday, company, sunshineCredit, labels, exists.
search — searchQuery, source (input or trending), trending (rank, heat, label), postsFound (on the pages read), pagesRead, postsDelivered, and totals of the delivered posts (aggregateOf: delivered-posts): topHashtags, engagementTotal, dateRange, languages, withMedia. It comes after the search's posts.
comment-thread — postId, status (checked or refused-by-weibo), weiboAnswer, weiboCommentCount, commentsAsked, commentsRead, commentsDelivered, pagesRead, stoppedBy, requests (every page asked for and Weibo's answer). It comes after the thread's comments.
lookup-refused — lookupKind (search, account or post), input, weiboAnswer (httpStatus, ok, said): a lookup Weibo answered with a refusal of its own instead of a result.
comment — commentId, postId, postUrl, text, createdAt, likesCount, repliesCount, floor, authorId, authorName, authorLocation, language.
summary (AI) — scope, language, summary, sentiment, themes (each with evidencePostIds), evidencePostIds, postsRead.
Notice rows (noticeCode, never charged) say what was skipped and why; the limits row at the end counts everything the run did, including which access layer answered.
{"recordType": "post","postUrl": "https://weibo.com/5642471321/RmDvFDk6o","createdAt": "2026-10-14T08:00:43.000Z","authorName": "谁是阿壳","text": "#谷歌发布Gemini4Argon# 平时喜欢蹲大模型更新 …","likesCount": 37, "commentsCount": 34, "repostsCount": 2, "engagement": 73,"hashtags": ["谷歌发布Gemini4Argon"], "language": "zh", "mediaType": "image","translation": { "status": "translated", "language": "en", "text": "#GoogleReleasesGemini4Argon# I like to keep up with model updates …" },"billedEvents": ["post", "post-translated"]}
AI layers (paid plans)
- Model: Anthropic Claude Haiku. When AI is on, the text of posts is sent to Anthropic's API (USA). Nothing else is sent: no cookies, no account data of yours.
- Weibo text is treated as data, never as instructions to the model.
- A translation is charged only after it passes our checks: it must not hand the post back untranslated and must not contain a number the post does not hold. Posts without Chinese text are not sent. The first 2,000 characters of a post are translated.
- A summary reads at most the first 30 posts of a search or an account, the first 300 characters of each. It is charged only if it cites posts of this run and writes no number those posts do not hold. Searches or accounts with fewer than 3 posts get no summary.
- Translations and summaries are asked only when your run's maximum charge still pays for them. When it no longer does, that AI layer goes off and the run goes on: the rest of the posts, comments and searches are still delivered up to your maximum charge, without it and without its charge. An
ai-stopped-charge-limitnotice row and the status message say which layer stopped and how many posts or summaries went without it.
Pricing
Pay per event. Prices are the FREE tier; BRONZE 20% off, SILVER 35% off, GOLD and up 48% off the collection events. AI events cost the same on every plan (each pays for a model call). Platform usage, including proxies, is included in the event prices.
| Event | When | FREE | BRONZE | SILVER | GOLD+ |
|---|---|---|---|---|---|
run-started | once per run that has something to look up | $0.005 | $0.004 | $0.00325 | $0.0026 |
search-query | each search Weibo returned pages for (also with 0 posts) | $0.01 | $0.008 | $0.0065 | $0.0052 |
post | each post row (also a post link Weibo says does not exist) | $0.004 | $0.0032 | $0.0026 | $0.00208 |
profile | each profile row (also an account Weibo says does not exist) | $0.005 | $0.004 | $0.00325 | $0.0026 |
comment | each comment row | $0.001 | $0.0008 | $0.00065 | $0.00052 |
comment-thread-checked | each post whose comments Weibo answered (also with 0 comments, or a refusal of Weibo's) | $0.002 | $0.0016 | $0.0013 | $0.00104 |
lookup-refused | each search, account or post address Weibo answered with a refusal of its own (HTTP 4xx, its login wall or its own "no") | $0.002 | $0.0016 | $0.0013 | $0.00104 |
post-translated | each checked AI translation | $0.003 | $0.003 | $0.003 | $0.003 |
topic-summary | each checked AI summary row | $0.03 | $0.03 | $0.03 | $0.03 |
post is this Actor's main event. Not charged: notice rows, the limits row, the same post or comment reached twice in one run, anything that failed on our side (a lost connection, a server error after our retries, an answer we could not read, a refusal or a "does not exist" after an attempt of ours failed, also before a restart), anything past your run's maximum charge (the run stops there and ends SUCCEEDED). Two runs with the same input at the same time each deliver and charge their own rows.
Limits and good to know
- Without cookies Weibo shows visitors the first page only (about 20 posts per search, about 10 per account). The run tells you so in a
first-page-onlynotice. - Counts like
authorFollowerscome from Weibo; on the mobile site they are rounded (105.8万→ 1,058,000;authorFollowersTextkeeps Weibo's text). - Weibo's own error for a deleted post or a closed account becomes a row with
exists: false(a completed lookup). Comments Weibo refuses to show (an HTTP 4xx, its login wall or its own refusal) are a completed lookup too: acomment-threadrow, charged once. A search, an account or a post Weibo refuses (an HTTP 4xx such as a block or a rate limit, its login wall or its own refusal) is a completed lookup too: alookup-refusedrow, charged once. An error on our side, and Weibo's refusal or "does not exist" after an error of ours, become a notice and are not charged. - If a run is restarted by the platform, rows already delivered are not delivered or charged again; the comments and summaries of posts delivered before the restart are still made.
maxPostsPerSearch,maxPostsPerUserandcommentsPerPosthold for the whole run: the posts and comments delivered before the restart count against them (also a post one search counted that another entry had delivered first), even when Weibo now lists newer ones first. When the platform's charge counts do not yet show the start fee or every row charged before the restart (they can come in a minute or two late), the run does not charge them again: it stops there with abilling-unavailablenotice and ends FAILED. The rows already in the dataset stay valid. To go on from there, resurrect that run a few minutes later (the Resurrect button of the run in Apify Console, or the API): it continues from its own dataset and does not deliver or charge those rows again; if the counts still do not show those charges, it stops there again. - A new run, even with the same input, starts over: it does not see an earlier run's dataset, so it looks up, delivers and charges again what that run already delivered. This holds also after a run stopped at your maximum charge.
Legal
This is an unofficial, independent tool. It is not affiliated with, endorsed by, or sponsored by Weibo, Sina or any of their companies. It reads what Weibo shows to visitors who are not logged in and, only if you add your own cookies, what your own session shows. Results contain posts, profiles and comments people published, which can include personal data. You are responsible for how you run this Actor and how you use its output: having the rights and a lawful basis for collecting and processing the data (for example under China's PIPL, the GDPR or the CCPA), complying with Weibo's terms and with the law where you use it. You are the data controller for the output.