问答
怎么获取一个抖音账号发布的全部视频?
简短回答
先用主页链接查一次账号,拿到它的 sec_uid 和作品数,再翻 okdata 的抖音账号作品列表接口,每页约 20 条,$0.002 一次。有 400 条作品的账号要翻 20 页,加上查账号那一次,共 $0.042。
你想把竞品的整个抖音作品库放进一张表:每条视频什么时候发的、文案说了什么、数据怎么样,看看他们在什么方向上反复加码。读主页的工具常常只拿到第一屏,翻一页就停,或者漏掉最新发的几条。两个接口就能搞定:先查一次账号,再把作品列表翻完。
两个接口
- 抖音账号信息,
url=填主页链接(douyin.com/user/...或 v.douyin.com 分享短链)。返回id,也就是账号的 sec_uid,另外有粉丝数、获赞总数和作品数posts。 - 抖音账号作品列表,传入这个
id。每页约 20 条,从新到旧,带视频 ID、链接、文案、发布时间、点赞、评论、分享、收藏和话题标签。把page.next_cursor传回去,直到page.has_more为 false。
每个账号的费用
| 主页作品数 | 调用次数 | 费用 |
|---|---|---|
| 100 | 1 + 5 | {{cost:douyin.users.get1+douyin.users.videos.list5}} |
| 400 | 1 + 20 | {{cost:douyin.users.get1+douyin.users.videos.list20}} |
| 20 个竞品,每周取第一页,一年 | 1,040 | $2.08 |
脚本
import os, requests
API, HEAD = "https://api.okdata.online", {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
prof = requests.get(API + "/v1/douyin/users/get", headers=HEAD,
params={"url": "https://www.douyin.com/user/MS4wLjABAAAA..."}, timeout=60).json()["data"]["item"]
videos, params = [], {"id": prof["id"]}
while True:
body = requests.get(API + "/v1/douyin/users/videos/list", headers=HEAD, params=params, timeout=60).json()
videos += body["data"]["items"]
if not body["page"]["has_more"]:
break
params["cursor"] = body["page"]["next_cursor"]
print(prof["name"], len(videos), "of", prof["posts"])
注意事项
- 作品列表要的是 sec_uid(
MS4wLjABAAAA...),不是 App 里显示的抖音号。账号信息接口会把链接转成它。 - 置顶视频可能排在最前面,不按时间;在意顺序的话,按
published_at再排一遍。 - 私密、仅好友可见和已删除的视频不公开,所以列表条数可能少于
posts。 - 别人视频的播放量不公开,
metrics.views通常为 null。
其他选择
TikTokDownloader、Douyin_TikTok_Download_API 可以用你自己的 Cookie 把账号下的视频文件下载下来,适合做归档。抖音开放平台只能拿到授权了你应用的账号的视频,适合自己的账号或客户的账号。要定期盯多个竞品,可以看竞品监测方案。
更新于