Weibo Comments API — Comments on a Post
Documentation menu
FetchLayer FetchLayer API

Read the comments on a post

The comments on a Weibo post, most-liked first (hot) or newest first (latest), each with its likes, reply count, a few inline replies and where the commenter posted from. Very large threads stop at a few hundred comments (about 300 hot, about 740 latest), however many Weibo counts, and notes says so. 1 credit per 20 comments.

POST /post-comments Posts & comments
https://api.fetchlayer.dev/weibo/post-comments
OpenAPI JSON

Headers

Authorization string required

Bearer token — your FetchLayer API key.

Parameters

post string required

A post: its link (weibo.com/<user>/<id> or m.weibo.cn/detail/<id>), its numeric id, or the short id from its link (RmPD8ERtm in weibo.com/1642634100/RmPD8ERtm).

sort string optional

hot: most-liked first, as Weibo ranks them. latest: newest first. Case-insensitive. (default: hot)

limit integer optional

Maximum comments returned, up to 1000, or -1 for the maximum. Each 20 comments returned is 1 credit, minimum 1. (default: 20)

cursor string optional

Continue from a previous response’s nextCursor, passed back unchanged with the same post and sort.

format string optional

json or markdown, lowercase; any other value is a 400. Over MCP, markdown returns the result rendered as text; the REST API accepts it and returns JSON. (default: json)

timeoutMs integer optional

Time limit for the whole request, in milliseconds (1000–120000); a value outside that range is a 400. When it runs out, a paged request returns what it has with nextCursor, billed for the pages it read; a request with nothing to return yet fails with a 503 you can retry, marked with the response header X-Timeout-Source: caller.

Response Fields

post-comments

Read the comments on a post

transport string

The data source: always the platform id, "weibo".

scrapedAt string

When the result was produced (ISO 8601).

notes string[]

Caveats you can act on: a list that ends where Weibo stops showing more, long posts shortened in a list, paid placements left out. Empty when there are none. An empty result always comes with a note explaining it.

skippedRecords object[]

Records Weibo sent that could not be read, each as { id, reason, fieldsPresent }; id may be null. Normally empty. One unreadable record never costs the rest of the response or the cursor.

pagesFetched number

Full pages of results returned, minimum 1 — 20 comments or replies, 50 search posts, 48 media posts — which is what the request costs: one credit each.

postId string

The post’s numeric id.

sort string

The order the comments came back in.

totalCount number

Weibo’s own comment count for the post, which includes replies, so it is higher than the comments a full walk returns.

comments object[]

The comments. A post with none that Weibo shows publicly returns an empty list with a note; comments on a post that does not exist are a 404.

comments[].id string

The comment’s id, which comment-replies takes as commentId.

comments[].text string

The comment’s text.

comments[].createdAt string

When it was posted (ISO 8601, UTC).

comments[].postedFrom string | null

The province or country Weibo says the commenter posted from, or null.

comments[].likes number

Likes on the comment.

comments[].replyCount number | null

Replies under it in total; comment-replies reads them.

comments[].previewReplies object[]

The few replies Weibo shows inline under the comment, in the same shape. Usually fewer than replyCount.

comments[].replyToCommentId string | null

The comment this one answers, or null for a top-level comment.

comments[].rootCommentId string

The top-level comment of the thread it belongs to.

comments[].author.id string

The account’s numeric id, which user-profile and user-posts accept.

comments[].author.screenName string

The display name.

comments[].author.url string

Link to the profile.

comments[].author.avatarUrl string | null

Avatar image.

comments[].author.verified boolean

Whether Weibo shows a verification badge.

comments[].author.verifiedReason string | null

Weibo’s verification text, such as 新浪科技官方微博, or null.

comments[].author.followersCount number | null

Followers as an exact figure where Weibo publishes one here, else null. user-profile always has the exact figure.

comments[].author.followersCountText string | null

Followers as Weibo displays them, rounded (2380万 is 23.8 million).

comments[].floor number

Weibo’s position number for the comment in the thread, or 0 for a reply.

comments[].imageUrls string[]

Images attached to the comment.

commentCount number

How many comments are in this response.

hasMore boolean

Whether more comments exist beyond what was returned.

nextCursor string | null

An opaque token to pass back unchanged as cursor, with the same request, to continue where this response stopped. null when there is nothing further.

Request

curl -X POST "https://api.fetchlayer.dev/weibo/post-comments" \
  -H "Authorization: Bearer ss-your-key" \
  -H "Content-Type: application/json" \
  -d '{"post":"5354374692867529","sort":"hot","limit":20}'

Response

{
  "transport": "weibo",
  "skippedRecords": [],
  "scrapedAt": "2026-10-15T15:25:22.762Z",
  "notes": [],
  "pagesFetched": 1,
  "postId": "5354374692867529",
  "sort": "hot",
  "totalCount": 234,
  "comments": [
    {
      "id": "5354375000365421",
      "text": "全天不允许按喇叭?那买喇叭是用来?",
      "createdAt": "2026-10-15T12:05:42.000Z",
      "postedFrom": "江苏",
      "likes": 80,
      "replyCount": 10,
      "previewReplies": [],
      "replyToCommentId": null,
      "rootCommentId": "5354375000365421",
      "author": {
        "id": "7752365556",
        "screenName": "半岛铁壳202204",
        "url": "https://weibo.com/u/7752365556",
        "verified": false,
        "verifiedReason": null,
        "followersCount": 177,
        "followersCountText": "177"
      },
      "floor": 1,
      "imageUrls": []
    }
  ],
  "commentCount": 20,
  "hasMore": true,
  "nextCursor": "eyJ2IjoxLCJyIjoicG9zdC1jb21tZW50cyIs…"
}