You scrape an entire Weibo account in two passes. First walk the account's timeline with Scavio's POST /api/v1/weibo/user/posts, 20 posts a page, until it runs out. Then keep going backwards with /api/v1/weibo/user/search-posts, which takes a starttime and endtime and returns that window's posts even after the timeline says there is nothing older. In our test that reached posts from March 2016, each with text, images, video and repost, comment and like counts. Every call costs 1 credit, about $0.002 on the Growth plan billed yearly, and needs no Weibo login.
A user on r/DataHoarder asked how to get the whole of a Weibo account: a scraper, gallery-dl and manual scrolling all stopped well before the account's first post, with Weibo saying "there is no more content", and at a different point on mobile, desktop and the scraper. That cut-off is real, and it is why a timeline alone is not enough.
What Weibo itself offers
Weibo's Open Platform user_timeline endpoint needs an OAuth token from a logged-in user. Its documentation says that after an interface upgrade the uid can only be the currently authorized user, and that it returns at most the latest 5 posts (10 through the official mobile SDK). So the official API cannot archive someone else's account, and only barely your own. Public pages are the route, and that is what Scavio reads.
Step 1: Get the account's uid
The uid is the number in the profile URL, as in weibo.com/u/5044281310. If you only have a custom handle, pass it to /api/v1/weibo/user/info as custom. The profile also tells you how big the job is:
curl -s https://api.scavio.dev/api/v1/weibo/user/info \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"uid": "5044281310"}'For The Paper (澎湃新闻), a Shanghai news outlet, that was "statuses_count": 193610 and "followers_count": 32732059 on October 27, 2026.
Step 2: Walk the timeline until it stops
curl -s https://api.scavio.dev/api/v1/weibo/user/posts \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"uid": "5044281310", "page": 1}'Increase page until a page comes back empty. Each holds up to 20 posts with id, mblogid, created_at in Beijing time, text, reposts_count, comments_count, attitudes_count (likes), pics and video. For The Paper, page 50 reached September 30 and page 100 reached September 9, 2026; page 101 returned nothing. About 2,000 posts is the most the timeline gives, which covers years for a personal account and seven weeks for a newsroom posting all day. Note the created_at of the last post you got: that is where step 3 starts.
Step 3: Go further back by date
curl -s https://api.scavio.dev/api/v1/weibo/user/search-posts \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"uid": "5044281310", "starttime": 1456761600, "endtime": 1456848000}'starttime and endtime are Unix seconds; this window is March 1, 2016, Beijing time. It returned 15 posts. The first, trimmed:
{
"id": "3948343245725272",
"mblogid": "DkhCYo1p6",
"created_at": "Tue Mar 01 22:17:29 +0800 2016",
"text": "【兰州自来水异味事件一水务局副局长被判玩忽职守,免予刑罚】2月29日,兰州红古区法院开庭审理该案...",
"reposts_count": 100,
"comments_count": 155,
"attitudes_count": 57
}That is a 2016 report on a Lanzhou water official convicted of dereliction of duty, more than a decade past where the timeline stopped. A one-day window on January 6, 2025 returned 49 posts, and the second page of that window was empty. Step backwards one window at a time, and if a window comes back with a full page of about 50 posts, split it in half and fetch both, so a busy day is not cut short. For an account that posts a few times a week, month-long windows are enough. The same endpoint takes q to search the account's posts for a keyword, plus filters for originals, reposts, images and video.
Step 4: Keep the media and the engagement
Every post in both passes carries its image URLs in pics and, for a video post, a video block with title, cover, an MP4 URL and the duration in seconds. The URLs are signed and expire, so download the files in the same run. Store the numeric id, which is stable; mblogid is the short id in the post URL, and /api/v1/weibo/post accepts either if you need to refresh a post's counts or read its comments later.
What to expect
- Deleted and hidden posts stay gone: only what the account shows publicly is returned.
- Counts are a snapshot: reposts, comments and likes are as of your call; re-fetch recent posts later if you need settled numbers.
- Chinese in, Chinese out: text comes back as UTF-8 with Beijing timestamps (+0800); translate afterwards.
- Cost: a personal account with 3,000 posts is about 100 timeline calls plus a few dozen windows. The Paper's 193,610 posts, at around 49 per one-day window, would be roughly 4,000 calls: 4,000 credits, about $8 on the Growth plan billed yearly.
Try the Weibo API free, 50 credits, no card, or run the first page in the playground.
Reference: Weibo API overview · user posts docs · user search-posts docs · how to get Weibo posts and user data · the best Weibo APIs
Frequently asked questions
Why does Weibo say there is no more content?
Weibo's timeline only pages back so far before it stops serving older posts, and the cut-off differs between the mobile site, the desktop site and tools that read them. In our test on October 27, 2026, The Paper's timeline gave 100 pages of about 20 posts, back to September 9, 2026, and page 101 returned nothing. Older posts are still there; you reach them by searching the account by date.
How far back can a Weibo account be read?
With Scavio's /api/v1/weibo/user/search-posts and a starttime and endtime window, we read The Paper's posts from January 6, 2025 and from March 1, 2016, each with text, time and repost, comment and like counts. Posts the author deleted or hid are not returned.
How many API calls does a whole Weibo account take?
One call per timeline page of 20 posts, then one call per date window. A one-day window for The Paper returned 49 posts, so its 193,610 posts would take roughly 4,000 calls, about $8 on Scavio's Growth plan billed yearly. A personal account with a few hundred posts a year needs one call per month or quarter.
Can I save the images and videos too?
Yes. Each post carries its image URLs and, for video posts, a video block with an MP4 URL, cover and duration. The URLs are signed and expire, so download the files during the same run.