问答
不登录、不用 Cookie,怎么按关键词搜微博?
简短回答
用微博搜索接口(/v1/weibo/posts/search),只要一个 API key,不需要登录微博:传关键词,返回带正文、作者、转发、评论和点赞的微博。每页约 10 条,$0.002;1,000 条需要 100 次调用,共 $0.20。
大多数开源微博爬虫的第一步都一样:在浏览器里登录微博,复制 Cookie,贴进配置文件。过一阵子 Cookie 过期,任务半夜三点挂掉;搜得太猛,账号还可能被限制。如果你要的只是匹配某个关键词的微博,完全可以不碰账号。okdata 只认 API key,在公开的微博数据上执行搜索,返回整理好的 JSON。
用哪个接口
微博搜索真正要关心的参数只有两个:
query:关键词,和你在微博搜索框里输入的一样,中文直接传。sort:hot(默认)按热度,互动多的排前面;latest按时间,最新的排前面。
每条微博返回 text、published_at、url,作者的 ID、昵称、粉丝数和认证状态,metrics.likes、metrics.comments、metrics.reposts,以及图片和话题。视频微博在微博显示播放量时,metrics.views 里也会有。
价格
| 需求 | 调用次数 | 费用 |
|---|---|---|
| 一页 | 1 | $0.002 |
| 200 条 | 20 | $0.04 |
| 1,000 条 | 100 | $0.20 |
出错不扣费:参数写错、上游繁忙、超时,都不收钱。
curl 示例
curl -s -G "https://api.okdata.online/v1/weibo/posts/search" \
-H "Authorization: Bearer $OKDATA_API_KEY" \
--data-urlencode "query=新能源 车展" \
-d sort=latest \
-d fields=id,text,published_at,author.name,metrics
# 下一页:把 page.next_cursor 原样传回
curl -s -G "https://api.okdata.online/v1/weibo/posts/search" \
-H "Authorization: Bearer $OKDATA_API_KEY" \
--data-urlencode "query=新能源 车展" -d sort=latest \
--data-urlencode "cursor=<page.next_cursor>"
遇到 rate_limited,按响应头 Retry-After 里的秒数等一等,再发同样的请求。所有错误码、哪些可以重试,见错误说明。
不登录意味着放弃什么
- 评论、某个用户自己的微博列表、单条微博详情都不在接口目录里。能用的是搜索、热搜榜和账号资料。
- 长微博在搜索结果里可能被截断。加
view=full看ext.is_long_text,全文要去微博页面上看。 - 微博搜索里看不到的内容,这里也看不到。
- 微博不公开的字段,比如分享数和收藏数,返回 null,并写在
meta.unavailable里。
什么时候登录态或官方渠道更合适
- 需要评论区或者某个账号的完整时间线,weibo-crawler、MediaCrawler 这类带 Cookie 的爬虫能拿到。建议用小号,速度放慢。
- 微博开放平台向通过认证、开通套餐的开发者提供关键词搜索。公司需要和微博本身签协议时,选这条路。
- 只看十几条的话,打开微博 App 搜一下就行,免费。
想在 Claude 或其他智能体里直接搜,接入 MCP 服务即可。
更新于