Weibo Scraper: Posts, Search, User Profiles & Comments avatar

Weibo Scraper: Posts, Search, User Profiles & Comments

Pricing

$4.00 / 1,000 item returneds

Go to Apify Store
Weibo Scraper: Posts, Search, User Profiles & Comments

Weibo Scraper: Posts, Search, User Profiles & Comments

Export Weibo posts by keyword, user or post URL with full text, repost, comment and like counts, pictures and video URLs, plus user profiles with exact follower counts and comments. $4 per 1,000 rows; no Weibo login or cookies.

Pricing

$4.00 / 1,000 item returneds

Rating

0.0

(0)

Developer

Changefeeds Tools

Changefeeds Tools

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

  • What you get: Weibo (新浪微博) posts with full text, repost, comment and like counts, pictures, video URL, author, posting region and the reposted original; user profiles with exact follower counts and verification; and top-level comments.
  • Inputs: search keywords, user ids or profile URLs, and post URLs, mixed in one run. No Weibo account and no cookies from you: it uses the anonymous visitor cookie Weibo gives every browser.
  • Price: $4 per 1,000 rows (posts, profiles or comments), proxy included. Failed inputs are free.

Sample output

The prefilled input (user 1669879400, 10 posts), run on 2026-10-23, returned one profile row and 10 post rows. The profile: Dear-迪丽热巴, 82,548,688 followers, 294 following, 1,939 posts, verified ("嘉行传媒签约演员"), location 上海. Five of the posts:

biddatetext (start)repostscommentslikespicsvideo
Rnvl7xXo12026-10-20百年匠心传承,只为此刻融情。感受Lindt瑞士莲巧克力在舌尖悄然绽放1,000,000 (capped)1,000,000 (capped)5,358,6660yes
RlZog45UR2026-10-10忙碌间隙,别忘了给自己留15分钟的松弛时间1,000,000 (capped)1,000,000 (capped)3,265,9530yes
RkxApEnWy2026-09-30#迪奥二零二七夏季女装秀# 以时装为载体1,000,000 (capped)1,000,000 (capped)20,294,1311no
Rknb371Yx2026-09-29已经做好了美美的看秀妆造1,000,000 (capped)1,000,000 (capped)7,873,7179no
RjLlrBL6d2026-09-25都吃月饼了嘛😋1,000,000 (capped)1,000,000 (capped)2,873,5116no

"Capped" is Weibo's own "100万+" display limit: the real count is at least 1,000,000, and the row says so with countsCapped: true.

One post row in full (textHtml shortened):

{
"type": "post",
"id": "5348956699625162",
"mid": "5348956699625162",
"bid": "RkxApEnWy",
"url": "https://weibo.com/1669879400/RkxApEnWy",
"createdAt": "2026-09-30T13:15:19.000Z",
"text": "#迪奥二零二七夏季女装秀# 以时装为载体,呈现了一场关于经典艺术与浪漫诗意的时尚美学。很幸运能在现场沉浸式欣赏,感谢@DIOR迪奥 邀请。",
"textHtml": "<a href=\"https://m.weibo.cn/search?containerid=231522type%3D1%26t%3D10%26q%3D%2…",
"isLongText": false,
"fullTextFetched": false,
"reposts": 1000000,
"comments": 1000000,
"likes": 20294131,
"countsCapped": true,
"pics": ["https://wx3.sinaimg.cn/mw2000/001P0DUIgy1ihm06574scj642z53du1302.jpg"],
"videoUrl": null,
"videoCover": null,
"user": { "id": "1669879400", "screenName": "Dear-迪丽热巴", "followers": null, "followersText": "8254.9万", "verified": true },
"retweeted": null,
"source": null,
"region": "法国",
"input": "1669879400",
"inputType": "user",
"scrapedAt": "2026-10-23T03:49:51.375Z"
}

And the profile row (avatar shortened):

{
"type": "user",
"id": "1669879400",
"screenName": "Dear-迪丽热巴",
"url": "https://weibo.com/u/1669879400",
"description": "一只喜欢默默表演的小透明。工作联系jaywalk@jaywalk.com.cn 🍒",
"followers": 82548688,
"followersText": "8254.9万",
"following": 294,
"statusesCount": 1939,
"verified": true,
"verifiedType": 0,
"verifiedReason": "嘉行传媒签约演员",
"gender": "f",
"location": "上海",
"avatar": "https://tvax1.sinaimg.cn/crop.0.0.1080.1080.1024/63885668ly8geyrcrw0zjj20u00u0mz6.jpg?…",
"customDomain": null,
"input": "1669879400",
"scrapedAt": "2026-10-23T03:49:51.375Z"
}

How to run in 30 seconds

  1. Click Try for free. The input already holds the user 1669879400 and 10 posts.
  2. Click Start. Our test run of that input took 15 seconds and cost $0.044 (1 profile, 10 posts).
  3. Open the Output tab, or export the dataset as CSV, JSON or Excel.

For your own data, replace the user with uids or profile URLs, or fill in Search keywords or Post URLs instead. Tick Include comments to add comments for every post the run returns.

Pricing

  • $0.004 per row returned ($4 per 1,000 post, user or comment rows). Proxy traffic is included.
  • Free: failed inputs (not_found, invalid, blocked, error).
  • If you set a maximum total charge, the actor stops before fetching pages it could not sell, and says so in OUTPUT.stopped_reason ("max_total_charge_reached").

FAQ

Do I need a Weibo account or cookie? No. The actor gets Weibo's anonymous visitor cookie itself, as a browser does on its first visit.

Why did a keyword return fewer posts than I asked for? Logged-out Weibo search serves only the first page of each tab. OUTPUT.truncated says so.

Can I get a user's full history? Their newest posts plus their full video history, yes. Older text and photo posts need a logged-in session, which this actor does not use.

What is the difference between mid and bid? The same post id in two encodings: mid is numeric (5348645916642028), bid is the base62 form in weibo.com URLs (Rkpv9rRTu). Both are on every post row.

Limits

  • Logged-out Weibo shows only so much, and this actor never logs in. Weibo serves visitors the first page of each feed and asks for a login from page 2:
    • Search returns at most the first page of six search tabs (top, latest, hot, pictures, videos, one more), merged and de-duplicated. For "华为" that was 87 distinct posts; niche keywords give fewer.
    • User posts come from the first page of the timeline and profile tabs (roughly the newest 10 to 25 posts), then from the video wall, which does paginate logged-out. Beyond the first couple of dozen posts you therefore get video posts only. The run reports this in OUTPUT.truncated as logged_out_limit.
    • Comments come from weibo.com's paginated comments endpoint (top-level, hot order). Replies to comments are counted in replies, not returned as rows. If that endpoint fails, the actor falls back to the mobile hot-comments feed, which gives only its first page.
  • Reposted posts are summarised from what Weibo sends with the repost; a long original is not expanded.
  • Rate limits and login walls. When Weibo answers "login required" or HTTP 418, the actor gets a fresh visitor cookie, then moves to a new proxy session, up to 8 times for that request, and only then gives up that input with a free blocked row. Residential proxy is the default for that reason.
  • Counts are a snapshot, and Weibo caps displayed reposts and comments at 1,000,000 (see countsCapped).
  • Polite by design: about 400 ms between requests, at most two inputs in flight, HTTP 429/5xx retried with backoff (Retry-After honoured up to 60 s, 3 retries), 20 s timeouts. No CAPTCHA solving, no accounts.
  • Public data only. Private accounts, deleted posts and anything that needs a login are out of scope.

Input reference

You can mix the three kinds of input in one run.

FieldTypeDefaultWhat it does
searchKeywordslist of stringsnoneEach keyword returns up to maxItems posts from Weibo search.
userslist of stringsnoneEach user returns one profile row plus up to maxItems of their posts. Accepts 1669879400, weibo.com/u/<uid>, weibo.com/<uid>, weibo.com/<custom domain>, weibo.com/n/<screen name>, m.weibo.cn/u/<uid>, m.weibo.cn/profile/<uid>, @<screen name>.
postUrlslist of stringsnoneEach returns one post row. Accepts weibo.com/<uid>/<bid>, m.weibo.cn/detail/<mid>, m.weibo.cn/status/<bid>, weibo.com/detail/<mid>, or a bare mid (5348645916642028) or bid (Rkpv9rRTu).
includeCommentsbooleanfalseAlso return comments for every post the run returns.
maxItemsinteger50Max posts per keyword and per user (1 to 1,000).
maxCommentsinteger20Max comments per post (1 to 1,000).
proxyproxy settingsApify residentialSee Limits. Proxy traffic is included in the price.
{ "searchKeywords": ["华为"], "maxItems": 100 }
{ "postUrls": ["https://weibo.com/1669879400/Rkpv9rRTu"], "includeComments": true, "maxComments": 45 }

Output reference

A comment row (live run, 2026-09-30):

{
"type": "comment",
"id": "5348546372437370",
"postId": "5348478804824358",
"postBid": "Rkl9Ckf2e",
"createdAt": "2026-09-29T10:04:49.000Z",
"text": "我怎么我今天去线下,promax是12g开头啊🙀",
"textHtml": "我怎么我今天去线下,promax是12g开头啊🙀",
"likes": 1,
"replies": 5,
"floor": 11,
"region": "浙江",
"user": { "id": "7875740762", "screenName": "共鸣198108", "followers": 73, "verified": false },
"scrapedAt": "2026-09-30T05:24:40.125Z"
}

A failed input gets one free status row instead, and the run carries on:

{ "type": "status", "input": "Qa1b2c3d4", "inputType": "post", "status": "not_found", "error": "Post not found (deleted, private, or never existed).", "checkedAt": "2026-09-30T05:26:04.091Z" }

status is not_found, invalid (not a uid, URL or id this actor recognises), blocked (Weibo still asked for a login after a fresh visitor cookie and every proxy rotation), or error (any other failure).

  • Long posts that Weibo truncates are expanded with one extra request (isLongText, fullTextFetched).
  • user.followers on post rows is null when Weibo gives only a rounded figure there ("8254.9万"); the rounded string is in followersText, and the user profile row has the exact count.
  • region is the posting region Weibo shows ("发布于 上海"); source is the posting client when Weibo gives one.
  • Picture and avatar URLs are Weibo's CDN links; video URLs are signed and expire after a few hours, so download promptly if you need the files.

The key-value store record OUTPUT summarises the run: rows by type, the charged count, stopped_reason, HTTP requests, proxy rotations, response bytes, and a truncated list naming every keyword, user or post that returned fewer rows than you asked for, with the reason (logged_out_limit, max_total_charge_reached, repeated_cursor or error). Every run leaves at least one dataset row.