douyin-download
Download Douyin (TikTok China) videos to local disk without needing yt-dlp, cookies, or login.
Workflow
Execute all steps in order.
Step 1 — Resolve Short URL
If the URL is a short link (v.douyin.com/xxx), resolve it first:
curl -sI "https://v.douyin.com/<ID>/" | grep -i location
Extract the full URL from the location: header. The numeric ID in /video/<ID>/ is the video_id_str (e.g. 7634389140783615232).
Step 2 — Fetch Mobile Page & Extract video_id
Fetch the mobile Douyin page and extract the internal video_id:
curl -sL "https://www.iesdouyin.com/share/video/<video_id_str>/" \
-H "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15" \
-H "Referer: https://www.douyin.com/" \
-o /tmp/dy_page.html
Extract video_id from the HTML:
grep -o 'video_id[^"]*"[^"]*"' /tmp/dy_page.html
This returns something like video_id=v0d00fg10000d7pc7dvog65j2bpvg940. The part after = is the internal_video_id.
Step 3 — Download Video
Construct the snssdk play URL and download:
curl -L "https://aweme.snssdk.com/aweme/v1/playwm/?video_id=<internal_video_id>&ratio=720p&line=0" \
-H "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15" \
-H "Referer: https://www.douyin.com/" \
-o ~/Downloads/<output_filename>.mp4
playwm= 720p with Douyin watermark- To get no-watermark version: replace
playwmwithplayand append&watermark=0(may need additional signature handling) - Save to
~/Downloads/using the video title as filename
Step 4 — Verify
Check file size and format:
ls -lh ~/Downloads/<output_filename>.mp4 && file ~/Downloads/<output_filename>.mp4
Key Notes
- No login required — the mobile endpoint (
iesdouyin.com) works without authentication - Download speed — typically reaches 10–15 MB/s on stable connections; a 100MB video finishes in ~10 seconds
- If download fails with 403/redirect: retry with a fresh
curl -L(follow redirects) and verify thevideo_idis correct - Watermark —
playwmalways includes Douyin watermark; getting no-watermark requires theplayendpoint with signed parameters (complex, not covered here) - Supported URLs:
v.douyin.com/xxxshort links andwww.iesdouyin.com/share/video/<ID>/direct links
Reference
See references/douyin_api.md for detailed endpoint documentation and troubleshooting.
