Weibo Scraper - Posts, Search, Profiles & AI Translation avatar

Weibo Scraper - Posts, Search, Profiles & AI Translation

Pricing

from $2.08 / 1,000 posts

Go to Apify Store
Weibo Scraper - Posts, Search, Profiles & AI Translation

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

daehwan kim

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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 runthe 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 rows1 per run, in fullup to maxPostsPerSearch / maxPostsPerUser (default 20, up to 1,000 each)
Profile rowsthe first entry's account, in full (when it is an account)every account
Search rowhow many posts the pages held; its hashtag and engagement totals are of the one post showntotals of every post delivered
Pages past the first (with your own cookies)locked — your cookies are not usedyes
Comment rowslockedup to commentsPerPost per post (up to 1,000)
AI translation (English / Korean)locked — a free run asks no modelper post, checked before it is charged
AI topic summary per search / accountlockedone 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 takein 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—
Pricethe event prices below (FREE tier)the event prices with plan discounts
Apify planDiscount on every collection event
FREE—
BRONZE20%
SILVER35%
GOLD, PLATINUM, DIAMOND48%

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: trendingTopics reads 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)

  1. 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.
  2. 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.
  3. 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

FieldTypeDescription
searchQueriesarrayKeywords, 1–100 characters each. Each search made is charged once as search-query, also one that returns no posts
usersarray1195230310, weibo.com/u/1195230310, m.weibo.cn/u/…, weibo.com/n/name, weibo.com/<alias> or @name → a profile row and the latest posts
postUrlsarrayweibo.com/<uid>/<mblogid>, m.weibo.cn/detail/<mid>, m.weibo.cn/status/<id>, a mid or an mblogid
trendingTopicsintegerSearch the top N topics of the hot search board (0–50, default 0)
maxPostsPerSearchinteger1–1,000 (default 20). About 20 without cookies
maxPostsPerUserinteger1–1,000 (default 20). About 10 without cookies
commentsPerPostinteger0–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
aiTranslatebooleanAI translation of each post with Chinese text (paid plans)
aiSummarybooleanOne 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)
aiLanguagestringen (default) or ko
aiMaxItemsintegerThe most posts and summaries sent to the model in a run (default 300, up to 5,000)
cookiesstring (secret)Optional: your own weibo.com session cookies, paid plans
proxyConfigurationobjectOff 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-limit notice 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.

EventWhenFREEBRONZESILVERGOLD+
run-startedonce per run that has something to look up$0.005$0.004$0.00325$0.0026
search-queryeach search Weibo returned pages for (also with 0 posts)$0.01$0.008$0.0065$0.0052
posteach post row (also a post link Weibo says does not exist)$0.004$0.0032$0.0026$0.00208
profileeach profile row (also an account Weibo says does not exist)$0.005$0.004$0.00325$0.0026
commenteach comment row$0.001$0.0008$0.00065$0.00052
comment-thread-checkedeach post whose comments Weibo answered (also with 0 comments, or a refusal of Weibo's)$0.002$0.0016$0.0013$0.00104
lookup-refusedeach 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-translatedeach checked AI translation$0.003$0.003$0.003$0.003
topic-summaryeach 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-only notice.
  • Counts like authorFollowers come from Weibo; on the mobile site they are rounded (105.8万 → 1,058,000; authorFollowersText keeps 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: a comment-thread row, 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: a lookup-refused row, 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, maxPostsPerUser and commentsPerPost hold 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 a billing-unavailable notice 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.

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.