Douyin 抖音 Video Scraper - Metadata
Pricing
from $3.50 / 1,000 results
Douyin 抖音 Video Scraper - Metadata
Scrape Douyin (抖音) videos and image posts from links, share links or IDs. Get caption, author, music, likes, comments, shares, hashtags, video quality links and post date as clean JSON. Optional MP4, cover and image downloads. Bulk input, no account or cookies needed.
Pricing
from $3.50 / 1,000 results
Rating
0.0
(0)
Developer
Insights Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 hours ago
Last modified
Categories
Share
What is the Douyin video scraper?
Douyin 抖音 Video Scraper - Metadata is a Douyin video scraper for marketers, researchers and developers. Paste Douyin links, share links or video IDs, and you get the text, author, music, likes, comments, shares, saves, hashtags, media links and posting date of every public video or image post. On the Apify Free plan you can save up to 10 videos per run, and paid Apify plans have no per-run cap. Just paste your links and click Start. You don't need to write code, a Douyin account or cookies.
Douyin (抖音) is often called the Chinese TikTok: it is the short-video app used in mainland China. This Actor works as a TikTok China scraper for the videos and posts you list. In Chinese, this kind of tool is called a 抖音爬虫 (Douyin crawler).
- Douyin marketing research: see which posts, sounds and hashtags get the most likes, shares and saves in your niche.
- Douyin influencer vetting: check a creator's verification, total likes received and post count, plus the numbers on the videos you list. Turn on 🧪 Add extra details to also get the creator's follower and following counts.
- Spot Douyin trends: collect hashtags, topic tags and music from the videos you track and see which ones keep coming back.
- Build a Douyin dataset: turn a list of links into one tidy table for BI tools, spreadsheets or LLM pipelines.
- Archive media: save MP4 files, covers and slideshow images of posts you are allowed to keep.
- Audit link lists: find out which links are deleted, private or unavailable.
What can Douyin 抖音 Video Scraper - Metadata do?
- 🔗 Reads many link formats: video links, image post (note) links, page links with
modal_id,v.douyin.comshare links, the whole share text copied from the app, and bare numeric IDs, all mixed together. - 📝 Works as a Douyin extractor for videos and image posts: each one comes back as one row with more than 50 fields and nested blocks.
- 📸 Optional downloads: it also works as a Douyin video downloader. Save the MP4, the cover image and every slide of an image post next to the data.
- ⚡ Live results: each row is saved the moment its video is finished, and duplicates are read only once.
- 📦 Export Douyin data to JSON, CSV, Excel, XML or HTML. You can also call the Actor via the API, schedule runs, monitor them and connect them to Make, Zapier, Google Sheets and more.
- 🛡️ Handles blocking for you: if Douyin refuses the connection, the Actor retries and switches to Apify Proxy automatically when your account can use it. See what happens without Apify Proxy.
Douyin video scraper: what data can it extract?
The Actor collects the public Douyin metadata of each video or image post, grouped so it's easy to read. In short, it is a Douyin video extractor: one row of Douyin video metadata per link. Field names below are the exact names in the dataset.
🔗 id, url, shareUrl, inputUrl | 📝 text, caption, itemTitle, previewTitle, descLanguage |
📅 createTime, createDate (Beijing time) | 📍 region, city, cityCode, location (tagged place) |
👤 authorMeta: name, IDs, handles, verified, bio, total likes received, post count, avatar | ⭐ statistics: diggCount (likes), commentCount, shareCount, collectCount (saves), playCount, downloadCount, forwardCount, admireCount |
🎵 musicMeta: sound ID, title, artist, original or not, length, audio link, owner | 🎥 videoMeta: width, height, quality, format, HDR, watermark flag, link expiry, play/download links, bit rates, covers |
🔗 videoUrl, audioUrl, coverUrl, durationSeconds | 🏷️ hashtags, videoTags, mentions, chapters, series |
📸 type (video or image), images (slides of an image post) | ✅ permissions, interaction: duet, stitch, download, share and comment switches, private / deleted state |
💲 commerce, anchors, risk, share, xiguaCrossPost, aiMetadata | 🚩 15 yes/no flags such as isPinned, isAd, isStory, isShared |
With 🧪 Add extra details switched on, each row also gets an extras block: author follower and following counts, recommend and danmaku counts, secure item ID, AI-generated flag, download restriction note and suggested searches.
Note: The Actor fills a field only when Douyin includes it in the public data for that video. Otherwise most fields are
nulland lists are empty. This also applies to the counts instatistics:playCount(views),downloadCount,forwardCountandadmireCountare not guaranteed for every video, so run a quick test to see which counts you get.musicMeta,series,locationandriskarenullwhen the post has no sound, series, place or risk notice. For a Douyin image post,typeis"image",urluses/note/,videoUrlisnulland the slides are listed inimages.
What data can't it extract?
- Comments and replies
- All videos of a creator's profile, keyword or hashtag search results, or trending lists
- Transcripts or subtitles
- Audio files (you get the
audioUrllink, but no MP3 is saved) - Private, deleted or otherwise unavailable videos
How to scrape Douyin video data
The Actor is built for an easy start, even if you've never extracted data from the web before.
- Create a free Apify account using your email.
- Open the Apify Douyin scraper page.
- The 🔗 Douyin video links or IDs field comes prefilled with one example link, so you can click Start right away. Or replace it with your own video links, a Douyin share link (in the app, tap Share and copy the link or the whole share text) or a Douyin video ID.
- Click Start and wait for the run to finish. Rows appear in the Output tab while the run is still working.
- Click Export in the Output tab and download your data in JSON, CSV, Excel, XML or HTML.
⚠️ Two defaults can make a first run look small. On the Free plan, a run saves at most 10 videos, and any extra links are skipped (and not charged). The cap counts saved videos only, so links that fail don't use it up. Videos are read roughly in list order, several at a time, so the saved ones come from the start of your list, but they are not always exactly the first 10. All download options start switched off, so you get data rows but no saved files until you turn them on.
How much does it cost to scrape Douyin?
The Actor uses pay-per-event pricing. Your bill has three parts:
| Part | Price | When it is charged |
|---|---|---|
| 💲 Results | $5.00 per 1,000 results ($0.005 per video or image post) on the Free plan (lower on paid plans, see below) | For each video or image post row saved to the dataset |
| 🚀 Actor start | $0.0002 per run with the default settings* | Once per run |
| ⚙️ Platform usage | Apify's normal usage rates for your plan | On top of the two event prices. See below |
| Apify plan | Price per result | Price per 1,000 results |
|---|---|---|
| Free | $0.005 | $5.00 |
| Starter | $0.0045 | $4.50 |
| Scale | $0.004 | $4.00 |
| Business and higher | $0.0035 | $3.50 |
Paid Apify plans get a lower result price. The plan discount applies to that price only. The start fee is the same on every plan, and platform usage is billed at your Apify plan's own rates.
* The start fee is $0.00005 per GB of memory. The default memory is 4 GB, because the Actor opens Douyin in a browser, so the fee is 4 × $0.00005 = $0.0002. You don't need to change the memory setting.
- Not charged as results: failed-item rows (from 🚧 Keep failed items in the results), links skipped because a cap or limit was reached, and saved files. Saved files still use storage, which counts as platform usage.
- Lower result price on paid plans: see the plan table above. The start fee is the same on every plan.
Rounded examples for the result and start charges at the Free plan price, before platform usage. On the Free plan, only the first row is a single run. See Is scraping Douyin free?
| Videos saved | Results | Start fee | Event total |
|---|---|---|---|
| 10 | $0.05 | $0.0002 | ≈ $0.05 |
| 100 | $0.50 | $0.0002 | ≈ $0.50 |
| 1,000 | $5.00 | $0.0002 | ≈ $5.00 |
What platform usage is made of:
- Compute: the run's memory (4 GB by default) multiplied by how long the run takes.
- Storage and data transfer: these grow when you save MP4s, covers or slides, because the files are downloaded and stored. Data-only runs store just the rows.
- Apify Proxy traffic: this only applies when the Actor has to switch to Apify Proxy.
How to estimate platform usage: we have no measured figures to quote, so use your own test runs:
- Run the Actor on 10 of your links with the download options off. Open the finished run and note the usage cost and how long the run took.
- Run the same 10 links again with 📥 Save MP4 video files on, and note the same two numbers.
- Divide each usage cost by the number of videos saved to get the usage per video, with and without MP4s. Multiply by the number of videos you plan to scrape, and add the result charges and the start fee.
The difference between the two runs shows how much the MP4 downloads add. Long videos are big files, so they add more.
Keep costs under control: set a maximum charge limit when you start a run. When the limit is reached, the Actor stops cleanly and keeps everything saved so far. See the pricing tab for the current event list.
Is scraping Douyin free?
You can try it for free. The Apify Free plan gives you $5 of credit every month, and that one credit covers the result charges and the platform usage together. Free plan runs are limited to 10 videos per run. At $5.00 per 1,000 results, 1,000 videos would use up the whole $5 on result charges alone, before any platform usage, so the Free plan suits tests and small jobs. For larger jobs, and for more than 10 videos in one run, use a paid Apify plan.
Douyin video scraper input
The only required field is 🔗 Douyin video links or IDs (urls). Everything else is optional. Set the input in the Actor's form, or send it as JSON via the API.
Settings most people change
| Form field | JSON name | Default | What it does |
|---|---|---|---|
| 🔗 Douyin video links or IDs | urls | none (required) | One link or ID per line. Mixed formats are fine, and duplicates are skipped |
| 📥 Save MP4 video files | shouldDownloadVideos | off | Saves each video's Douyin MP4 file to storage and fills videoFile. Image posts have no MP4 |
| 🌄 Save cover images | shouldDownloadCovers | off | Saves the cover of every video and image post. Fills coverFile |
| 📸 Save slideshow images | shouldDownloadSlideshowImages | off | Saves every slide of a Douyin slideshow (image post). Fills slideshowFiles. Has no effect on normal videos |
| 🧪 Add extra details | includeExtras | off | Adds the extras block to every row |
| 🚧 Keep failed items in the results | includeFailedItems | off | Adds a short, free row for every link that could not be read |
Here's an example that reads one video and returns its data only, with no files saved:
{"urls": ["https://www.douyin.com/video/7577614489533680959"]}
See the input tab for the full description of every field.
Which Douyin links work?
You can paste any of these forms, one per line:
- ✅
https://www.douyin.com/video/7577614489533680959(video link) - ✅
https://www.douyin.com/note/<id>(image post link) - ✅ Any Douyin page link that contains
modal_id=<id> - ✅ A
v.douyin.comshare link, or the whole share text copied from the app - ✅ An
iesdouyin.com/share/video/<id>/link - ✅
7577614489533680959(a bare numeric video ID) - ❌ A creator profile link without
modal_id. The Actor reads single videos and posts, not whole profiles.
⚠️ A link that contains no video is skipped and the log says so. Turn on 🚧 Keep failed items in the results to see it in the dataset as well.
Advanced settings
| Form field | JSON name | Default | What it does |
|---|---|---|---|
| 📂 Storage name for saved files | videoKvStoreName | empty | Name of a key-value store for saved files (lowercase letters, digits and dashes). Empty means the run's default key-value store |
| 🚀 Parallel videos | maxConcurrency | 4 | How many videos are read at the same time (1 to 10). Lower it if you see many slow-downs |
| 🔁 Retries per request | maxRetries | 3 | How often a failed or blocked request is retried before the Actor gives up on that video (0 to 10) |
| 🌐 Proxy | proxyConfiguration | no proxy | The Actor starts without a proxy. When Douyin blocks it, it switches to Apify Proxy automatically and stays on it for the rest of the run. Proxy traffic counts as platform usage. If your account can't use Apify Proxy, the Actor stays on the direct connection. Videos it still can't read after the retries are marked as failed. In that case, if Douyin blocks the very first connection, every video in that run is marked as failed, so add your own proxy here |
Douyin video scraper output
Results are stored in a dataset. You can browse it in the Output tab through 9 ready-made views: Overview, Content and flags, Author, Engagement, Video quality, Music, Tags, mentions and chapters, Permissions and commerce, and Saved files and images. The Engagement view is a quick table of Douyin video statistics. To download the data, click Export in the Output tab (the same export is in Storage → Datasets), pick the fields you need, and choose JSON, CSV, Excel, XML or HTML.
JSON example
This is an abridged sample row for the input example above, so it shows the Douyin video info for that link. It combines values from a real run of this video with the example values in the Actor's dataset schema (same video), so numbers such as likes will differ when you run it today. Long text is shortened with …, and most nested fields are left out to keep it readable. The full row has every field listed in the data table.
{"id": "7577614489533680959","url": "https://www.douyin.com/video/7577614489533680959","durationSeconds": 1082.5,"type": "video","text": "这个贵州五线小城,凭什么是中国“吃商”最高的城市? 糟了,捅了贵州老吃家的窝了! #抖音美食班当季新菜单 …","itemTitle": "这个贵州五线小城,凭什么是中国“吃商”最高的城市?","createTime": 1764320400,"createDate": "2025-11-28","region": "CN","authorMeta": { "id": "75736792009", "name": "盗月社食遇记", "customUsername": "daoyueshe", "verified": true },"videoMeta": { "width": 3840, "height": 2160, "ratio": "2160p", "format": "dash", "hasWatermark": true },"musicMeta": { "id": "7577614774507424547", "author": "盗月社食遇记", "isOriginal": true },"statistics": { "diggCount": 4064473, "commentCount": 163237, "shareCount": 5189298, "collectCount": 855171 },"hashtags": [{ "id": "7572059655971538944", "name": "抖音美食班当季新菜单" }],"videoTags": [{ "name": "美食", "level": 1 }],"videoFile": null,"coverFile": null,"slideshowFiles": null,"inputUrl": "https://www.douyin.com/video/7577614489533680959"}
How to read it:
durationSecondsis the length in seconds (about 18 minutes here).createTimeis the posting time in Unix seconds, andcreateDateis the same moment as a Beijing-time date.diggCountis the like count andcollectCountis the number of saves. The other counts, includingplayCount, are left out of this sample to keep it short.isOriginalistrue, so Douyin marks this sound as original.ratiois the quality label of the video (2160p here).videoFile,coverFileandslideshowFilesarenullbecause the download options were off in this input.
When optional fields are filled
videoFile,coverFileandslideshowFilesare filled only when the matching download option is on and the file was saved. Each entry holdskvStoreKey,kvStoreId,kvUrl,sizeBytes,mimeTypeandsourceUrl. Otherwise these fields arenull.extrasappears only when 🧪 Add extra details is on. When it is off, the field is missing from the row.- Failed-item rows (only with 🚧 Keep failed items in the results) contain just
id,inputUrlanderror. Theerrorvalue starts withunavailable:(deleted, private or not found),failed:(could not be read) orunresolved:(no video found in the input). Forunresolved:rows,idisnull.
⚠️ Media links inside a row (
videoUrl,audioUrl,coverUrland the links invideoMeta) stop working after a few hours, andvideoMeta.cdnUrlExpiresAttells you when. Saved files don't expire this way.
Saved files and run summary
Saved files go to a key-value store with keys like video-<id>.mp4, cover-<id>.jpg and slide-<id>-01.jpg. The extension follows the file type.
To get the files onto your computer: open Storage → Key-value stores in Apify Console and click the store (the run's default store, or the one named in 📂 Storage name for saved files). Then download a record, such as video-<id>.mp4, from the record list. Apify Console can also download all records at once. You can also open the kvUrl link in a row's videoFile, coverFile or slideshowFiles entry.
⚠️ Per the Apify storage docs, unnamed key-value stores (the run's default) expire after 7 days unless otherwise specified, and named stores are kept indefinitely. To keep your files, set 📂 Storage name for saved files. The run's default key-value store also gets a
SUMMARYrecord with the run counts: videos saved, videos billed, failed or unavailable, skipped, files saved, files failed, and duration.
Tips and advanced usage
How many results can you scrape?
You get one row per unique video or image post you list. Paid plans have no per-run cap from the Actor, while the Free plan saves up to 10 videos per run. What you actually get depends on how many of your links are still public and on your maximum charge limit. Start with a quick test run of a few links.
How to get faster or cheaper results
- Leave the download options off unless you need the files. Data-only rows are faster and cheaper to collect.
- Paste many links into one run instead of starting one run per link. You pay the start fee once, and videos are read in parallel.
- If the log shows many slow-downs, lower 🚀 Parallel videos.
- We don't quote run times. They depend on how many videos you list, the download options and how fast Douyin answers. Time a small test run and scale up from there.
- For Douyin data analysis, use the Engagement, Author and Music views and export only the columns you need.
Using it as a Douyin downloader
Turn on 📥 Save MP4 video files and the Actor saves each video's MP4 to storage. The row's videoFile then holds the file's name in storage (kvStoreKey) and a link to the file (kvUrl). See Saved files and run summary for how to download them. Image posts have no MP4, so use 📸 Save slideshow images for those.
Known issues
- Very large files may be skipped when saving. The log names any file that was skipped.
- Rows are saved in the order the videos finish, which may differ from your input order. Use
inputUrlto match them. - Fields that Douyin doesn't send for a video stay
null.
Integrations and API
Can I use it as a Douyin video scraper API?
Yes. The Apify API lets you start runs, schedule them and fetch results programmatically, so the Actor works as a ready-made Douyin scraper API. This is the Apify API, not an official Douyin API. Use the apify-client NPM package for Node.js or the apify-client PyPI package for Python. The API tab has ready-to-use code for this Douyin video API.
Douyin API Python example
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("insights_data/douyin-video-scraper-metadata").call(run_input={"urls": ["https://www.douyin.com/video/7577614489533680959"]})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["id"], item["statistics"]["diggCount"])
Can I integrate it with other apps?
Yes. Connect the Actor with almost any cloud service through Apify integrations: Make, Zapier, Slack, Google Sheets, Google Drive, Airbyte, GitHub, LangChain and more. For example, schedule a daily run on the links your team tracks and send the Douyin engagement numbers to a Google Sheet, so your team always has fresh Douyin data. Use webhooks to trigger an action whenever a run finishes.
Can I use it with AI agents (MCP)?
Yes. Connect the Actor to Claude and other AI assistants through the Apify MCP server. Your agent can then call it whenever it needs Douyin video data. Open the MCP tab for setup steps.
Other scrapers for Chinese and short-video platforms
These Actors from the same author cover data that this one doesn't: TikTok profiles and comments, and other Chinese platforms.
| 🎥 TikTok Profile Scraper: videos, reposts, stories and playlists of any TikTok profile, with views, likes, comments, shares, music, hashtags and author stats | 💬 TikTok Comments & Replies Scraper: TikTok comments and replies with text, likes, reply counts, dates and commenter details |
| 📺 Bilibili Scraper — Videos, Comments, Danmaku & Creator Uploads: Bilibili videos, comments, danmaku, creator uploads and rankings | 📰 Weibo Scraper — Posts, Comments, Profiles & Hot Search: Sina Weibo posts, comments, profiles, topics and hot search boards |
FAQ
Is it legal to scrape Douyin?
Scraping publicly available data is generally legal, but you are responsible for how you use it. This Actor reads only public video pages, without logging in. Respect personal data rules (such as GDPR, or PIPL in China), copyright in any video you save, and Douyin's terms of service, and only collect personal data when you have a legitimate reason. This is not legal advice. If you are unsure, ask a lawyer.
How does the Douyin scraper work?
It works like a person opening each video in a browser, only faster. First it turns every input into a video ID, following share links where needed, and drops duplicates. Then it opens Douyin as a normal visitor would, reads the public details of several videos in parallel and saves each one as a row right away. If you turned on downloads, it also saves the files. It doesn't wander through profiles or search pages. It reads exactly the videos you list.
How to download Douyin video files?
You can download Douyin video files in bulk: paste the links, switch on 📥 Save MP4 video files and start the run. Each MP4 lands in storage, and the row's videoFile entry gives its name and link. To download the files, open Storage → Key-value stores, click the store and download the records you need, or download them all at once. Image posts have no MP4. For those, switch on 📸 Save slideshow images. For a Douyin cover download, switch on 🌄 Save cover images.
How is it different from copying data by hand?
| Feature | Douyin 抖音 Video Scraper - Metadata | Copying from the app by hand |
|---|---|---|
| Many links in one go | ✅ Bulk input, any mix of formats | ❌ One video at a time |
| Structured fields (likes, saves, author, music, hashtags) | ✅ More than 50 fields per row | ❌ Only what you type out |
| Export to CSV / Excel / JSON | ✅ | ❌ |
| Saved MP4, covers and slides | ✅ Optional | ❌ Manual, one by one |
| Schedule and API access | ✅ | ❌ |
Why scrape Douyin video data?
- Compare content: see Douyin statistics such as likes, comments, shares and saves side by side for any set of posts.
- Learn from sounds and tags: collect Douyin hashtags, topic tags and Douyin music to see what works in a category.
- Measure campaigns: track the posts behind a campaign on a schedule.
- Feed AI and BI: structured text and numbers drop straight into dashboards or LLM workflows.
Why am I getting fewer results than expected?
- Free plan cap: Free plan runs save at most 10 videos, and the log says when links were skipped.
- Blocking without Apify Proxy: if Douyin blocks the connection and your account can't use Apify Proxy, videos that still can't be read after the retries are marked as failed. Add your own proxy in 🌐 Proxy, or use an account with Apify Proxy access.
- Duplicates: the same video entered twice is read once.
- Unavailable links: deleted, private or unreadable videos are left out. Turn on 🚧 Keep failed items in the results to see each one with its
error. - Profile links: links to a profile without
modal_idare skipped. - Maximum charge limit: the run stops cleanly when your limit is reached.
Do I need a Douyin account or cookies?
No. The Actor reads public data that any visitor can see, so you don't need a login, cookies or an API key from Douyin.
Support and feedback
Found a bug or have a feature request? Please create an issue on the Issues tab.
Need a custom solution, more fields or a different Douyin dataset? Contact us at hello.insights.data@gmail.com.
Built and maintained by insights_data.