B站 API
B站平台 API 参考文档
B站 API
B站平台的所有 API 方法参考。
调用形式与单次请求配置
Client 中的绑定 Fetcher 使用 client.bilibili.fetcher.method(options, requestConfig?)。第二个参数只作用于当前调用,并与 Client 的实例级请求配置合并;单次配置优先,headers 会单独合并。显式提供大写 headers.Cookie 时,它也会替换本次底层调用的 cookie 参数。
直接导出的裸 Fetcher 使用 bilibiliFetcher.method(options, cookie?, requestConfig?)。这里没有实例级配置,第三个参数会直接透传到当前请求。amagi.bilibiliFetcher 与该命名导出是同一个裸 Fetcher。
当第三个参数显式设置 headers.Cookie 时,第二个参数必须传入完全相同的字符串字面量;接口支持匿名时,请写作 method(options, '', { headers: { Cookie: '' } })。字段名严格区分大小写,请使用 Cookie,不要使用 cookie。
Fetcher 方法
fetchVideoInfo
获取单个视频作品数据。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchVideoInfo({
bvid: 'BV1xx411c7mD',
typeMode: 'strict'
})| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
bvid | string | 是 | 视频 BV 号 |
typeMode | 'strict' | 'loose' | 否 | 类型模式 |
fetchVideoStreamUrl
获取视频下载信息。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchVideoStreamUrl({
avid: 170001,
cid: 279786
})| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
avid | number | 是 | 视频 AV 号 |
cid | number | 是 | 视频 CID |
fetchVideoDanmaku
获取视频实时弹幕。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchVideoDanmaku({
cid: 279786,
segment_index: 1
})| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
cid | number | 是 | 视频 CID |
segment_index | number | 否 | 分段索引,默认 1 |
fetchComments
获取评论数据。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchComments({
oid: '170001',
type: 1,
number: 20
})| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
oid | string | 是 | 目标 ID |
type | number | 是 | 评论区类型 |
number | number | 否 | 每页数量 |
评论区类型: 1=视频, 11=图文动态, 12=专栏, 14=音频, 17=文字动态
绑定 Fetcher 的第二个参数是当前调用专用的 requestConfig。它会与 Client 的实例级请求配置合并,单次配置优先,请求头也会单独合并。
例如,只让本次评论请求不携带 Client 中配置的 B站 Cookie:
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: 'SESSDATA=example', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchComments(
{
oid: '170001',
type: 1,
number: 20,
typeMode: 'strict'
},
{
headers: {
Cookie: ''
}
}
)该配置只影响当前请求,不会修改 Client 实例,也不会影响同一实例发起的后续请求。
fetchCommentReplies
获取指定评论的回复。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchCommentReplies({
oid: '170001',
type: 1,
root: '123456789'
})| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
oid | string | 是 | 目标 ID |
type | number | 是 | 评论区类型 |
root | string | 是 | 根评论 ID |
需要匿名获取评论回复时,同样可以通过第二个 requestConfig 参数传入 { headers: { Cookie: '' } }。
fetchUserCard
获取用户主页数据。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchUserCard({
host_mid: 123456
})| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
host_mid | number | 是 | 用户 UID |
fetchUserDynamicList
获取用户主页动态列表。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchUserDynamicList({
host_mid: 123456
})fetchUserLiveStatus
按用户 UID 查询直播状态和直播间基础信息。该接口直接读取直播状态,不依赖用户空间动态中的直播推荐卡片,适合轮询开播状态。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchUserLiveStatus({
host_mid: 123456,
typeMode: 'strict'
})
if (result.success && result.data.data.liveStatus === 1) {
console.log(result.data.data.roomid)
}| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
host_mid | number | 是 | 用户 UID |
typeMode | 'strict' | 'loose' | 否 | 类型模式 |
主要状态字段:
| 字段 | 说明 |
|---|---|
roomStatus | 1 表示用户已开通直播间,0 表示未开通 |
liveStatus | 1 表示正在直播,0 表示当前未开播 |
roomid | 直播间 ID;未开通直播间时为 0 |
title | 直播间标题 |
cover | 直播封面 |
HTTP 服务也会注册 GET /api/bilibili/fetch_user_live_status?host_mid=123456。
fetchUserSpaceInfo
获取用户空间详细信息。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchUserSpaceInfo({
host_mid: 123456
})fetchUploaderTotalViews
获取 UP 主总播放量。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchUploaderTotalViews({
host_mid: 123456
})fetchDynamicDetail
获取动态详情。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchDynamicDetail({
dynamic_id: '123456789'
})fetchBangumiInfo
获取番剧基本信息。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
// 通过 ep_id
const result = await client.bilibili.fetcher.fetchBangumiInfo({
ep_id: '123456'
})
// 或通过 season_id
const result2 = await client.bilibili.fetcher.fetchBangumiInfo({
season_id: '123456'
})| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
ep_id | string | 二选一 | 剧集 ID |
season_id | string | 二选一 | 季度 ID |
fetchBangumiStreamUrl
获取番剧下载信息。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchBangumiStreamUrl({
cid: 279786,
ep_id: '123456'
})fetchLiveRoomInfo
获取直播间信息。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchLiveRoomInfo({
room_id: '123456'
})fetchLiveRoomInitInfo
获取直播间初始化信息。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchLiveRoomInitInfo({
room_id: '123456'
})fetchArticleContent
获取专栏正文内容。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchArticleContent({
id: '123456'
})fetchArticleCards
获取专栏显示卡片信息。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchArticleCards({
ids: ['123456', '789012']
})fetchLoginStatus
获取登录基本信息。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchLoginStatus({})requestLoginQrcode
申请登录二维码。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.requestLoginQrcode({})checkQrcodeStatus
检查二维码状态。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.checkQrcodeStatus({
qrcode_key: 'xxx'
})convertAvToBv
AV 号转 BV 号。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.convertAvToBv({
avid: 170001
})convertBvToAv
BV 号转 AV 号。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.convertBvToAv({
bvid: 'BV1xx411c7mD'
})fetchEmojiList
获取 Emoji 列表。
import amagi from '@ikenxuan/amagi'
const client = amagi({ cookies: { bilibili: '', douyin: '', kuaishou: '', xiaohongshu: '' } })
const result = await client.bilibili.fetcher.fetchEmojiList({})最后更新于 2026-09-24