Also available in
Douyin TikTok Download API 是 Evil0ctal 开发的开源、自托管抖音与 TikTok 数据接口项目。很多人最早知道它,是因为它能解析短视频链接、拿到无水印媒体地址。到了现在的 v5,这个项目已经不只是一个视频解析工具了。
现在它更像一套完整的抖音 / TikTok 数据服务:作品、作者、评论、搜索、合集等数据都可以通过 REST API 获取,也提供 MCP 和 CLI,解析后的数据还能保存到自己的 PostgreSQL 中。管理身份池、任务、下载、日志这些操作,则放进了 Web Console。
截至 2026 年 9 月,最新正式版本是 v5.1.0,发布于 9 月 15 日。这一版又补上了抖音和 TikTok 收藏夹、TikTok 转发列表,以及 TikTok Collection 链接解析。
它是第三方开源项目,不属于抖音或 TikTok 官方 API,也和 TikTok for Business MCP Server 不是一回事。项目访问的是平台 Web 端相关接口,所以即使部署在自己的服务器上,账号权限、IP 限制、平台风控和服务条款这些边界依然存在。
Douyin TikTok Download API 现在能做什么?
v5 对外主要有三种调用方式:REST API、MCP 和 CLI,它们共用同一套 service 层。
REST API 适合脚本、后台程序和自动化服务;MCP 可以接 Claude Code、Claude Desktop、Codex CLI 等支持 Model Context Protocol 的客户端;CLI 则可以直接在终端里调用。
Web Console 更像管理后台,用来查看身份池、调度器、资料库、下载、日志和诊断信息。

Douyin TikTok Download API 是什么?
Douyin TikTok Download API 可以看作抖音、TikTok Web 数据和自己应用之间的一层接口服务。
普通程序可以通过 REST API 获取 JSON 数据,支持 MCP 的 AI Agent 可以调用项目提供的工具,终端里也可以通过 dtk CLI 操作。Web Console 则负责管理身份池、调度器、任务、资料库、下载、日志和 API Key。
REST、MCP 和 CLI 共用同一个 service 层。MCP 并不是把 REST API 再转发一遍,而是直接调用相同的业务逻辑。
当前 REST API 位于:
/api/v1/...
MCP 默认入口为:
/mcp
接口文档可以通过以下路径查看:
/docs
/swagger
/redoc
它和 TikTok 官方 MCP Server 有什么区别?
搜索 TikTok MCP 时,现在很容易看到 TikTok 官方的 TikTok for Business MCP Server。名称虽然接近,但两者解决的不是同一类问题。
| 对比 | Douyin TikTok Download API | TikTok for Business MCP Server |
|---|---|---|
| 性质 | 第三方开源项目 | TikTok 官方服务 |
| 主要用途 | 抖音 / TikTok 内容数据 | TikTok Ads 广告业务 |
| 数据类型 | 作品、作者、评论、搜索、合集等 | 广告系列、受众、创意、投放数据等 |
| 自托管 | 支持 | 使用 TikTok 官方服务 |
| MCP | 支持 | 支持 |
如果要让 Agent 管理 TikTok 广告、读取广告报表或调整受众,应该使用官方 Business MCP。Douyin TikTok Download API 更偏向内容数据读取、归档和自托管接口。
v5.1.0 增加了哪些功能?
v5.1.0 主要补充了收藏夹相关数据。
抖音和 TikTok 都可以读取收藏夹列表以及单个收藏夹中的作品,并返回收藏夹的归属和公开状态。公开收藏夹可以通过游客身份读取,私密收藏夹则会拒绝访问。
TikTok 还增加了作者转发作品接口,并支持把 Collection 分享链接直接交给 /parse 解析,例如:
https://www.tiktok.com/@name/collection/Title-...
这一版本也加强了参数检查。比如 TikTok 列表接口的 count 超过平台允许范围时,会在请求发往上游之前直接返回明确错误,而不是得到一个容易被误认为“没有内容”的空结果。
它能获取哪些抖音和 TikTok 数据?
当前接口覆盖的内容包括:
- 单条视频和图集作品
- 作者公开资料
- 作者作品列表
- 作者喜欢列表
- 合集和播放列表
- 评论和评论回复
- 关键词搜索
- 媒体地址
- 收藏夹
- 归档后的历史数据
TikTok 还支持部分粉丝、关注和转发数据。
抖音的粉丝和关注列表需要登录会话,游客身份拿不到,因此 v5 没有把这两个接口注册成普通公开接口。
解析后的数据可以自动进入 PostgreSQL。即使上游内容后来删除,本地已经归档的数据仍可能保留,具体取决于实例自己的归档设置。
REST API、MCP 和 CLI 怎么选?
REST API 更适合网站、后台程序、Python 脚本或者自动化服务。知道接口路径和参数以后,直接发送 HTTP 请求即可。
MCP 更适合 Claude Code、Claude Desktop、Codex CLI 以及其他支持 Model Context Protocol 的客户端。Agent 可以发现实例提供的工具,再根据指令调用对应功能。
CLI 适合直接在服务器终端操作:
dtk --help
Web Console 则负责实例管理,不属于另一套数据协议。
API 默认使用异步任务
v5 的数据接口默认不是“请求发出去以后一直等到结果回来”。
不传 ?wait=,或者传 ?wait=0 时,服务器会直接返回:
HTTP 202
task_id
state
拿到 task_id 后,可以继续查询:
GET /api/v1/tasks/{task_id}
如果只是解析一条链接,希望尽量在一次请求里拿到结果,可以使用 ?wait=N。
官方 Quick Start 中的调用方式类似:
API_KEY='dtk_...'
curl -sS -X POST \
'http://127.0.0.1:8000/api/v1/parse?wait=25' \
-H "X-API-Key: ${API_KEY}" \
-H 'content-type: application/json' \
-d '{"url":"你的抖音或 TikTok 分享链接"}'
如果任务在 25 秒内结束,会直接返回 200 和结果;如果还没结束,返回的仍然是 202 和任务 ID,这种情况并不表示解析失败。
当前 api.max_wait_seconds 默认上限为 30 秒。请求的等待时间超过实例上限时,会直接返回参数错误。
身份池是 v5 的一个核心变化
早期 v4 常见的做法是手动从浏览器复制 Cookie,再写进配置文件。Cookie 一旦失效,相关请求也可能跟着失败。
v5 把 Cookie、浏览器环境和相关状态整理成了独立的身份池。
启用可选的 CloakBrowser 浏览器组件后,系统可以自动生成游客身份,并根据实际请求情况维护身份健康状态。
调度器会处理:
- 身份健康度
- 身份轮换
- 每个身份的独占锁
- 每个「身份 + 接口」独立限流
- 接口级熔断
- 结构化请求日志
如果某个身份连续遇到风控或接口错误,可以降低它的使用优先级,而不是继续把所有请求都压到同一个失效身份上。
如果没有启用 browser profile,也可以手动导入 Cookie。个人登录 Cookie 主要用于需要登录权限的数据,不是运行整个项目的唯一方式。
所谓“无水印”并不是 AI 擦除水印
这个项目早期经常被当作抖音 TikTok 去水印接口使用,但这里的“无水印”并不是把画面中的水印重新修掉。
项目会从平台返回的数据里选择平台本来就提供的干净媒体流。
也就是说,它做的是媒体地址解析,而不是 Photoshop、AI Inpainting 一类图像修复。
如果上游没有提供对应媒体流,接口也不能自己重新生成一份原始视频。
怎么用 Docker 部署 Douyin TikTok Download API?
当前 v5 主要通过 Docker Compose 部署。官方文档使用了 Docker Compose v2.24 之后提供的相关能力,因此建议使用 v2.24 或更新版本。
获取源码:
git clone https://github.com/Evil0ctal/Douyin_TikTok_Download_API.git
cd Douyin_TikTok_Download_API
复制环境变量模板:
cp .env.example .env
.env 中需要配置自己的密钥和数据库密码,例如 DTK_SECRET_KEY、PostgreSQL 和 Redis 相关信息。
启动时可以让 Compose 明确读取仓库根目录的 .env:
COMPOSE_ENV_FILES=.env \
docker compose -p dtk -f docker/compose.yml \
up -d --wait --wait-timeout 300
默认 API 绑定在:
127.0.0.1:8000
v5 的部署不只是一个 API 进程,核心服务包含 API、Worker、数据库和 Redis;下载器以及自动生成游客身份所需的浏览器组件可以按需要启用。
为什么需要 PostgreSQL 和 Redis?
PostgreSQL 用于保存归档数据、身份、任务、设置等需要长期保留的信息。
Redis 主要承担任务状态、缓存以及调度过程中需要快速读取的数据。
当前技术栈还包括 FastAPI、SQLAlchemy 2.0、React、TypeScript 和 TimescaleDB。
项目没有要求额外部署 Kafka、Elasticsearch、对象存储或 Kubernetes,对单机自托管来说相对容易控制。
公开 Demo 可以直接体验
项目提供公开 Demo:https://demo.douyin.wtf/
Demo 可以查看调试台、调度器、资料库和接口文档,也提供演示账号与 API Key。
它是一个共享实例,当前限制为每 10 秒 30 次请求,超过后进入 10 秒冷却。
演示环境可能随时重置、暂停或升级,不适合作为正式应用的生产 API。
公共 Demo 也不应该提交自己的个人 Cookie、代理账号或其他敏感凭据。
v4 和 v5 差别有多大?
v5 并不是在 v4 上继续修改出来的小版本。
main 和 v4 没有共同祖先,v5 是从新的空分支重新实现的,因此接口、部署、配置和数据结构都发生了明显变化。
| 项目 | v4 | v5 |
|---|---|---|
| 身份 | 手动配置 Cookie | 身份池 + 可选自动游客身份 |
| 调用方式 | 同步 | 默认异步任务 |
| 数据留存 | 解析后直接使用 | PostgreSQL + Redis,可归档 |
| 访问控制 | 较简单 | API Key、Scope、角色 |
| 界面 | PyWebIO | React Web Console |
| 接口 | REST | REST + MCP + CLI |
| 平台 | 抖音、TikTok、Bilibili | 抖音、TikTok |
v4 代码目前仍保留在 v4 分支,最后一个正式发布版为 V4.1.2。
Bilibili 暂时没有迁移到 v5。小红书、快手和微博目前也不属于 v5 的支持平台。
自托管以后还会被限流吗?
会。
自托管控制的是自己的 API、数据库、身份池和归档服务,真正的数据仍然来自抖音和 TikTok。
上游平台仍然可以根据 IP、Cookie、账号状态、请求频率、签名和地区限制请求。
v5 的身份健康度、令牌桶和接口熔断可以让问题更容易发现和隔离,但不能保证某个 Web 接口永久有效。
数据安全和使用边界
DTK_SECRET_KEY 用于保护项目保存的 Cookie 和代理凭据。这个密钥需要自己生成并妥善保存,不适合使用网上复制来的固定值。
PostgreSQL、Redis 和 Web Console 也没有必要直接暴露在公网。需要远程访问时,可以配合 HTTPS、反向代理、API Key 或私有网络使用。
Apache-2.0 授权的是项目源码,并不代表抖音或 TikTok 同时授权了数据采集和内容再分发。
项目文档也明确提醒,自动化采集可能受到平台服务条款限制,使用者需要遵守所在地法律,并自行处理版权、个人数据和内容授权问题。
能够获取一个公开视频的媒体地址,不等于拥有这段视频、图片或音乐的转载和再发布权。
Douyin TikTok Download API 项目地址
GitHub:https://github.com/Evil0ctal/Douyin_TikTok_Download_API
项目文档:https://douyin.wtf/
在线 Demo:https://demo.douyin.wtf/
最新版本:https://github.com/Evil0ctal/Douyin_TikTok_Download_API/releases/latest
Douyin TikTok Download API 常见问题
Douyin TikTok Download API 是官方 API 吗?
不是。它是第三方开源项目,与抖音、TikTok 官方 API 以及 TikTok for Business MCP Server 都不是同一项服务。
必须提供自己的 Cookie 吗?
不一定。启用浏览器身份组件后,可以自动生成游客身份。需要登录权限的数据才可能需要导入自己的登录身份。
为什么 API 返回 202?
因为 v5 的数据接口默认异步执行。返回的 task_id 可以继续查询结果,也可以使用 ?wait=N 等待一段时间。
无水印视频是 AI 去除水印吗?
不是。项目选择的是平台提供的干净媒体流,并不会对视频画面进行 AI 修复。
可以连接 Claude Code 吗?
可以。项目提供 /mcp 接口,可以连接支持 Model Context Protocol 的客户端。
v4 可以直接升级到 v5 吗?
不能按普通小版本升级来处理。v5 是重新实现的版本,旧版接口、配置和部署方式需要重新适配。

评论(0)