/v1/user_posts"platform": "bilibili"Bilibili User Posts API
The recent videos of one account.
Get the recent videos of any public Bilibili account and get back text, author, comment count, views and publish time, as JSON over HTTP or from your AI client over MCP. A call to the Bilibili User Posts API costs 2 credits ($0.004 to $0.0067 depending on the pack), failed calls are free, and the response has the same format as every other call.
Last updated:
limit: 100 and one call pages for you: at most 4 pages, 8 credits. It stops once it has them or the list ends; pages it does not use are not charged, and neither are pages that fail. Reading 1,000 items comes to about 68 credits, about $0.23.Daily watch: tell your AI “watch this daily” and this call runs by itself every day, sending only what is new: at most 62 credits a month, about $0.21. How to set it up
What you get from the Bilibili User Posts API.
From a recorded answer.
A recorded call returned 30 items; here is the first, field by field. Names and text are removed from the sample; the numbers are as recorded.
| Field | In the recorded answer |
|---|---|
| url | removed from the sample |
| format | video |
| title | removed from the sample |
| text | removed from the sample |
| published_at | 2026-10-09T09:00:00.000Z |
| author.id | removed from the sample |
| author.username | null: Bilibili cannot give it |
| author.name | removed from the sample |
| author.verified | null: Bilibili cannot give it |
| author.followers | null: Bilibili cannot give it |
| metrics.likes | null: Bilibili cannot give it |
| metrics.comments | 2,707 |
| metrics.shares | null: Bilibili cannot give it |
| metrics.collects | null: Bilibili cannot give it |
| metrics.views | 2,166,840 |
| metrics.reposts | null: Bilibili cannot give it |
| images | null: Bilibili cannot give it |
| hashtags | null: Bilibili cannot give it |
| is_pinned | null: Bilibili cannot give it |
2 credits a call (≈ $0.004–$0.0067): about 1,500 calls for $10.
Bilibili User Posts API: request and response
curl https://api.socialtoai.com/v1/user_posts \ -H "Authorization: Bearer $SOCIALTOAI_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d '{ "platform": "bilibili", "id": "8047632" }'import osimport uuidimport requestsresponse = requests.post( "https://api.socialtoai.com/v1/user_posts", headers={ "Authorization": f"Bearer {os.environ['SOCIALTOAI_API_KEY']}", # A new key for each request; the same one again retries it without paying twice. "Idempotency-Key": str(uuid.uuid4()), }, json={ "platform": "bilibili", "id": "8047632", },)print(response.json())# Connected over MCP? Ask in plain words.What has this Bilibili account posted lately: 8047632# Your AI calls the user_posts tool with:{ "platform": "bilibili", "id": "8047632"}{ "platform": "bilibili", "status": "ok", "items": [ { "platform": "bilibili", "id": "…", "ref": "…", "approx": [], "type": "content", "url": "https://example.com/…", "format": "video", "title": "…", "text": "…", "published_at": "2026-10-09T09:00:00.000Z", "author": { "id": "…", "username": null, "name": "…", "verified": null, "followers": null }, "metrics": { "likes": null, "comments": 2707, "shares": null, "collects": null, "views": 2166840, "reposts": null }, "images": null, "hashtags": null, "is_pinned": null } ], "unavailable": ["author.username", "author.verified", "author.followers", "metrics.likes", "metrics.shares", "metrics.collects", "metrics.reposts", "images", "hashtags", "is_pinned"], "page": { "has_more": true, "cursor": "cur_…", "cursor_expires_at": "2026-10-12T19:17:30.000Z" }, "cost_credits": 2}nullcomments 2,707shares nullcollects nullviews 2,166,840Names and text were removed from the sample; the numbers are as recorded.
Bilibili User Posts API parameters.
3 parameters, 2 required.
Send them as a JSON body with POST. Your key goes in the Authorization header, never in the URL.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| platform | string | Required | — | Always "bilibili" on this page. |
| id | string | Required | — | User number (mid), a string of digits |
| cursor | string | Optional | — | Pass page.cursor from the last response to get the next page. |
Where to get what you send.
idUser number (mid), a string of digits (e.g. 8047632)
No other interface of the platform returns it: take it from the web page or link as described above.
Bilibili User Posts API response fields.
What Bilibili cannot give is marked.
| Field | Type | Meaning |
|---|---|---|
| items[].url | string | A link that opens the item. |
| items[].format | string | video, image, text or article. |
| items[].title | string | The title. |
| items[].text | string | The body text or caption. |
| items[].published_at | string | When it was published, ISO 8601 in UTC. |
| items[].author.id | string | The author's account ID. |
| items[].author.username | stringalways null | The author's handle. |
| items[].author.name | string | The author's display name. |
| items[].author.verified | booleanalways null | Whether the author is verified. |
| items[].author.followers | integeralways null | The author's follower count. |
| items[].metrics.likes | integeralways null | Likes. |
| items[].metrics.comments | integer | Comments. |
| items[].metrics.shares | integeralways null | Shares. |
| items[].metrics.collects | integeralways null | Saves. |
| items[].metrics.views | integer | Views or plays. |
| items[].metrics.reposts | integeralways null | Reposts. |
| items[].images | string[]always null | Image addresses. |
| items[].hashtags | string[]always null | Hashtags, without the #. |
| items[].is_pinned | booleanalways null | Whether the author pinned it. |
nullFields Bilibili cannot giveRead null as “Bilibili did not give this”, not as zero. These are always null on this call:
author.usernameThe author's handle.author.verifiedWhether the author is verified.author.followersThe author's follower count.metrics.likesLikes.metrics.sharesShares.metrics.collectsSaves.metrics.repostsReposts.imagesImage addresses.hashtagsHashtags, without the #.is_pinnedWhether the author pinned it.
Compared with the Douyin User Posts API, this call also gives views but does not give likes, shares, saves, images or hashtags.
Every item also has platform, id, ref, approx and type; the response around the items is the same on every call. Response format
Bilibili User Posts API: paging and billing.
5 calls per second per key, 20 after a purchase; going over is not charged. Rate limits
A failed call costs 0 credits and is never retried on its own. Error codes
Interface last tested: 2026-10-17. Each call reads from the platform, and fetched_at in the answer is when it was read. The same request sent again with the same key within 5 minutes is a replay (replayed: true): 0 credits, and the answer as first read.
Once connected over MCP, these questions use the Bilibili User Posts API.
What has this Bilibili account posted lately: 8047632
2 creditsuser_posts {"platform":"bilibili","id":"8047632"}
Give this to your AI.
Copy it into Claude or ChatGPT.
How to connectUse the SocialToAI MCP server (https://mcp.socialtoai.com/mcp) for this: What has this Bilibili account posted lately: 8047632Call the user_posts tool with {"platform":"bilibili","id":"8047632"}. Needed: id.For many items pass limit (limit=100 is at most 4 pages) and one call pages for you; each page costs 2 credits and unused pages are not charged.Before you start, work out how many credits it will take in all and ask me; call it only after I agree.What usually comes next, with the ref or username it returns: detail (Detail), comments (Comments).If SocialToAI is not connected yet, tell me how to connect it; never ask me to paste a key into the chat.Answer with a link to every item you used, and tell me how many credits it cost.Paste it into a chat once SocialToAI is connected over MCP. There is no key in it: Claude and ChatGPT sign in, other clients send a key in a header.
These ready-made tools call it when they run.
find-creatorsCreators who make that content, with their size, recent posts and how well each fits
creator-cardTheir accounts on other platforms, the numbers on each, and how sure the match is
Work scenarios that use it.
competitor-trackingYour AI follows the accounts you name and tells you what each one published lately and which posts did clearly better than that account usually does, with the numbers and links.
The same call on other platforms.
All platforms and prices/v1/user_posts{ "platform": "bilibili", "id": "8047632" }2 creditsper callRead next.
What its own API allows, who can use it and what it costs, with sources.
competitors' accounts, daily: what is new and what beat their usual, from 9 credits an account
Let your AI read Bilibili.