问答

怎么获取一个抖音账号发布的全部视频?

简短回答

先用主页链接查一次账号,拿到它的 sec_uid 和作品数,再翻 okdata 的抖音账号作品列表接口,每页约 20 条,$0.002 一次。有 400 条作品的账号要翻 20 页,加上查账号那一次,共 $0.042。

你想把竞品的整个抖音作品库放进一张表:每条视频什么时候发的、文案说了什么、数据怎么样,看看他们在什么方向上反复加码。读主页的工具常常只拿到第一屏,翻一页就停,或者漏掉最新发的几条。两个接口就能搞定:先查一次账号,再把作品列表翻完。

两个接口

  1. 抖音账号信息,url= 填主页链接(douyin.com/user/... 或 v.douyin.com 分享短链)。返回 id,也就是账号的 sec_uid,另外有粉丝数、获赞总数和作品数 posts。
  2. 抖音账号作品列表,传入这个 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 把账号下的视频文件下载下来,适合做归档。抖音开放平台只能拿到授权了你应用的账号的视频,适合自己的账号或客户的账号。要定期盯多个竞品,可以看竞品监测方案。

更新于