# 怎么追踪一个 B 站视频的播放量变化？

> 按 BV 号定时读取 B 站视频数据，画出播放量的逐小时曲线。追一天、追一周、追十个视频分别多少钱，附可直接放进 cron 的脚本。

网页版：https://okdata.online/zh/answers/bilibili-track-video-views-over-time/

**简短回答：**按 BV 号定时调用 B站视频详情接口，每次读数连同时间一起存下来。每次读数 $0.002，一个视频每小时一次、追一周是 $0.336，十个视频追一周是 $3.36。每次都能拿到播放、点赞、投币、收藏和弹幕数。

你投的商单视频周五晚上八点上线，UP 主承诺首周 30 万播放。你想看的是整条曲线：周六有没有起量，周一是不是停滞了，上了热门之后有没有二次增长。B 站页面上只显示当前的数字，想要曲线，就得按固定间隔去读，并把每一次读数都留下来。

## 用哪个接口

[B站视频详情](/zh/apis/bilibili/videos/get/)按 BV 号返回视频当前的数据。加上 `view=full`，每次读数都有播放、点赞、评论、分享、收藏，`ext` 里还有投币和弹幕数。返回里的 `meta.fetched_at` 是抓取时间，画图时当横轴用。

## 不同频率的费用

| 方案 | 读数次数 | 费用 |
|---|---|---|
| 上线后 24 小时，每小时一次 | 24 | $0.048 |
| 一个视频，每小时一次，追 7 天 | 168 | $0.336 |
| 十个视频，每小时一次，追 7 天 | 1,680 | $3.36 |
| 一个视频，每天一次，追 30 天 | 30 | $0.06 |

比较划算的做法是前三天每小时一次，之后改成每天一次。B 站视频的大部分播放都集中在刚发布的那几天。

## 放进 cron 的脚本

用 `0 * * * * python track.py` 每小时跑一次：

```python
import csv, datetime, os, requests

URL = "https://api.okdata.online/v1/bilibili/videos/get"
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
VIDEOS = ["BV1xx411c7mD"]

hour = datetime.datetime.utcnow().strftime("%Y%m%d%H")
with open("views.csv", "a", newline="") as f:
    w = csv.writer(f)
    for bv in VIDEOS:
        # 每个视频每小时一个 key：cron 重跑时第二次是免费回放
        headers = {**H, "Idempotency-Key": f"{bv}-{hour}"}
        body = requests.get(URL, headers=headers, params={"id": bv, "view": "full"}, timeout=60).json()
        if body["code"] != "ok":
            print(bv, body["code"], body["message"])
            continue
        v = body["data"]["item"]
        w.writerow([body["meta"]["fetched_at"], bv, v["metrics"]["views"], v["metrics"]["likes"],
                    v["ext"]["coins"], v["metrics"]["favorites"], v["ext"]["danmaku"]])
```

用表格打开 `views.csv`，以时间为横轴画播放量；相邻两行相减，就是每小时新增的播放。

## 看数据时心里要有数

- B 站的公开计数是分批更新的，可能这一小时纹丝不动，下一小时一下跳很多。看趋势要看连续几个小时，别盯着单个点。
- 每分钟读一次没有意义：计数没涨得那么快，每次读数却都要付费。
- 这些都是谁都能看到的公开数字。完播率、流量来源和观众画像只在 UP 主的创作中心里。
- 视频被下架时返回 `not_found`，不扣费。

## 有些情况换个办法更好

如果是你投的商单，一周后请 UP 主导出创作中心的数据，那里的信息外部怎么读都读不到；你自己记录的逐小时曲线正好用来核对。想要现成图表，也可以用第三方的 B 站数据分析平台。愿意自己部署和维护的话，开源库 bilibili-api 能免费做同样的定时读取。要盯的是一批竞品而不是一个视频，看[竞品监测方案](/zh/solutions/competitor-monitoring/)。

## 用到的接口

- [B站视频详情](https://okdata.online/zh/apis/bilibili/videos/get/) `bilibili.videos.get`：$0.002/次

更新于 2026-11-12
