Douyin Video Scraper - Metadata from URLs & Aweme IDs
Pricing
from $5.00 / 1,000 video scrapeds
Douyin Video Scraper - Metadata from URLs & Aweme IDs
Scrape public Douyin (抖音) videos from URLs, share links, or aweme IDs. Use for China-market research and agents needing one row per video. Not for search or profiles (see sibling Actors). Returns caption, stats, music, hashtags, author, CDN play URL. $0.005/video.
Pricing
from $5.00 / 1,000 video scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
Douyin Video Scraper
Turn a public Douyin (抖音) video URL, share link, or numeric aweme ID into one structured metadata row. Paste the identifiers you already have and get caption, like/comment/share/play counts, music, hashtags, author, and the CDN play URL Douyin exposes on the public web page.
This Actor is for China-market researchers, KOL agencies, and AI agents that need a single video's public facts before they branch into search or profile workflows.
Best fit for this Actor
- Enrich a known list of Douyin video URLs or aweme IDs with public stats and author fields.
- Audit a campaign creative after someone forwards a
v.douyin.comshare link. - Feed MCP or CRM workflows with one predictable row per video.
Use this Actor when you already have Douyin video URLs, share links, or aweme IDs and need one public metadata row each.
When you need keyword discovery, start at Douyin Search Scraper. After a video is confirmed, enrich the creator with Douyin Profile Scraper. For global TikTok video URLs, use TikTok Video Scraper. Comments, Shop SKUs, and MP4 archives stay on dedicated workflows.
Practical scenario
A cross-border ecommerce analyst pastes https://www.douyin.com/video/7577614489533680959 and keeps maxVideos at 1. The Actor returns one row: caption, like/play counts, music title, hashtags, author nickname, and a CDN playUrl. A deleted or private id finishes SUCCEEDED with VALID_EMPTY and no video-scraped charge. Videos that clear the public bar can then be sent to the profile scraper using authorProfileUrl.
Quick start input
{"videoUrls": ["https://www.douyin.com/video/7577614489533680959"],"maxVideos": 1}
videoUrls accepts canonical /video/{id} links, v.douyin.com share links, iesdouyin.com/share/video/{id} URLs, or a bare 15–21 digit aweme ID. Duplicates are collapsed before any browser navigation.
Input reference
| Field | Type | What it controls |
|---|---|---|
videoUrls | array (required) | Public Douyin video URLs, share links, or aweme IDs. Example: https://www.douyin.com/video/7577614489533680959. Max 50 unique values. |
maxVideos | integer | Hard cap after dedupe. Default 10, max 50. |
proxyConfiguration | object | Defaults to Apify Residential HK. Override only with a CN-capable residential pool. |
What data you receive
One dataset item is one public Douyin video.
{"awemeId": "7577614489533680959","videoUrl": "https://www.douyin.com/video/7577614489533680959","caption": "Example public caption #美食","createTime": "2025-09-04T13:53:20.000Z","durationSec": 15,"likeCount": 1200,"commentCount": 34,"shareCount": 12,"playCount": 89000,"coverUrl": "https://example.invalid/cover.jpg","playUrl": "https://example.invalid/play.mp4","hashtags": ["美食"],"authorNickname": "Creator","authorProfileUrl": "https://www.douyin.com/user/MS4wLjABAAAAexample","scrapedAt": "2025-01-15T12:00:00.000Z","provider": "camoufox"}
| Field | Meaning |
|---|---|
awemeId + videoUrl | Stable video id and canonical permalink |
likeCount / playCount / commentCount / shareCount | Public engagement counters when Douyin exposes them |
playUrl / coverUrl | CDN URLs from the public payload; they expire and may include a watermark |
authorNickname / authorProfileUrl | Public creator identity for a follow-up profile scrape |
scrapedAt / provider | Collection time (ISO 8601) and Camoufox route |
OUTPUT and RUN_SUMMARY in the default key-value store hold outcome, itemsPushed, and chargedEventCounts.
Each row includes a public CDN playUrl. This SKU returns metadata plus that link; a separate archive-to-store step is out of contract.
Use through the API
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~douyin-video-scraper/runs" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"videoUrls":["https://www.douyin.com/video/7577614489533680959"],"maxVideos":1}'
Download rows as JSON, CSV, Excel, or HTML from the Dataset tab.
Use with AI agents through Apify MCP
Scrape public Douyin video metadata for https://www.douyin.com/video/7577614489533680959. Return awemeId, caption, likeCount, playCount, authorNickname, and videoUrl. Keep the scope to one public video.
Connect via https://mcp.apify.com. Read OUTPUT.outcome and itemsPushed to interpret empty datasets. Cost signal: about $0.005 per returned video plus platform usage. Deleted or private videos surface as VALID_EMPTY without a video-scraped charge.
Connect the workflow
- After you confirm a video, enrich the creator with Douyin Profile Scraper.
- When you still need video URLs, discover them with Douyin Search Scraper.
- For global TikTok rather than 抖音, use TikTok Video Scraper.
Pricing
This Actor uses Pay per event plus Apify platform usage. The live Pricing tab is the current source of truth for billing details.
apify-actor-start: $0.00005 per runvideo-scraped: $0.005 per returned video metadata row
A one-video prefill is about $0.005 in result events plus Camoufox / residential platform usage. 10 rows ≈ $0.05 in video-scraped events before platform usage. Invalid input and unavailable videos have no video-scraped charge.
How it works
- Normalize and deduplicate video URLs, share links, and aweme IDs.
- Warm up
douyin.comin Camoufox, then open/video/{awemeId}. - Intercept
/aweme/v1/web/aweme/detail/(with RENDER_DATA / router fallback). - Charge
video-scrapedfor found rows, then write the dataset item.
Reliability
Camoufox with Apify Residential HK → SG → TW → JP → MO is the default recovery path for Douyin's signed web payload. When every country still shows the captcha interstitial, the Actor finishes UPSTREAM_FAILED with zero billed rows — retry later or supply a CN-capable residential proxy. Deleted or private videos finish SUCCEEDED with VALID_EMPTY.
Best results
- Pass public
/video/{id}URLs, share links, or numeric aweme IDs. - Keep
maxVideosat 1–3 while you confirm a proxy path. - Supply a CN-capable residential proxy when Apify Residential HK/SG/TW/JP/MO hits the captcha interstitial.
- A deleted id finishes
SUCCEEDEDwithVALID_EMPTYand no video charge.
Evidence and freshness
Public fields come from Douyin's signed aweme/detail payload at scrape time (scrapedAt is ISO 8601). CDN playUrl values expire. Treat each result as a fresh public snapshot.
Builder's note
I found that Douyin search is often captcha-walled from default Apify Residential pools, but a direct video page can still expose the signed aweme/detail XHR after a homepage cookie warmup — the same Camoufox path that already works for public Douyin profiles. Keeping this Actor to one verb (URL/ID → one metadata row) lets agents call search or profile siblings only when they need those jobs, and keeps charging on metadata rows because the CDN URL already covers playback.
Legal and responsible use
Use this Actor on public Douyin web data you are authorized to process, follow applicable law and Douyin's terms, and keep the output in your own compliance workflow. Douyin and 抖音 are trademarks of ByteDance. This Actor is independent of Douyin / ByteDance.
Issues and feature requests: use the Actor Issues tab on Apify.