B站视频搜索 / 解析 / 播放 公共接口。允许第三方服务器或浏览器跨域直接调用(已开启 CORS)。
| 项目 | 值 |
|---|---|
| 接口基础地址 | 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":"..."} 表示失败。调用方可据此判断。搜索 / 热门 / 分区 / UP 投稿等接口返回的每条视频都含以下字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| bvid | string | B站视频 BV 号,如 BV1xx411c7mD |
| title | string | 视频标题(已去 HTML 标签) |
| author | string | UP 主昵称 |
| mid | number | UP 主用户 ID |
| upic | string | UP 主头像 URL |
| cover | string | 视频封面 URL |
| duration | string | 时长,如 04:35 / 1:23:45 |
| play | number | 播放量 |
| pubdate | number | 发布时间(Unix 秒) |
| desc | string | 简介(截断到 140 字符) |
| page | string | B站视频页 URL |
| embed | string | 官方内嵌播放器 URL(可 iframe 直接播放) |
按关键词搜索视频。
| 参数 | 必填 | 说明 |
|---|---|---|
| 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" } ] }
随机返回一个视频(从榜单/热门缓存池取)。
{ "ok": true, "item": { "bvid": "BV...", "title": "...", ... } }
返回热门视频列表(最多 60 条)。
{ "ok": true, "items": [ { "bvid": "BV...", ... } ] }
识别一个 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&...", ... } }
智能接口:自动判断「链接」还是「关键词」。链接 → mode:"resolve";关键词 → mode:"search"。
{ "ok": true, "mode": "resolve", "item": { ... } }
{ "ok": true, "mode": "search", "kw": "鬼灭", "items": [ ... ] }
返回全部分区列表(不请求 B站,秒回)。
{ "ok": true, "zones": [ { "k": "all", "n": "全站" }, { "k": "music", "n": "音乐" }, ... ] }
按分区取排行榜视频。
| 参数 | 必填 | 说明 |
|---|---|---|
| z | 否 | 分区 key(见 /api/zones),默认 all |
{ "ok": true, "z": "music", "name": "音乐", "items": [ ... ], "zones": [ ... ] }
取某个 UP 主的投稿列表。优先按 mid 精确拉官方空间接口;拿不到时回退到搜索+作者过滤(结果带 _fallback:true)。
| 参数 | 必填 | 说明 |
|---|---|---|
| mid | 否 | UP 主用户 ID(与 name 至少给一个) |
| name | 否 | UP 主昵称 |
| page | 否 | 页码,默认 1 |
| kw | 否 | 在该 UP 作品内搜索 |
{ "ok": true, "mid": "3546862365706293", "name": "豪猫Onward", "avatar": "https://...", "items": [ ... ] }
获取视频评论列表(只读,带缓存)。
| 参数 | 必填 | 说明 |
|---|---|---|
| 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 }
获取某条根评论下的子回复列表。
| 参数 | 必填 | 说明 |
|---|---|---|
| bvid | 是 | BV 号 |
| root | 是 | 根评论 rpid |
| pn | 否 | 页码,默认 1 |
{ "ok": true, "items": [ { "rpid": "...", "uname": "...", "content": "...", "loc": "广东" } ], "count": 5 }
解析出该视频的直链(走第三方 api.mir6.com,绕开本机风控)。返回值带 url 可直接播放。
| 参数 | 必填 | 说明 |
|---|---|---|
| bvid | 是 | BV 号 |
{ "ok": true, "bvid": "BV...", "url": "https://...mp4", "quality": "...", "format": "mp4", "is_dash": false }
10 分钟 内存缓存;超过可能失效,需重新请求。此接口依赖第三方解析源,失败时 ok=false 且带 msg。分享短链页:/v/BVxxxx 直接打开该视频的单页(前端自动识别并解析播放)。
返回 200 + index.html 页面(非 JSON)
健康检查(无业务逻辑,秒回)。
{ "ok": true, "ts": 1790930198 }
# 搜索 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"
fetch("https://b.ocbot.top/api/search?kw=" + encodeURIComponent("鬼灭"))
.then(r => r.json())
.then(d => { if (d.ok) console.log(d.items); });
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", [])])
| 情况 | 返回 |
|---|---|
| 参数缺失 | {"ok":false,"msg":"请输入搜索关键词"} |
| 格式错误(如 bvid 不合法) | {"ok":false,"msg":"bvid 无效"} |
| 上游失败 / 风控 | {"ok":false,"msg":"获取失败:..."} |
| 频率超限 | up 接口:UP 接口频率已达上限 |