Weibo Scraper: Posts, Comments & Profiles, No Login avatar

Weibo Scraper: Posts, Comments & Profiles, No Login

Pricing

from $1.90 / 1,000 result rows

Go to Apify Store
Weibo Scraper: Posts, Comments & Profiles, No Login

Weibo Scraper: Posts, Comments & Profiles, No Login

Scrape public Weibo (微博) data with no login: keyword search with date ranges, user profiles with their latest posts, post details by link and comments. Text, likes, reposts, comments, images, video, hashtags and region in clean rows, with a free status row for not-found inputs.

Pricing

from $1.90 / 1,000 result rows

Rating

0.0

(0)

Developer

Cliqto Media

Cliqto Media

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Scrape public Weibo data with no login. Search posts by keyword and date, read users' profiles and latest posts, or get full details for post links, with up to 40 comments per post. Each item is one clean row with full text, likes, reposts, comments, images, video, hashtags and region. A typical run with 10 rows takes about 8 seconds and costs $0.034 on the Free plan.

Use it for brand monitoring, trend research and audience studies on Weibo (微博), the Chinese microblogging platform. Start with the keyword 苹果 and 10 results.

Weibo keywords, post links and user IDs to post, comment and profile rows

Table of contents

What it does

The Actor has three modes. You pick one mode per run.

ModeYou giveYou get
searchUp to 20 keywords or hashtagsPost rows, newest first, up to 5,000 per keyword, with an optional date range
userUp to 100 user IDs or profile linksOne profile row per user, plus their latest posts (about 10)
postUp to 250 post links or IDsOne post row with full details for each post

In every mode you can turn on Include comments to add up to 40 comments per post (hot comments first, then the latest).

It reads the public guest pages of Weibo. It does not sign in, does not need your cookies, and does not read private or follower-only posts.

Data you get

  • Posts: post ID, short ID, URL, full text (long posts are expanded), created time, likes, reposts, comments, image URLs, video URL, cover and length, hashtags, mentions, region, source app, the original post of a repost, and the author's ID, name, verified flag and followers.
  • Comments: comment ID, post ID, text, created time, likes, reply count, region and the commenter's public name and ID.
  • Profiles: user ID, name, URL, public bio, followers, following, post count, verified flag and reason, location and avatar URL.
  • Status: one free row that lists inputs that were not found, invalid, duplicate or not processed, with a reason for each.

Quick start

  1. Open Input.
  2. Keep What to scrape as search, Search keywords as 苹果 and Max posts per keyword or user as 10.
  3. Click Start.
  4. Open the Posts tab of the Output to see the rows. Open Run summary to check each input.

The example returns 10 post rows in about 8 seconds. Search results are live and change every minute.

Input

Only mode is required. Each mode also needs its list: keywords for search, userIds for user, postIds for post. The new form prefills mode: "search", keywords: ["苹果"] and maxPosts: 10. The default build is latest.

FieldTypeDefault / prefillAllowed valuesWhat it changes / advice
modestringsearch / samesearch, user, postWhat to scrape. Only the list for this mode is used.
keywordsarray of stringsnone / ["苹果"]1–20 keywordsSearch mode. Chinese or English words, or hashtags like #topic#. Exact duplicates are merged.
userIdsarray of stringsnone1–100User mode. Numeric user ID (1669879400), https://weibo.com/u/1669879400 or https://m.weibo.cn/u/1669879400. Custom names like weibo.com/name are not supported.
postIdsarray of stringsnone1–250Post mode. https://m.weibo.cn/detail/<id>, https://weibo.com/<uid>/<short id>, a numeric ID (5343871682741457) or a short ID (RipiMbvb3). Short t.cn links are not supported.
maxPostsinteger100 / 101–5,000Search: posts per keyword. User: posts per user; Weibo shows guests only about the latest 10. Not used in post mode.
startDatestringemptyYYYY-MM-DDSearch mode. Oldest day to include, Beijing time.
endDatestringemptyYYYY-MM-DDSearch mode. Newest day to include (the whole day), Beijing time. Empty means up to now.
includeCommentsbooleanfalsetrue, falseAlso save comments of each post. Each comment is one paid row.
maxCommentsPerPostinteger201–40With includeComments. Weibo shows guests up to about 40 comments per post.
includeProfilebooleantruetrue, falseUser mode. false returns only the users' posts.
proxyConfigurationobject{"useApifyProxy": true}Apify Proxy settingsApify Proxy datacenter IPs work for Weibo. Keep the default.

How settings work together

  • startDate and endDate apply only in search mode. With a date range, the run walks back in time from endDate until startDate or maxPosts, whichever comes first.
  • maxPosts counts posts only. Comments and profile rows are extra rows on top of it.
  • In user mode, includeComments adds comments for each of the user's posts.

Input examples

Posts about two brands in October 2026:

{ "mode": "search", "keywords": ["华为", "比亚迪"], "maxPosts": 250, "startDate": "2026-10-01", "endDate": "2026-10-14" }

Returns up to 250 post rows per keyword from that date range, newest first, with keyword set on each row.

Profiles and latest posts of two users:

{ "mode": "user", "userIds": ["1669879400", "https://weibo.com/u/1195230310"], "maxPosts": 10 }

Returns two profile rows and about 10 post rows per user.

One post with its comments:

{ "mode": "post", "postIds": ["https://m.weibo.cn/detail/5343871682741457"], "includeComments": true, "maxCommentsPerPost": 40 }

Returns one post row and up to 40 comment rows.

Output

All rows go to the default Dataset. The type field tells the row kind: post, comment, profile or status.

Output examples

A post row (video and avatar links shortened; signed CDN links expire, see Limitations):

{
"type": "post",
"postId": "5343871682741457",
"bid": "RipiMbvb3",
"url": "https://m.weibo.cn/detail/5343871682741457",
"userId": "6529876887",
"userName": "老师好我叫何同学",
"userVerified": true,
"userFollowers": 3909000,
"text": "iPhone 18 Pro系列的首发体验视频来了!希望大家喜欢!#何同学##iPhone18上手评测##苹果发布会##苹果发布会有何亮点# 老师好我叫何同学的微博视频",
"textTruncated": false,
"createdAt": "2026-09-16T20:29:16+08:00",
"reposts": 550,
"comments": 323,
"likes": 4430,
"countsCapped": false,
"images": [],
"video": {
"url": "https://f.video.weibocdn.com/o0/KqY4XIfNlx08AQGVnw3S010412092Cjm0E040.mp4?label=mp4_720p&…",
"cover": "https://wx4.sinaimg.cn/orj480/0077UHgXly1ih5sd4iqooj31hc0u0hdt.jpg",
"durationSec": 1316
},
"hashtags": ["何同学", "iPhone18上手评测", "苹果发布会", "苹果发布会有何亮点"],
"mentions": [],
"region": "浙江",
"sourceApp": "微博视频号",
"repostOf": null,
"keyword": null,
"input": "5343871682741457",
"fetchedAt": "2026-10-15T04:06:33.763Z"
}

A comment row (commenter shortened):

{
"type": "comment",
"commentId": "5343902530801751",
"postId": "5343871682741457",
"userId": "1783…",
"userName": "李…",
"text": "何同学还是稳啊,每年都能搞出新名堂,今年还搭了个实景边转场边讲解,很牛逼。[good]",
"createdAt": "2026-09-16T22:31:51+08:00",
"likes": 83,
"replies": 2,
"region": "广东",
"replyToCommentId": null,
"input": "5343871682741457",
"fetchedAt": "2026-10-15T04:06:36.224Z"
}

A profile row:

{
"type": "profile",
"userId": "1669879400",
"userName": "Dear-迪丽热巴",
"url": "https://weibo.com/u/1669879400",
"description": "一只喜欢默默表演的小透明。工作联系[email removed] 🍒",
"followers": 82550492,
"following": 294,
"postsCount": 1937,
"verified": true,
"verifiedReason": "嘉行传媒签约演员",
"location": "上海",
"avatar": "https://tvax1.sinaimg.cn/crop.0.0.1080.1080.1024/63885668ly8geyrcrw0zjj20u00u0mz6.jpg?KID=imgbed,tva&…",
"input": "1669879400",
"fetchedAt": "2026-10-15T04:09:45.307Z"
}

Post fields

FieldTypeNull?Meaning / example
postIdstringnoNumeric post ID, e.g. 5343871682741457.
bidstringyesShort post ID used in weibo.com links, e.g. RipiMbvb3.
urlstringnoPublic post URL.
userIdstringyesAuthor user ID.
userNamestringyesAuthor public name.
userVerifiedbooleanyestrue for a verified account.
userFollowersintegeryesAuthor followers. Exact in user mode; search and post mode can be rounded by Weibo (e.g. 3909000).
textstringnoPost text, HTML removed. Can be "" for a post with only images or video.
textTruncatedbooleannotrue when Weibo did not serve the full text of a long post and the row has the preview.
createdAtstringyesPost time, ISO with Beijing offset +08:00.
repostsintegeryesRepost count.
commentsintegeryesComment count.
likesintegeryesLike count.
countsCappedbooleannotrue when Weibo shows a counter as "1,000,000+" (the field is then 1000000).
imagesarray of stringsnoImage URLs, largest size. [] when none.
videoobjectyesurl, cover, durationSec. Null for posts without video.
hashtagsarray of stringsnoHashtags without #.
mentionsarray of stringsnoMentioned user names without @.
regionstringyes"Posted from" region shown by Weibo, e.g. 浙江.
sourceAppstringyesClient or source label, e.g. 微博视频号.
repostOfobjectyesFor a repost: the original postId, bid, userId, userName and text. Null otherwise.
keywordstringyesThe search keyword in search mode, else null.
inputstringnoThe input line that produced the row.
fetchedAtstringnoUTC fetch time, ISO format.

Comment fields

FieldTypeNull?Meaning / example
commentIdstringnoComment ID.
postIdstringnoThe post the comment belongs to.
userIdstringyesCommenter user ID.
userNamestringyesCommenter public name.
textstringnoComment text, HTML removed; emoji codes stay as [good].
createdAtstringyesComment time, ISO +08:00.
likesintegeryesLikes on the comment.
repliesintegeryesNumber of replies. Replies themselves are not collected.
regionstringyesCommenter region shown by Weibo.
replyToCommentIdstringyesParent comment ID when Weibo gives it; usually null.
inputstringnoThe input line.
fetchedAtstringnoUTC fetch time.

Profile fields

FieldTypeNull?Meaning / example
userIdstringnoUser ID, e.g. 1669879400.
userNamestringnoPublic name.
urlstringnoProfile URL.
descriptionstringyesPublic bio. E-mail addresses and phone numbers are replaced with [email removed] / [phone removed].
followersintegeryesExact follower count.
followingintegeryesAccounts the user follows.
postsCountintegeryesTotal posts on the profile.
verifiedbooleanyestrue for a verified account.
verifiedReasonstringyesVerification text, e.g. 嘉行传媒签约演员.
locationstringyesLocation from the profile.
avatarstringyesAvatar image URL (signed, expires).
inputstringnoThe input line.
fetchedAtstringnoUTC fetch time.

Status row

When some inputs give no new data, the run adds one free type: "status" row. It has a message (for example 2 input(s) returned no new data: 1 not found, 1 duplicate, 0 failed or not processed. Free row.) and an inputs list. Each entry has input, status (not_found, error, duplicate or not_processed), code and reason.

Output tabs

The Output has Posts, Profiles and Comments tabs and a Run summary. The Dataset also has a Skipped, not found and errors view for status rows. Each view shows the columns for its row kind. Apify Dataset views cannot filter rows, so every view lists all rows of the run, and rows of other kinds show empty cells. For clean exports, filter by type or use the JSON export.

Run summary is the RUN_SUMMARY record in the default key-value store. It has status, partialReason, message, counts (rows by kind, charged rows, inputs complete, partial, not found, errors, not processed), per-input inputs, http (requests, retries, blocks) and timing.

SituationDatasetRun result
Results foundData rowsSucceeded, COMPLETE.
Keyword matches nothingEmptySucceeded, NO_RESULTS. Not an error.
Post or user does not exist or is hiddenStatus row lists itSucceeded. NOT_FOUND when nothing at all was found.
Same post or user given twiceOne data row; status duplicateSucceeded. The repeat is not charged.
Your maximum cost per run reachedRows that fit the budgetSucceeded, partial CHARGE_LIMIT. Other inputs are not_processed.
Run time almost overRows saved so farSucceeded, partial TIME_LIMIT. The status message tells you to raise the timeout or split the input.
Weibo refuses or fails repeatedlyRows saved so far stayFailed, partial SOURCE_ERROR. Not the same as "no results".
Invalid inputEmptyFailed before any Weibo request.

Coming from another Weibo scraper

Field names are this Actor's own, and counters are numbers, not strings. The common fields map like this:

Other Weibo scrapersThis Actor
weiboId, idpostId
bidbid
userId, user_iduserId
screenName, screen_nameuserName
repostCount, reposts_countreposts
commentCount, comments_countcomments
attitudeCount, attitudes_countlikes
postedAt, created_atcreatedAt (ISO +08:00)
topicshashtags
atUsersmentions
regionName, region_nameregion (without 发布于)
picUrls, picsimages
weiboPageUrlurl
followersCount, followers_countfollowers
friendsCount, friends_countfollowing
statusesCount, statuses_countpostsCount

Pricing and limits

Pay per event: a start fee per run plus each saved data row (post, comment or profile). The status row is free. Platform compute and proxy traffic are included.

PlanStart fee per runPer data rowPer 1,000 rows, excluding start
Free$0.009$0.0025$2.50
Bronze$0.009$0.0023$2.30
Silver$0.009$0.0021$2.10
Gold / Platinum / Diamond$0.009$0.0019$1.90

The start fee is charged once per run (the Actor runs with up to 512 MB). It also applies when nothing is found. Duplicates, not-found inputs and invalid inputs are not charged as rows. Partial and failed runs charge only the start fee and the rows that were saved.

Saved rowsFree-plan totalGold-plan total
0$0.009$0.009
1$0.0115$0.0109
10$0.034$0.028
100$0.259$0.199
1,000$2.509$1.909
5,000$12.509$9.509

These are price calculations, not promised result counts. Set Maximum cost per run to control spending. The run stops cleanly when it reaches your limit.

Limits per run: 20 keywords and up to 5,000 posts per keyword, 100 users, 250 posts in post mode, 40 comments per post. Measured on Apify with 256 MB: 10 search rows in about 8 s, 500 rows in 130 s, 2,000 rows in 425 s, 5,000 rows in about 20 minutes (timeout raised to 2,400 s). 12 users with their posts (112 rows) in 19 s, 7 posts with 76 comments in 10 s. The default timeout is 300 seconds, which fits about 1,300 search rows; raise it for larger runs. A run stops at 30 minutes of work at the latest and saves what it has. Search runs that ask for more than 2,000 posts in total get 512 MB automatically; other runs use 256 MB.

Use cases

TaskInputUseful fieldsNext step
Monitor a brand or productsearch, brand keywords, startDatetext, likes, reposts, createdAt, regionTrack mentions and engagement by day.
Follow a trending hashtagsearch, #topic#, maxPosts: 1000hashtags, mentions, userFollowersFind the accounts that drive the topic.
Study audience reactionspost with post links, includeCommentscomment text, likes, regionRun sentiment or keyword analysis.
Benchmark creators and brandsuser with user IDsfollowers, postsCount, verifiedReason, postsCompare accounts and their latest posts.

Scheduling and monitoring

You can save the input as an Apify task and schedule it, for example daily for the same keywords with startDate set to yesterday. Each run is a new snapshot and is charged normally. There is no "only new items" mode. Compare snapshots in your own system by postId, commentId or userId and fetchedAt.

API, export and integrations

Start the Actor with the Apify API using the same JSON input. When the run ends, read the default Dataset and the RUN_SUMMARY record. Export as JSON, CSV, Excel or XML from the Dataset. images, hashtags and mentions are lists; in CSV they become several columns.

Apify webhooks, Make, Zapier and n8n can start runs and pass the Dataset ID on. Use postId as the key for posts, commentId for comments and userId for profiles.

Use with AI agents (MCP)

Add https://mcp.apify.com?tools=cliqtomedia/weibo-scraper to your MCP client. A small input:

{ "mode": "search", "keywords": ["苹果"], "maxPosts": 10 }

Read text, url, likes, reposts, comments, hashtags and createdAt. This run took about 8 seconds and costs $0.034 on the Free plan. Check RUN_SUMMARY.status before you treat a partial run as complete.

Limitations and partial results

  • Weibo search is live: the same keyword gives different posts minutes later. Use startDate and endDate for repeatable windows.
  • Weibo shows guests only about the latest 10 posts of a user. For older posts of an account, search by its name or topic with dates.
  • Guests see up to about 40 comments per post (hot first, then latest). Replies to comments are counted in replies but not collected.
  • Counters over one million are shown by Weibo as "100万+"; the row then has 1000000 and countsCapped: true.
  • Video and avatar links are signed by Weibo's CDN and stop working after about 1–3 hours. Download media soon after the run if you need it. Image links do not expire.
  • Posts that are deleted, private, follower-only or hidden from guests get status not_found.
  • The Actor waits about 1 second between requests on each of 3 guest sessions to stay polite.
  • Bios can hold contact details. E-mail addresses and phone numbers are removed from bios and texts of profiles; treat the rest of the data as personal data.
  • This Actor is not affiliated with or endorsed by Weibo or Sina. It reads public data only, without login. Use the data in line with Weibo terms and local law, and respect the privacy of users and commenters.

Troubleshooting

SymptomPossible reasonCheckAction
Run fails with "Invalid input"Missing list for the mode, or a value over a limitThe message in the run logUse an example above and change one field at a time.
NO_RESULTSNo posts for the keyword in the date rangeSearch the keyword on weibo.comWiden the dates or change the keyword.
NOT_FOUND, no data rowsPosts or users do not exist or are hidden from guestsThe status rowOpen the link in a browser while logged out.
INVALID_INPUT for a user name linkweibo.com/name links are not supportedThe status rowOpen the profile and copy the numeric ID from weibo.com/u/<id>.
Partial CHARGE_LIMITYour maximum cost per run was reachedcounts.chargedRows in Run summaryRaise the limit if you need more rows.
Partial TIME_LIMITToo much work for the run timeoutStatus messageRaise the timeout or split the input into several runs.
Partial SOURCE_ERRORWeibo refused or failed repeatedlyhttp.blocked in Run summaryRun again later; keep the default Apify Proxy.
Video link gives 403The signed CDN link expiredfetchedAt of the rowRun again and download the video right away.

FAQ

Do I need a Weibo account or cookies?

No. The Actor uses public guest access. Do not add your cookies.

Can I get posts older than the latest 10 of a user?

Not in user mode, because Weibo hides them from guests. Search mode with startDate and endDate reaches older posts by keyword.

Are short IDs and numeric IDs both supported?

Yes. RipiMbvb3, 5343871682741457 and the full link point to the same post, and the Actor saves and charges it once.

Why did a search return fewer rows than maxPosts?

Weibo had fewer posts for that keyword in the date range.

Do empty runs cost money?

Only the start fee of $0.009. Inputs that are not found do not create paid rows.

Is the data the same as on the website?

Yes, it comes from the same public pages. Counters change quickly, so values can differ a little minutes later.

Support

Use the Actor's Issues tab for questions or bugs. Include the run ID and the error code from the Run summary. Do not send API tokens or cookies.