问答
B 站的 mid(UID)是什么,从哪里拿到?
简短回答
mid 是 B 站账号永久不变的数字 ID,主页上显示为 UID,主页链接就是 space.bilibili.com/<mid>。okdata 返回的每条 B 站视频和评论都在 author.id 里带着它,比如一页约 20 条的视频搜索收费 $0.002。接口目录里没有 B 站账号信息接口,所以没法在这里用 mid 查粉丝数。
在 B 站,mid 是账号的数字用户 ID。个人主页上标的 UID 就是它,主页链接也是用它拼出来的:space.bilibili.com/ 后面跟这串数字。昵称可以改,mid 改不了,所以正经的 B 站数据集,UP 主和评论用户都按 mid 来区分。
长什么样
- 不带前缀的正整数。早年注册的账号 mid 很短;我们在 2026 年 11 月读到的返回里,mid 从 7 位到 16 位都有,近几年注册的账号是以 3 开头的 16 位数。
- 16 位数对 JavaScript 的数字类型和 64 位整数都还安全,但 Excel 只保留 15 位有效数字,多出来的会被改成 0。mid 请存成文本或 BIGINT,表格里那一列设成文本格式。
- 直播间有自己的房间号,视频有 aid 和 BV 号,评论有自己的评论 ID。这些都不是 mid,哪怕数字看着差不多。
okdata 在哪里返回它
| 接口 | 哪个字段是 mid | 费用 |
|---|---|---|
| B站视频搜索 | 每个视频 UP 主的 author.id |
每页 $0.002 |
| B站视频详情 | UP 主的 author.id |
$0.002 |
| B站视频评论 | 每个评论者的 author.id |
每页 $0.002 |
author.name 是抓取时的昵称。B 站的 author.followers 和 author.verified 返回 null,meta.unavailable 里会写明原因。
拿到 mid 之后做不了什么
接口目录里没有 B 站账号类接口:查不了粉丝数,取不了主页资料,也拉不了“这个 UP 主的全部视频”。如果你手上只有 mid,比较实际的办法是按 UP 主的名字或他常做的话题去搜,再按 author.id 过滤;要看粉丝数,就在浏览器里打开 space.bilibili.com/<mid>。
示例
找出某个话题下最新视频背后的 mid,并统计每个 UP 主出现了几次:
import os, requests
from collections import Counter
URL = "https://api.okdata.online/v1/bilibili/videos/search"
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
body = requests.get(URL, headers=H, timeout=60, params={
"query": "机械键盘 测评", "sort": "latest",
"fields": "id,title,author.id,author.name"}).json()
if body["code"] != "ok":
raise SystemExit(body["message"])
videos = body["data"]["items"]
by_mid = Counter((v["author"]["id"], v["author"]["name"]) for v in videos)
for (mid, name), n in by_mid.most_common(10):
print(mid, name, n, f"https://space.bilibili.com/{mid}")
一页 $0.002;几个关键词一共翻 10 页是 $0.02。
限制
- 搜索只能找到 B 站对这个关键词排出来的视频。UP 主从来不用你搜的那些词,就不会出现;按
author.id过滤,也只能在搜索返回的结果里过滤。 - 评论者的 mid 标识的是账号,不是人。把它当个人信息对待,分析用完就别一直留着。
- 视频已删除或设为私密时返回
not_found,不扣费。
想从搜索结果里挑合作 UP 主,可以看怎么在 B 站找某个领域的 UP 主做商单。
资料来源
这个问题出现过的地方(读取于 2026-11-12)
更新于