Weibo Post API — One Post with Exact Counts
Documentation menu
FetchLayer FetchLayer API

Get one post in full

One public Weibo post in full: the complete text, author, time and place of posting, exact repost, comment, like and read counts, topics, photos and video, and the post it reposts. 1 credit.

POST /post-detail Posts & comments
https://api.fetchlayer.dev/weibo/post-detail
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).

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-detail

Get one post in full

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.

post object

The post. A post that does not exist or is not public is a 404 naming it.

post.id string

The post’s numeric id, which post-detail and post-comments accept.

post.shortId string

The id in post links (RmPD8ERtm). post-detail and post-comments accept it too.

post.url string

Link to the post.

post.text string

The post’s text, with #topics# and @mentions as written.

post.textTruncated boolean

True when a list shortened a long post. post-detail always returns the full text.

post.createdAt string

When it was posted (ISO 8601, UTC).

post.postedFrom string | null

The province or country Weibo says it was posted from, such as 广东, or null.

post.source string | null

The app or label Weibo shows under the post.

post.author.id string

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

post.author.screenName string

The display name.

post.author.url string

Link to the profile.

post.author.avatarUrl string | null

Avatar image.

post.author.verified boolean

Whether Weibo shows a verification badge.

post.author.verifiedReason string | null

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

post.author.followersCount number | null

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

post.author.followersCountText string | null

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

post.stats object

reposts, comments, likes and reads. Exact figures, not the rounded ones on the page. A null counter means Weibo did not publish that value, never zero; reads is often null.

post.roundedStats string[]

Which counters in stats came back rounded. Empty means every counter is exact, which is the normal case.

post.topics string[]

The #topics# the post carries, without the #.

post.media object[]

Photos and video, in order. Each has kind (image, gif, video or live-photo), url, downloadUrl, width, height, durationSeconds and coverUrl.

post.media[].url string

Weibo’s own link to the file. It opens only from Weibo’s pages; use downloadUrl.

post.media[].downloadUrl string

A https://api.fetchlayer.dev/weibo/media link that opens anywhere and delivers the photo or video. Each request to it costs 1 credit.

post.editCount number | null

How many times the post was edited, or null.

post.isPinned boolean

Whether the author pinned it to their profile.

post.mediaTruncated boolean

True when a list showed fewer photos than the post has. post-detail returns every one.

post.repostOf object | null

The post this one reposts, in the same shape, or null for an original post.

Request

curl -X POST "https://api.fetchlayer.dev/weibo/post-detail" \
  -H "Authorization: Bearer ss-your-key" \
  -H "Content-Type: application/json" \
  -d '{"post":"https://weibo.com/6420207784/RmOx7c1Yt"}'

Response

{
  "transport": "weibo",
  "skippedRecords": [],
  "scrapedAt": "2026-10-15T15:25:22.762Z",
  "notes": [],
  "pagesFetched": 1,
  "post": {
    "id": "5354374692867529",
    "shortId": "RmOx7c1Yt",
    "url": "https://weibo.com/6420207784/RmOx7c1Yt",
    "text": "深圳11月1日起,每天0时至24时,全市禁止机动车鸣喇叭,有效期5年 … #深圳11月1日起全域全天禁鸣喇叭#",
    "textTruncated": false,
    "createdAt": "2026-10-15T12:04:29.000Z",
    "postedFrom": "广东",
    "source": "搞笑幽默视频博主",
    "author": {
      "id": "6420207784",
      "screenName": "1024专员",
      "url": "https://weibo.com/u/6420207784",
      "verified": true,
      "verifiedReason": "搞笑幽默视频博主",
      "followersCount": null,
      "followersCountText": "172.8万"
    },
    "stats": {
      "reposts": 33,
      "comments": 234,
      "likes": 400,
      "reads": null
    },
    "roundedStats": [],
    "topics": [
      "深圳11月1日起全域全天禁鸣喇叭"
    ],
    "media": [
      {
        "kind": "image",
        "url": "https://wx1.sinaimg.cn/mw2000/0070uxksgy1ii3aj0oaluj30wr1ii104.jpg",
        "downloadUrl": "https://api.fetchlayer.dev/weibo/media?url=https%3A%2F%2Fwx1.sinaimg.cn%2Fmw2000%2F0070uxksgy1ii3aj0oaluj30wr1ii104.jpg",
        "width": 1179,
        "height": 1962,
        "durationSeconds": null,
        "coverUrl": null
      }
    ],
    "editCount": null,
    "isPinned": false,
    "mediaTruncated": false,
    "repostOf": null
  }
}