Douyin Scraper & Video Downloader (TikTok China) avatar

Douyin Scraper & Video Downloader (TikTok China)

Pricing

from $6.80 / 1,000 results

Go to Apify Store
Douyin Scraper & Video Downloader (TikTok China)

Douyin Scraper & Video Downloader (TikTok China)

Scrape Douyin (抖音, TikTok China) videos by URL: video description, author profile (nickname, Douyin ID, bio), like/comment/share/collect counts, music, hashtags, cover and a downloadable no-watermark video URL. Paste video links, get clean data. Export to JSON, CSV or Excel.

Pricing

from $6.80 / 1,000 results

Rating

5.0

(1)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

8 days ago

Last modified

Share

Douyin Scraper & Video Downloader (TikTok China)

Douyin Scraper & Video Downloader (TikTok China)

Here is one real result, with every field the actor returns:

{
"coverUrl": "https://p5-ex-gddgtc-sign.douyinpic.com/tos-cn-i-dy/4fdd97b652dc49ecb33ba0f8da7a6da4~tplv-dy-resize-walign-adapt-aq:540:q75.webp",
"awemeId": "7663425423312817471",
"postType": "video",
"desc": "小学必备单词drive 国际音标拼读 @词老大英语 #侯马英语启蒙 #国际音标 #小学英语教学",
"videoUrl": "https://www.douyin.com/video/7663425423312817471",
"createTime": "2026-07-17T09:24:42.000Z",
"authorNickname": "词老大英语",
"authorDouyinId": "cilaoda",
"authorSecUid": "MS4wLjABAAAAp0ouJ60K9CgtmESy97b9ywEL0FxYa7MOcoJFbQFwzjQ",
"authorSignature": "侯马词老大英语老师,专业八级!",
"authorAvatar": "https://p11.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-i-0813_546cf1f2e18649d4bfe42fa142bce356.jpeg",
"authorVideoCount": 669,
"authorFollowersCount": null,
"authorUrl": "https://www.douyin.com/user/MS4wLjABAAAAp0ouJ60K9CgtmESy97b9ywEL0FxYa7MOcoJFbQFwzjQ",
"likeCount": 20,
"commentCount": 2,
"shareCount": 3,
"collectCount": 11,
"playCount": 0,
"durationMs": 26867,
"width": 1282,
"height": 818,
"downloadUrl": "https://aweme.snssdk.com/aweme/v1/play/?video_id=v0d00fg10000d9cv9dnog65iokknpicg&ratio=720p&line=0",
"downloadUrlWatermarked": "https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0d00fg10000d9cv9dnog65iokknpicg&ratio=720p&line=0",
"imageUrls": [],
"musicTitle": "@词老大英语创作的原声一词老大英语",
"musicAuthor": "词老大英语",
"musicId": "7663425497971346227",
"musicDurationSec": 26,
"hashtags": ["侯马英语启蒙", "国际音标", "侯马英语补习班", "侯马英语培训排名", "小学英语教学"],
"collectionName": "国际音标|侯马小学英语单词速记法",
"pageUrl": "https://www.douyin.com/video/7663425423312817471",
"source": "douyin.com",
"observedAt": "2026-08-10T14:33:03.979Z",
"error": null
}

The most complete Douyin scraper available. It returns every field Douyin exposes for each post (description, author profile, engagement counts, music, hashtags, cover), plus a downloadable no-watermark video URL, and lets you paste any mix of desktop links, H5 share links, short links or raw video IDs to get exactly the videos you need.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor takes one or more Douyin (抖音, TikTok China) video links and returns one clean record per video: description, author profile (nickname, Douyin ID, sec_uid, bio, avatar, video count), like/comment/share/collect/play counts, video dimensions and duration, music (title, author, ID, duration), hashtags, cover image, and both a no-watermark and a watermarked downloadable video URL. Image posts return their image URLs in imageUrls. It accepts full desktop links, H5 share links, short links, or raw numeric video IDs. Missing source values are returned as null, never invented.

Optional paid add-ons translate the caption into English, classify its sentiment, and extract topic tags and a content category.

Quickstart

Open the actor, paste this into the input, and press Run. It returns clean data for two Douyin videos.

{
"videoUrls": [
"https://www.douyin.com/video/7663425423312817471",
"https://www.douyin.com/video/7641816063399456127"
],
"maxVideos": 10
}

You can mix link formats in one run, for example a short https://v.douyin.com/xxxxx/ link and a raw numeric ID.

Input reference

FieldTypeRequiredDefaultDescription
videoUrlsstring[]notwo sample videosDouyin video links: desktop URLs, H5 share links, short links, or raw numeric video IDs. One run processes the whole list.
maxVideosintegerno10Maximum videos to collect across all URLs. Free plans are capped at 10.
withTranslatebooleannofalsePaid add-on. AI translates each caption into natural English. Billed per video only when the AI returns usable output. Paid plans only.
withSentimentbooleannofalsePaid add-on. AI classifies each caption's sentiment with a confidence score. Paid plans only.
withTopicsbooleannofalsePaid add-on. AI extracts topic tags and a broad content category per caption. Paid plans only.

Output reference

One dataset item per video. Types: string, integer, string[], or null when the source value is absent.

FieldTypeDescription
awemeIdstringDouyin video ID (unique per video).
postTypestringvideo or image (photo post).
descstringVideo caption/description text.
videoUrlstringCanonical Douyin video URL.
pageUrlstringThe page URL the record was resolved from.
coverUrlstringCover/thumbnail image URL.
createTimestringISO 8601 publish time.
authorNicknamestringAuthor display name.
authorDouyinIdstringAuthor Douyin ID (handle).
authorSecUidstringAuthor sec_uid (stable profile ID).
authorSignaturestringAuthor bio/signature.
authorAvatarstringAuthor avatar image URL.
authorVideoCountintegerNumber of videos on the author profile, or null.
authorFollowersCountintegerAuthor follower count, or null when not exposed.
authorUrlstringAuthor profile URL.
likeCountintegerNumber of likes.
commentCountintegerNumber of comments.
shareCountintegerNumber of shares.
collectCountintegerNumber of saves/collects.
playCountintegerPlay count when exposed (often 0 on Douyin).
durationMsintegerVideo duration in milliseconds.
widthintegerVideo width in pixels.
heightintegerVideo height in pixels.
downloadUrlstringNo-watermark downloadable video URL.
downloadUrlWatermarkedstringWatermarked downloadable video URL.
imageUrlsstring[]Image URLs for photo posts. Empty for video posts.
musicTitlestringBackground music title.
musicAuthorstringMusic author.
musicIdstringMusic ID.
musicDurationSecintegerMusic duration in seconds.
hashtagsstring[]Hashtags parsed from the caption.
collectionNamestringName of the collection/playlist the video belongs to, or null.
sourcestringData source. Always douyin.com.
observedAtstringISO 8601 timestamp of when the record was collected.
aiTranslationstringEnglish translation of the caption (translate add-on).
aiSentimentstringSentiment label positive/negative/neutral (sentiment add-on).
aiSentimentScorenumberSentiment confidence score (sentiment add-on).
aiTopicsstring[]Topic/keyword tags (topics add-on).
aiCategorystringBroad content category (topics add-on).
errorstringPresent only on a failed item: a record with a populated error field is written instead.

Example output record

Real record from a live run (input {"videoUrls":["https://www.douyin.com/video/7663425423312817471"]}):

{
"awemeId": "7663425423312817471",
"postType": "video",
"desc": "小学必备单词drive 国际音标拼读 #国际音标 #小学英语教学",
"authorNickname": "词老大英语",
"authorDouyinId": "cilaoda",
"likeCount": 20,
"commentCount": 2,
"shareCount": 3,
"collectCount": 11,
"durationMs": 26867,
"downloadUrl": "https://aweme.snssdk.com/aweme/v1/play/?video_id=v0d00fg10000d9cv9dnog65iokknpicg&ratio=720p&line=0",
"hashtags": ["侯马英语启蒙", "国际音标", "小学英语教学"],
"source": "douyin.com",
"observedAt": "2026-08-10T14:33:03.979Z",
"error": null
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~douyin-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"videoUrls":["https://www.douyin.com/video/7663425423312817471"]}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~douyin-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"videoUrls":["https://v.douyin.com/xxxxx/","7641816063399456127"],"maxVideos":50}'

Apify CLI:

apify call scrapers_lat/douyin-scraper \
--input '{"videoUrls":["https://www.douyin.com/video/7641816063399456127"],"withTranslate":true}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per video returned (result event). See the pricing tab for the current per-result price.
  • AI add-ons. Translation, sentiment and topics each bill per video only when the AI returns usable output. They are disabled by default and require a paid plan.
  • No charge on failure. A video that cannot be resolved writes a record with a populated error field and is not charged. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 videos per run. Upgrade for higher maxVideos.

FAQ and troubleshooting

A video returned an error. Why? The link could not be resolved (deleted, private, region-locked, or a malformed ID). Confirm the video opens in a browser. Errored items are not charged.

Which link formats are accepted? Full desktop links, H5 share links (iesdouyin.com/share/video/...), short links (v.douyin.com/xxxxx/), and raw numeric video IDs. You can mix them in one run.

Is the download URL really watermark-free? downloadUrl is the no-watermark stream and downloadUrlWatermarked is the watermarked one. These are time-limited CDN URLs, so download promptly.

Why is authorFollowersCount or playCount null or 0? Douyin does not always expose these on the video payload. Missing values are returned as null and playCount is often 0; the actor never invents counts.

Can I scrape photo posts? Yes. Photo posts return postType: image with the image URLs in imageUrls.

Is this an official Douyin/TikTok tool? No. This actor is independent and has no affiliation with Douyin, ByteDance or TikTok. It reads only data that is publicly available for the videos you provide. Use it in accordance with Douyin's terms and applicable copyright.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with Douyin, ByteDance or TikTok. Accesses only publicly available data for the videos you provide. Use in accordance with Douyin's terms and applicable copyright.