Douyin_TikTok_Download_API
🚀 自托管的抖音、TikTok、B 站数据采集与无水印视频下载 API,支持 AI agent 通过 MCP 调用与离线语音转文字,Docker 一键部署。| Self-hosted TikTok, Douyin & Bilibili scraper and no-watermark video downloader — async REST API, MCP server for AI agents, CLI and web console, plus offline speech-to-text for downloaded videos.
Install / Use
claude mcp add Evil0ctal -- npx -y github:Evil0ctal/Douyin_TikTok_Download_APIIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
OperationsSupported Platforms
Our assessment of Douyin_TikTok_Download_API
Douyin_TikTok_Download_API scores 98/100 on our quality scale, 8th of 755 Operations skills we index (top 2%).
Its MCP Server is 28 KB long, well organised into 27 sections with 13 code examples: a thorough specification that gives an agent plenty to work with.
With 20,909 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated today, so Douyin_TikTok_Download_API is actively maintained.
- Our last check on 2026-10-17 found the source still online.
- It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.
AI review by kimi-k2.7-code on 2026-09-24. Automated pattern scan on 2026-09-24. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
Douyin_TikTok_Download_API compared with similar skills
All 4 of these similar skills score higher than Douyin_TikTok_Download_API; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| Douyin_TikTok_Download_API (this skill)by Evil0ctal | 98 | 20.9k | today | MCP Server |
| Agent-Reachby Panniantong | 100 | 102.9k | 1d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 77.9k | 1d ago | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.6k | 1d ago | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 89.8k | today | MCP Server |
Frequently asked questions
- How do I install Douyin_TikTok_Download_API?
- Run
claude mcp add Evil0ctal -- npx -y github:Evil0ctal/Douyin_TikTok_Download_API. The install tabs above show the steps for each supported agent. - Which AI agents does Douyin_TikTok_Download_API work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is Douyin_TikTok_Download_API safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It is Apache-2.0-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is Douyin_TikTok_Download_API still maintained?
- The repository was last updated today, so Douyin_TikTok_Download_API is actively maintained.
Skill content
View source on GitHub🚀 A self-hosted data API for Douyin and TikTok. One docker compose up, an identity pool that maintains itself, and a REST API, MCP server and web console on top.
Open source, free, and it runs on your own machine — no signup, no quota, nobody else in the path. It fetches posts, authors, comments and search, downloads video and image albums without a watermark (it picks the clean stream the platform already publishes rather than stripping anything), and keeps what it collects in your own PostgreSQL.
</div>💖 Sponsors
These sponsors paid to be here, and Douyin_TikTok_Download_API stays free and open because of it. To sponsor the project, see my GitHub Sponsors page.
<div align="center"> <a href="https://www.tikhub.io/?utm_source=douyin_tiktok_download_api&utm_medium=referral&utm_campaign=sponsor&utm_content=readme_logo" target="_blank" rel="sponsored noopener"> <img src="https://tikhub.io/logo.jpeg" width="100" alt="TikHub.io - Global Social Data & API Marketplace"> </a> <h2> <a href="https://www.tikhub.io/?utm_source=douyin_tiktok_download_api&utm_medium=referral&utm_campaign=sponsor&utm_content=readme_name" target="_blank" rel="sponsored noopener"><b>TikHub.io</b></a> </h2> <p>Your Ultimate Social Media Data & API Marketplace</p> <p> Professional data solutions for Douyin, Xiaohongshu, TikTok, Instagram, YouTube, Twitter, and more.<br> Real-time Data | Flexible APIs | Seamless Integration | Competitive Pricing with Discounts </p> <p> Buy and sell custom APIs, services, and social media solutions on the<br> TikHub.io Marketplace, alongside developers, businesses and content creators. </p> <p><em>Trusted by leading global influencer marketing and social media intelligence platforms</em></p> <p> <a href="https://www.tikhub.io/?utm_source=douyin_tiktok_download_api&utm_medium=referral&utm_campaign=sponsor&utm_content=readme_cta" target="_blank" rel="sponsored noopener"><b>→ Visit TikHub.io</b></a> · <a href="https://api.tikhub.io/?utm_source=douyin_tiktok_download_api&utm_medium=referral&utm_campaign=sponsor&utm_content=readme_docs" target="_blank" rel="sponsored noopener">API docs</a> </p> </div>🧩 REER — a forum for reverse engineering
<div align="center"> <a href="https://reer.dev" target="_blank" rel="noopener"> <img src="./logo/reer.png" width="88" alt="REER"> </a> <h3><a href="https://reer.dev" target="_blank" rel="noopener"><b>reer.dev</b></a></h3> </div>Somewhere to put what you work out. This project exists because people wrote down how a signature was built; the forum is for the next round of that — signatures, protocols, packers, anything taken apart.
Free, no advertising, and close to no rules beyond the obvious. Bilingual, English and Chinese. Register and post; nothing is gated.
🎬 What it looks like
<div align="center"> <img src="./screenshots/console-en.gif" width="900" alt="The DTK console: overview, identities, scheduler, playground, library, downloads, API docs and MCP"/> </div>One real call: paste a link, send it, get the normalised result back. The identity pool, the scheduler and the API reference it passed through on the way are all in the same console. The interface follows the browser's language, and both are written by hand rather than machine-translated. 中文界面
Try it without installing anything
https://demo.douyin.wtf is a live instance, open to everyone. Sign in — the login page fills the demo account in for you — and use the console: the playground, the scheduler, the library, the API reference. The same account comes with an API key you can call the scraping endpoints with, shown in plaintext on the API keys page.
It is read-only. Demo requests are not written to the request log or the archive, so the database of a public instance cannot be filled by strangers, and switching demo mode off ends every demo session and kills the key immediately.
Rate limit: 30 requests per 10 seconds. Go over it and you are cooled down for 10 seconds, during which every request is refused. It is a shared instance, and the identity pool behind it is the ceiling for everybody using it at once.
What the demo is for is deciding whether to run your own. It is not a service to build on — it can go down, be reset, or be switched off, and none of that will be announced.
🚀 v4 vs v5
v5 is a rewrite. It started from an empty branch and inherits no v4 code.
v4's real problem was never a shortage of features — it was that the API would die quietly and nobody would know. A cookie expires, a signature algorithm changes, an endpoint gets rate-limited, and you find out when someone files an issue. v5 puts "you can see it" and "it heals itself" ahead of features.
| | v4 | v5 |
|---|---|---|
| Where identities come from | You copy cookies out of a browser into config.yaml | A headless browser mints guest identities, and the pool tops itself up when usable ones run low |
| How requests go out | Straight out, as they arrive | Health tiers, quantised LRU rotation, one in-flight lock per identity, a token bucket per (identity, endpoint), a circuit breaker per endpoint |
| When something breaks | You wait for a bug report | One structured record per request, live health for every identity and endpoint, visible in the console |
| Call style | Synchronous — send and wait | Asynchronous by default (202 + task_id); add ?wait= to go back to synchronous |
| What is kept | Nothing; parsed and discarded | PostgreSQL + Redis. Everything parsed is archived, so a post deleted upstream is still here |
| Access control | None; anyone can call it | API keys with scopes and roles, managed in the console |
| Interface | A single PyWebIO page | A React console: identity pool, scheduler, library, downloads, logs, diagnostics |
| Ways in | REST | REST, MCP and a CLI, all over the same service layer |
| Signing | X-Bogus, A_Bogus | a_bogus, X-Bogus, X-Gnarly, X-Dynosaur in pure Python, with a browser fallback |
| Deployment | pip install -r requirements.txt + python start.py | docker compose up, three images |
| Platforms | Douyin, TikTok, Bilibili | Douyin, TikTok |
Bilibili is the one thing that went backwards: v5 does not have it yet. It shares neither the signing nor the identity machinery with Douyin and TikTok, so the rewrite left it out for now.
Still on v4?
v4's code stays on the v4 branch,
the image is still published, and one command brings it up:
docker run -d --name dtk-v4 --restart unless-stopped \
-p 8080:80 evil0ctal/douyin_tiktok_download_api:V4.1.2
Then open http://localhost:8080; the API reference is at /docs. Port 8080 is
deliberate — v5 binds 8000, so the two versions can run side by side on one machine.
Replace the Douyin cookie before you use it. v4 has no identity pool, and the cookie
baked into the image expired long ago, so Douyin endpoints answer 400 until you put
your own in:
docker cp dtk-v4:/app/crawlers/douyin/web/config.yaml ./douyin-web.yaml
# replace the Cookie line with one from your browser, then save
docker rm -f dtk-v4
docker run -d --name dtk-v4 --restart unless-stopped -p 8080:80 \
-v "$PWD/douyin-web.yaml:/app/crawlers/douyin/web/config.yaml" \
evil0ctal/douyin_tiktok_download_api:V4.1.2
TikTok's two config files are at /app/crawlers/tiktok/web/config.yaml and
/app/crawlers/tiktok/app/config.yaml, and are mounted the same way.
To keep it under Compose instead, one file is enough — with douyin-web.yaml already
copied out next to it, or Docker will create a directory under that name and the app
will fail to read its config:
# compose.yml
services:
app:
image: evil0ctal/douyin_tiktok_download_api:V4.1.2
container_name: dtk-v4
restart: unless-stopped
ports:
- "8080:80"
environment:
TZ: Asia/Shanghai
volumes:
- ./douyin-web.yaml:/app/crawlers/douyin/web/config.yaml
docker rm -f dtk-v4 # the container from the run above holds the name
docker compose -p dtk-v4 up -d
main is v5 now and latest follows main, so pin the tag to stay on v4. V4.1.2
is the last v4 release; the branch merged a few PRs after it (Bilibili downloads, cookie
hot-reload), and that code is published under the commit tag 5be4838.
There is no guided installer for v4 — the script in Quick start below installs v5. What is above is all v4 gets: the branch still takes PRs, but nothing new is built on it, and a fresh install should start on v5.
Building this together
There are a few group chats around my open-source projects. If you want to work
on this one, or just talk shop, add me on WeChat at Evil0ctal with the note
github 交流 and I will add you.
The groups are for learning from each other. No advertising and nothing illegal — they are for making friends and talking about the work.
📦
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
102.9kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
77.9kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.6kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Scrapling
89.8k🕷️ The BEST Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
