b.ocbot.top · API 开发文档

B站视频搜索 / 解析 / 播放 公共接口。允许第三方服务器或浏览器跨域直接调用(已开启 CORS)。

1. 基础信息

项目值
接口基础地址https://b.ocbot.top
数据格式JSON(UTF-8),HTTP 状态码恒为 200,业务结果看 ok 字段
请求方式全部为 GET(参数走 query string)
跨域 (CORS)已开放 Access-Control-Allow-Origin: *,浏览器/服务器均可直连
缓存热门/搜索/评论等带 10~30 分钟内存缓存;直链 10 分钟
限频全站 nginx limit_req + 上游 UP 空间接口每小时 300 次
所有接口返回统一结构:{"ok":true, ...} 表示成功;{"ok":false, "msg":"..."} 表示失败。调用方可据此判断。

2. 核心返回字段(video item)

搜索 / 热门 / 分区 / UP 投稿等接口返回的每条视频都含以下字段:

字段类型说明
bvidstringB站视频 BV 号,如 BV1xx411c7mD
titlestring视频标题(已去 HTML 标签)
authorstringUP 主昵称
midnumberUP 主用户 ID
upicstringUP 主头像 URL
coverstring视频封面 URL
durationstring时长,如 04:35 / 1:23:45
playnumber播放量
pubdatenumber发布时间(Unix 秒)
descstring简介(截断到 140 字符)
pagestringB站视频页 URL
embedstring官方内嵌播放器 URL(可 iframe 直接播放)

3. 接口列表

GET /api/search?kw=&page=

按关键词搜索视频。

参数必填说明
kw是搜索关键词
page否页码,默认 1
{ "ok": true, "kw": "鬼灭", "page": 1, "items": [ { "bvid": "BV1SnYF6eEQS", "title": "4K超清 《鬼灭之刃:无限城篇》...", "author": "豪猫Onward", "mid": 3546862365706293, "cover": "https://i2.hdslb.com/...", "play": 24871, "pubdate": 1790775443, "duration": "276:04", "embed": "https://player.bilibili.com/player.html?bvid=...", "page": "https://www.bilibili.com/video/BV1SnYF6eEQS" } ] }
GET /api/random

随机返回一个视频(从榜单/热门缓存池取)。

{ "ok": true, "item": { "bvid": "BV...", "title": "...", ... } }
GET /api/hot

返回热门视频列表(最多 60 条)。

{ "ok": true, "items": [ { "bvid": "BV...", ... } ] }
GET /api/resolve?q=

识别一个 B站视频链接 / BV 号 / b23.tv 短链 / av 号,返回该视频信息。

参数必填说明
q是视频链接、BV 号、b23.tv 短链或 av 号
{ "ok": true, "item": { "bvid": "BV1xx411c7mD", "title": "字幕君交流场所", "author": "碧诗", "play": 5529000, "embed": "https://player.bilibili.com/player.html?bvid=BV1xx411c7mD&...", ... } }
GET /api/smart?q=

智能接口:自动判断「链接」还是「关键词」。链接 → mode:"resolve";关键词 → mode:"search"。

{ "ok": true, "mode": "resolve", "item": { ... } }
{ "ok": true, "mode": "search", "kw": "鬼灭", "items": [ ... ] }
GET /api/zones

返回全部分区列表(不请求 B站,秒回)。

{ "ok": true, "zones": [ { "k": "all", "n": "全站" }, { "k": "music", "n": "音乐" }, ... ] }
GET /api/zone?z=

按分区取排行榜视频。

参数必填说明
z否分区 key(见 /api/zones),默认 all
{ "ok": true, "z": "music", "name": "音乐", "items": [ ... ], "zones": [ ... ] }
GET /api/up?mid=&name=&page=&kw=

取某个 UP 主的投稿列表。优先按 mid 精确拉官方空间接口;拿不到时回退到搜索+作者过滤(结果带 _fallback:true)。

参数必填说明
mid否UP 主用户 ID(与 name 至少给一个)
name否UP 主昵称
page否页码,默认 1
kw否在该 UP 作品内搜索
{ "ok": true, "mid": "3546862365706293", "name": "豪猫Onward", "avatar": "https://...", "items": [ ... ] }
GET /api/replies?bvid=&pn=

获取视频评论列表(只读,带缓存)。

参数必填说明
bvid是BV 号(BV[0-9A-Za-z]{10})
pn否页码,默认 1
{ "ok": true, "items": [ { "rpid": "12", "uname": "用户", "content": "...", "like": 9, "sub": [ { "rpid": "...", "uname": "...", "content": "...", "loc": "广东" } ] } ], "count": 120, "has_more": true }
GET /api/reply_child?bvid=&root=&pn=

获取某条根评论下的子回复列表。

参数必填说明
bvid是BV 号
root是根评论 rpid
pn否页码,默认 1
{ "ok": true, "items": [ { "rpid": "...", "uname": "...", "content": "...", "loc": "广东" } ], "count": 5 }
GET /api/playurl?bvid=

解析出该视频的直链(走第三方 api.mir6.com,绕开本机风控)。返回值带 url 可直接播放。

参数必填说明
bvid是BV 号
{ "ok": true, "bvid": "BV...", "url": "https://...mp4", "quality": "...", "format": "mp4", "is_dash": false }
直链有 10 分钟 内存缓存;超过可能失效,需重新请求。此接口依赖第三方解析源,失败时 ok=false 且带 msg。
GET /v/<bvid>

分享短链页:/v/BVxxxx 直接打开该视频的单页(前端自动识别并解析播放)。

返回 200 + index.html 页面(非 JSON)
GET /healthz

健康检查(无业务逻辑,秒回)。

{ "ok": true, "ts": 1790930198 }

4. 调用示例

curl

# 搜索
curl "https://b.ocbot.top/api/search?kw=%E9%AC%BC%E7%81%AD&page=1"

# 解析链接 / BV
curl "https://b.ocbot.top/api/resolve?q=BV1xx411c7mD"

# 取直链
curl "https://b.ocbot.top/api/playurl?bvid=BV1xx411c7mD"

JavaScript(浏览器跨域)

fetch("https://b.ocbot.top/api/search?kw=" + encodeURIComponent("鬼灭"))
  .then(r => r.json())
  .then(d => { if (d.ok) console.log(d.items); });

Python

import requests, urllib.parse
kw = urllib.parse.quote("鬼灭")
r = requests.get(f"https://b.ocbot.top/api/search?kw={kw}")
data = r.json()
print([i["title"] for i in data.get("items", [])])

5. 错误与限制

情况返回
参数缺失{"ok":false,"msg":"请输入搜索关键词"}
格式错误(如 bvid 不合法){"ok":false,"msg":"bvid 无效"}
上游失败 / 风控{"ok":false,"msg":"获取失败:..."}
频率超限up 接口:UP 接口频率已达上限
请合理使用频率。热门 / 评论等接口已自带缓存,不要盲目高频轮询;UP 空间接口有每小时 300 次保护。