要用 API 采集微博评论,把博文 id POST 到 Scavio 的 https://api.scavio.dev/api/v1/weibo/post/comments。每页返回 20 条一级评论,每条带正文、发布时间、点赞数、回复数、楼层号和评论者资料,用响应里的 max_id 翻页;某条评论下的楼中楼回复,把评论 id 传给 /post/sub-comments。每次调用 1 积分,不需要微博账号、Cookie 或开放平台应用。
微博开放平台的接口需要用户授权的 access token,面向“你的应用代表某个登录用户”的场景,不能读取任意账号博文的评论区。下面用一个真实的品牌案例走一遍:瑞幸咖啡和王者荣耀 KPL 十周年的联名。官方微博 10 月 21 日发布联名,11 月 2 日“瑞幸新联名放真人被吐槽”上了热搜。所有响应都是 Scavio 在 2026 年 11 月 2 日实际返回的,只做删减,没有改动任何值。
准备工作
- 一个 Scavio API 密钥。注册即送 50 积分,无需绑卡。
- 任意能发 HTTP 请求的语言。下面用 cURL 和 Python。
第 1 步:找到要采集的博文
如果已经有博文链接,id 就在链接里。没有的话,用高级搜索按关键词找,search_type 设为 hot 返回热门博文:
curl -X POST 'https://api.scavio.dev/api/v1/weibo/search/advanced' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer sk_live_your_key' \
-d '{"q": "瑞幸 KPL 联名", "search_type": "hot"}'返回 10 条博文,其中一条是瑞幸官方微博的联名发布博文(链接里的跟踪参数已去掉):
{
"id": "5356411996606156",
"text": "全员集合!瑞幸×王者荣耀KPL10周年重磅联名!KPL十大年度记忆人物登场!梦泪|Fly|久诚|Cat|暖阳|清融|花海|小胖|长生|一诺10月26日,十年此刻,开瑞全场!#瑞幸联名王者KPL##十年此刻开瑞全场#",
"created_at": "10月21日 11:00",
"post_url": "https://weibo.com/6349791448/RnFx5rIyU",
"source": "微博网页版",
"weibo_type": "original",
"user": { "name": "luckincoffee瑞幸咖啡" },
"reposts_count": null,
"comments_count": null,
"attitudes_count": null
}搜索结果里的转发、评论、点赞数是 null,要用下一步的博文详情接口取。
第 2 步:读博文详情
curl -X POST 'https://api.scavio.dev/api/v1/weibo/post' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer sk_live_your_key' \
-d '{"id": "5356411996606156"}'{
"id": "5356411996606156",
"mid": "5356411996606156",
"mblogid": "RnFx5rIyU",
"created_at": "Wed Oct 21 11:00:00 +0800 2026",
"source": "微博网页版",
"region": "发布于 北京",
"reposts_count": 934,
"comments_count": 1150,
"attitudes_count": 14525,
"pic_num": 1,
"is_long_text": false
}attitudes_count 是点赞数。1,150 条评论,每页 20 条,全量约 58 次调用。完整响应还带正文、图片和作者资料。
第 3 步:分页拉一级评论
curl -X POST 'https://api.scavio.dev/api/v1/weibo/post/comments' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer sk_live_your_key' \
-d '{"id": "5356411996606156"}'第一页返回 20 条评论、"total": 1150 和 "max_id": "196619883587596"。下一页在请求体里加上 "max_id": "196619883587596",第三页用第二页返回的 157862098628890。三页共 60 条,没有重复。第一条,评论者字段删减后:
{
"id": "5356412175911368",
"text": "期待一诺[打call]",
"created_at": "Wed Oct 21 11:00:43 +0800 2026",
"like_count": 674,
"reply_count": 2,
"floor_number": 4,
"user": {
"nickname": "22x与一诺",
"followers_count": 73,
"verified": false
}
}| 字段 | 含义 |
|---|---|
id | 评论 id,取楼中楼回复时要用 |
text | 评论正文,表情显示为 [打call] 这样的文字代码,链接是 t.cn 短链 |
created_at | 北京时间(+0800) |
like_count | 点赞数 |
reply_count | 楼中楼回复数 |
floor_number | 楼层号,按发布先后编号 |
user | 评论者的昵称、粉丝数、认证状态等公开资料 |
评论按微博的热门顺序返回:第 4 楼排在第一位,因为它的 674 个赞最多。60 条里最早的一条发在博文发布后 32 秒。
第 4 步:拉楼中楼回复
把一级评论的 id 传给子评论接口,注意这里传的是评论 id,不是博文 id:
curl -X POST 'https://api.scavio.dev/api/v1/weibo/post/sub-comments' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer sk_live_your_key' \
-d '{"id": "5356412175911368"}'返回这条评论下的 2 条回复,"max_id": "0" 表示没有下一页。其中一条(评论者字段删减):
{
"id": "5356412205271074",
"text": "@luckincoffee瑞幸咖啡",
"created_at": "Wed Oct 21 11:00:50 +0800 2026",
"like_count": 11,
"reply_count": null,
"floor_number": 0
}第 5 步:统计评论区在说谁
联名有 10 位选手,评论区的热度却不是平均分配的。下面统计 60 条热门评论里每位选手被提到的次数和这些评论的总点赞:
import requests
API = "https://api.scavio.dev/api/v1/weibo/post/comments"
HEADERS = {"Authorization": "Bearer sk_live_your_key"}
comments, max_id = [], None
for _ in range(3): # 每页 20 条,按需加大
body = {"id": "5356411996606156"}
if max_id:
body["max_id"] = max_id
data = requests.post(API, headers=HEADERS, json=body, timeout=60).json()["data"]
if not data["comments"]:
break
comments += data["comments"]
max_id = data["max_id"]
players = ["梦泪", "Fly", "久诚", "Cat", "暖阳", "清融", "花海", "小胖", "长生", "一诺"]
for p in players:
hits = [c for c in comments if p.lower() in (c["text"] or "").lower()]
print(p, len(hits), sum(c["like_count"] for c in hits))| 选手 | 提到的评论数 | 这些评论的总点赞 |
|---|---|---|
| 一诺 | 27 | 5,851 |
| 清融 | 19 | 4,340 |
| 长生 | 9 | 793 |
| 暖阳 | 4 | 83 |
| 梦泪、Fly、久诚、Cat、花海、小胖 | 0 | 0 |
60 条热门评论的 11,134 个赞里,提到一诺或清融的 46 条评论拿走了 10,191 个,占 91.5%。另外 6 位选手在这 60 条里一次都没被提到,其中就有 11 月 2 日热搜上被讨论的那位:搜索结果里有博主写到“瑞幸与KPL小胖的联名包装引发不少争议”。品牌官方评论区里看到的是粉丝应援,争议发生在别处,这正是只看自家评论区会漏掉的东西。按昵称匹配也有局限:粉丝会用选手的本名或外号,例如有评论写“期待全满贯黄垚钦”,关键词表要自己补全。
第 6 步:看话题声量和热搜
评论区之外,再用两次调用看全网声量。话题搜索返回话题标签和阅读量、讨论数:
curl -X POST 'https://api.scavio.dev/api/v1/weibo/search/topics' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer sk_live_your_key' \
-d '{"query": "瑞幸联名王者KPL"}'{
"items": [
{ "name": "#瑞幸联名王者kpl#", "name_plain": "瑞幸联名王者kpl", "desc": null, "discuss_count": 52000, "read_count": 12937000 },
{ "name": "#网友吐槽瑞幸联名王者kpl#", "name_plain": "网友吐槽瑞幸联名王者kpl", "desc": null, "discuss_count": 37, "read_count": 39000 },
{ "name": "#瑞幸联名王者 kpl#", "name_plain": "瑞幸联名王者 kpl", "desc": null, "discuss_count": 378, "read_count": 436000 }
]
}(每条还有 url 和 cover,这里省略。)主话题 1,293.7 万阅读、5.2 万讨论。同一个联名还有一个带空格的变体标签,43.6 万阅读,统计时要合并。热搜榜接口传空请求体 {} 即可,我们读到的那一次,“瑞幸新联名放真人被吐槽”排在第 12 位(rank 为 11,从 0 开始计),热度 79,849,标签“热”。
发评论的账号本身也值得看一眼。用户信息接口传 {"uid": "6349791448"},返回瑞幸官方微博 1,181,617 个粉丝、10,489 条博文,认证信息“瑞幸咖啡(北京)有限公司”。
全部 30 个微博接口
| 接口 | 返回内容 | 积分 |
|---|---|---|
/api/v1/weibo/hot-search | 实时热搜榜:热词、热度、排名、标签 | 1 |
/api/v1/weibo/hot-search/index | 热搜置顶条目 | 1 |
/api/v1/weibo/rankings/social、/entertainment、/life | 社会榜、文娱榜、生活榜 | 各 1 |
/api/v1/weibo/rankings/hot-timeline | 热门微博榜 | 1 |
/api/v1/weibo/search/advanced | 按关键词搜博文,可按类型、时间筛选 | 1 |
/api/v1/weibo/search/realtime | 最新博文 | 1 |
/api/v1/weibo/search/topics | 话题标签,带阅读量和讨论数 | 1 |
/api/v1/weibo/search/users、/videos、/pics | 用户、视频、图片搜索 | 各 1 |
/api/v1/weibo/search/similar、/ai | 相关搜索词、AI 搜索 | 各 1 |
/api/v1/weibo/post | 博文详情:转发、评论、点赞数,图片、视频和作者 | 1 |
/api/v1/weibo/post/comments | 一级评论,每页 20 条 | 1 |
/api/v1/weibo/post/sub-comments | 楼中楼回复 | 1 |
/api/v1/weibo/post/likes、/reposts | 点赞用户、转发列表 | 各 1 |
/api/v1/weibo/user/info、/info-detail | 用户资料(uid 或个性域名) | 各 1 |
/api/v1/weibo/user/posts、/original-posts | 用户博文、仅原创博文 | 各 1 |
/api/v1/weibo/user/search-posts | 按关键词或时间段搜某个用户的博文 | 1 |
/api/v1/weibo/user/fans、/following | 粉丝、关注列表 | 各 1 |
/api/v1/weibo/user/videos、/video-collections、/video-collection | 用户视频和视频合集 | 各 1 |
/api/v1/weibo/user/recommend-timeline | 推荐时间线 | 1 |
想比较其他微博数据服务商,看微博数据采集 API 对比。
开始使用
- 注册:dashboard.scavio.dev/sign-up,送 50 积分,无需绑卡。
- 复制 API 密钥:注册后控制台里已自动生成。
- 发第一个请求:把博文 id POST 到
/api/v1/weibo/post/comments,请求头带Authorization: Bearer 你的密钥。
免费试用微博 API,先在 Playground 里跑一遍;也可以通过 MCP 服务器在 AI 智能体里直接调用。价格见价格页。
Frequently asked questions
微博评论接口一页返回多少条?怎么翻页?
Scavio 的 /api/v1/weibo/post/comments 每页返回 20 条一级评论,响应里有评论总数 total 和翻页游标 max_id。把 max_id 原样放进下一次请求即可,游标不再前进或返回空列表时停止。2026 年 11 月 2 日对瑞幸 1,150 条评论的博文,三次调用拿到 60 条不重复的评论。
楼中楼(二级评论)怎么采集?
每条一级评论带 reply_count。把这条评论自己的 id(不是博文 id)传给 /api/v1/weibo/post/sub-comments,返回它下面的回复,字段和一级评论相同,同样用 max_id 翻页,max_id 为 "0" 表示没有下一页。
微博评论是按时间还是按热度排序?
接口返回的是微博的热门评论顺序,点赞多的靠前,所以第一页基本就是这条博文最有代表性的评论。要按时间分析,拉完后按 created_at 排序;created_at 是北京时间(+0800)。
不登录微博能采集评论吗?
可以。Scavio 读取的是公开博文的评论,不需要微博账号、Cookie 或开放平台应用。微博开放平台的接口要求用户授权的 access token,读不了任意账号的评论区。
采集 1 万条微博评论要多少钱?
每页 20 条,1 万条约 500 次调用,即 500 积分。按 Scavio Growth 年付每 1,000 积分约 2 美元计算,约 1 美元。注册送的 50 积分够把本文的步骤完整跑几遍。