Douyin_TikTok_Download_API is a free, open source data extraction & web scraping project written in Python and released under Apache-2.0. It has 20,164 GitHub stars, 2,797 forks and 0 open issues, and was last pushed 3 days ago. On this registry it ranks #13 of 45 tracked projects in Data Extraction & Web Scraping, with 5 head-to-head comparisons available. It gained 32 stars over the last 3 tracked days.

What is Douyin_TikTok_Download_API?

Douyin_TikTok_Download_API is a free, Apache-2.0 licensed, self-hosted data API and no-watermark downloader for Douyin and TikTok that serves posts, authors, comments, and playlists to developers, data teams, and AI agent builders through an asynchronous REST API, an MCP server, a CLI, and a web console running on their own hardware.

What it is

The project is a Python 3.12+ service that scrapes Douyin and TikTok and exposes what it collects through several interfaces. The topics list names asyncio, FastAPI, OpenAPI, REST API, MCP server and Model Context Protocol, alongside crawler and downloader. It carries a self-maintaining identity pool, a PostgreSQL archive for everything it collects, and a web console. Video and image albums download without a watermark, because the service picks the clean stream the platform already publishes rather than stripping anything from a watermarked file.

The problem it solves is the third party in the request path. Hosted downloader sites and commercial scraper APIs require signup, impose quota, and sit between the user and the data. This project replaces that arrangement with software the operator runs: no signup, no quota, no outside party handling requests. It also replaces the manual upkeep scraper deployments usually demand, since the identity pool maintains itself rather than needing hand rotation. It lives in the data extraction and web scraping ecosystem, and collected records land in the operator's own database.

Key capabilities

  • Asynchronous REST API built on FastAPI, with OpenAPI documentation generated from the service.
  • MCP server implementing the Model Context Protocol, documented at documents/en/12-mcp.md, so agents can call the scraper as a tool.
  • Web console for interactive use, with a hosted demo at demo.douyin.wtf and documentation at douyin.wtf.
  • No-watermark download of video and image albums by selecting the clean stream the platform already publishes.
  • Self-healing identity pool that maintains its own sessions for Douyin and TikTok requests.
  • PostgreSQL archive storing collected posts, authors, comments and search results in the operator's own database.
  • Single published Docker image, evil0ctal/douyin_tiktok_download_api, brought up with one docker compose up.

Who uses it and how

  • Individual self-hosters running it on their own machine, who want downloads and metadata without an account or a rate limit.
  • Data and research teams that need Douyin or TikTok posts, authors, comments and search results retained in their own PostgreSQL rather than a vendor's store.
  • AI and agent developers who connect the MCP server to a model so collection runs as a tool call.
  • Operators who prefer the CLI or web console for ad hoc lookups and the REST API for scheduled jobs.
  • Projects consuming the container image directly, with the compose file as the deployment shape.

Getting started

Deployment is one docker compose up against the published image evil0ctal/douyin_tiktok_download_api, on Python 3.12+ if run from source. Documentation lives at douyin.wtf, with a live demo at demo.douyin.wtf.

How it compares

The facts provided list no paid products this project replaces, so no like-for-like contrast can be drawn. The only comparable commercial offering named in the README is the sponsor TikHub.io, a social media data and API marketplace the project does not claim to replace. Within this registry it stands alone as a self-hosted Douyin and TikTok scraping and download API.

When to use it โ€” and when not to

A self-hoster must run Docker and operate a PostgreSQL instance, and keep the identity pool healthy against platforms that change their endpoints and signatures, which the linked REER reverse-engineering forum discussion indicates is ongoing work. Anyone who wants a managed service with a support contract, or who is unwilling to run a database, should not pick this. The repository shows zero open issues at the time of writing, so the public tracker gives no picture of outstanding defects, and the README says nothing about SMTP, external object storage, or other optional infrastructure.

project readme (upstream, from github) โ€” read inline

Douyin_TikTok_Download_API

English | ็ฎ€ไฝ“ไธญๆ–‡

๐Ÿš€ 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.

GitHub license Release Version GitHub Star GitHub forks GitHub issues
CI CodeQL Last commit
Website Live demo Python MCP Docker Pulls Docker Image Size

๐Ÿ’– 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.

TikHub.io - Global Social Data & API Marketplace

TikHub.io

Your Ultimate Social Media Data & API Marketplace

Professional data solutions for Douyin, Xiaohongshu, TikTok, Instagram, YouTube, Twitter, and more.
Real-time Data | Flexible APIs | Seamless Integration | Competitive Pricing with Discounts

Buy and sell custom APIs, services, and social media solutions on the
TikHub.io Marketplace, alongside developers, businesses and content creators.

Trusted by leading global influencer marketing and social media intelligence platforms

โ†’ Visit TikHub.io  ยท  API docs

๐Ÿงฉ REER โ€” a forum for reverse engineering

reer.dev

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

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

**** 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,

readme truncated โ€” read the full docs on github

Frequently asked questions

Is Douyin_TikTok_Download_API free to use?

Douyin_TikTok_Download_API is open source under the Apache-2.0 licence. There is no licence fee and no seat count โ€” you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Douyin_TikTok_Download_API do?

๐Ÿš€ Self-hosted TikTok & Douyin scraper and no-watermark video downloader โ€” async REST API, MCP server, CLI and web console for posts, profiles, comments and pla

What is Douyin_TikTok_Download_API written in?

Douyin_TikTok_Download_API is primarily written in Python. Its source is publicly available at https://github.com/Evil0ctal/Douyin_TikTok_Download_API, and it has 20,164 GitHub stars.