VOOZH about

URL: https://apify.com/zen-studio/douyin-video-scraper

โ‡ฑ Douyin ๆŠ–้Ÿณ Video Scraper - Metadata + MP4 Downloads ยท Apify


๐Ÿ‘ Douyin ๆŠ–้Ÿณ Video Scraper - Metadata + MP4 Downloads avatar

Douyin ๆŠ–้Ÿณ Video Scraper - Metadata + MP4 Downloads

Pricing

from $3.99 / 1,000 videos

Go to Apify Store

Douyin ๆŠ–้Ÿณ Video Scraper - Metadata + MP4 Downloads

Extract Douyin (ๆŠ–้Ÿณ) video metadata: statistics, music tracks, hashtags, mentions, chapters, and creator profiles in 56 structured fields. 1,000 videos in ~70 seconds. Optional MP4, cover, and slideshow downloads. Accepts video URLs, share links, and bare aweme IDs.

Pricing

from $3.99 / 1,000 videos

Rating

0.0

(0)

Developer

๐Ÿ‘ Zen Studio

Zen Studio

Maintained by Community

Actor stats

0

Bookmarked

62

Total users

26

Monthly active users

a day ago

Last modified

Share

Douyin Video Scraper (ๆŠ–้Ÿณ) | Metadata, Music, Hashtags & MP4 Downloads (2026)

1,000 Douyin (ๆŠ–้Ÿณ) videos in ~70 seconds: full video metadata, statistics, music tracks, hashtags, chapters, and creator profiles in clean structured JSON. Optional MP4, cover, and slideshow downloads.

๐Ÿ‘ Douyin (ๆŠ–้Ÿณ) video scraper: video metadata, statistics, music, and creator profile as structured JSON with optional MP4 downloads

Copy to your AI assistant

zen-studio/douyin-video-scraper on Apify. Scrapes Douyin videos with full metadata: statistics, music, hashtags, chapters, video tags, mentions, location, series, plus 42-field authorMeta. Flat top-level videoUrl/audioUrl(MP3)/coverUrl/durationSeconds in every row for quick download access (data also nested under videoMeta/musicMeta). Optional MP4/cover/slideshow downloads to KV store (kvUrl returned per file). Call ApifyClient("TOKEN").actor("zen-studio/douyin-video-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. videoUrls accepts douyin.com/video/<id>, iesdouyin share, v.douyin.com short links, or bare numeric aweme IDs. PPE: $6.99/1k videos, $4.99/1k MP4 downloads, covers+slideshow free. Steeper discounts on Starter/Scale/Business tiers. Token: https://console.apify.com/account/integrations
Zen Studio ยท Chinese-platform suite   โ€ข  RedNote (ๅฐ็บขไนฆ), Douyin (ๆŠ–้Ÿณ), Xigua (่ฅฟ็“œ่ง†้ข‘)
๐Ÿ‘ Image
 Douyin Video

โžค You are here
๐Ÿ‘ Image
 Douyin Search

Keyword + filters, 60+ fields
๐Ÿ‘ Image
 Douyin Profile

Followers, posts & hashtags
๐Ÿ‘ Image
 Douyin Comments

Comments & nested replies

How to Scrape Douyin Videos

Basic: metadata only

{
"videoUrls":[
"https://www.douyin.com/video/7577614489533680959",
"7630302640823912635"
]
}

With cover images saved to your storage

{
"videoUrls":[
"https://www.douyin.com/video/7577614489533680959",
"https://v.douyin.com/iAbc123/"
],
"shouldDownloadCovers":true
}

Kitchen-sink: metadata + MP4 + cover + slideshow

{
"videoUrls":["7577614489533680959"],
"shouldDownloadVideos":true,
"shouldDownloadCovers":true,
"shouldDownloadSlideshowImages":true
}

Input Parameters

ParameterTypeDefaultDescription
videoUrlsstring[]requiredDouyin video URLs, share links, short links, or bare numeric aweme IDs.
shouldDownloadVideosbooleanfalseSave MP4 video files to your key-value store. Adds $4.99 per 1,000 successful downloads. Image-text posts have no MP4.
shouldDownloadCoversbooleanfalseSave each video's cover image (JPEG) to your key-value store. Free.
shouldDownloadSlideshowImagesbooleanfalseFor image-text posts, save every slide image to your key-value store. Free.
videoKvStoreNamestringnoneOptional named key-value store for downloads. Leave empty to use the run's default store.
proxyConfigurationobjectApify ResidentialDefaults to China residential with Hong Kong fallback. Override only if you have a specific proxy requirement.

Accepted video input formats

FormatExample
Browser address bar URLhttps://www.douyin.com/video/7577614489533680959
App share link (auto-resolved)https://v.douyin.com/iAbc123/
Legacy share URLhttps://www.iesdouyin.com/share/video/7577614489533680959/
Bare numeric aweme ID7577614489533680959

What Data Can You Extract from Each Douyin Video?

One row per video with deeply nested rich blocks. The headline numbers:

  • 56 top-level fields per video: identity, captions, timestamps, locality, content flags, type labels, plus eleven nested object/array blocks.
  • 42 author fields under authorMeta: covering everything from total likes received to school, badge label, custom username, cross-platform IDs, and five avatar sizes.
  • 25 video media fields under videoMeta: multi-quality variants (H.264, H.265, low-bitrate), bit-rate ladder, dimensions, sprite preview, and cdnUrlExpiresAt so you know when CDN links die.
  • 45 music fields under musicMeta: full track + artist info, owner attribution, durations, audition snippets, commerce flags.
  • 13 engagement counters under statistics: likes, comments, shares, plays, downloads, forwards, collects, plus admire and live-watch counts.

Per-video fields (top level)

  • Quick media links: videoUrl (direct MP4 playback/download URL), audioUrl (original-sound / track MP3), coverUrl (cover image), durationSeconds (video length in seconds). Flat top-level fields for download bots and no-code pipelines (n8n, Make, Zapier). The same data, with more quality variants, also lives under videoMeta / musicMeta.
  • Identity: id, url, shareUrl, type (video / imageText / story), awemeType + awemeTypeLabel (video, imageText, ad, forward, duet, story, โ€ฆ), mediaType + mediaTypeLabel (video, imageText, image, audio), inputUrl
  • Content: text, caption, itemTitle, previewTitle, descLanguage
  • Timing & locality: createTime (unix), createDate (ISO), region (creator IP), city + cityCode (upload location, GB/T 2260)
  • Flags: isPinned, isAd, isPgc, isShared, isStory, is24Story, is25Story, isFirstVideo, isLifeItem, isKaraoke, isDuetSing, isFantasy, isInScope, isImageBeat, isVr

Author / creator fields (authorMeta, ~40 fields)

id, secUid, name, username, customUsername, verified, verificationReason, signature (bio), five avatar sizes (avatarThumb, avatarMedium, avatar168, avatar300, avatarLarge), bgImage, followingCount, followersCount, followersCountStr, totalLikesReceived, likesGivenCount, awemeCount, gender, language, country, ipLocation, verifyType, customVerifyText, enterpriseVerifyReason, userAge, birthday, constellation, isLiving, roomId, isStar, usesSeries, withShopEntry, commerceUserLevel, school, customUsernameUpdatedAt, shareUrl, shareQrCodeUri, crossPlatform, mcnInfo.

Video media (videoMeta)

Multi-quality playback URLs (playUrl, downloadUrl, playUrlH264, playUrlH265, playUrlLowBitrate), full bit-rate ladder (bitRates[] with quality, fps, codec flag), dimensions (width, height, ratio, format), four cover variants (cover, coverOriginalScale, originCover, dynamicCover, animatedCover), sprite-sheet preview (bigThumbs), encoder hints (isBytevc1, isHdr, useStaticCover, horizontalType, isLongVideo, hasWatermark), and cdnUrlExpiresAt: the unix timestamp when the playback URLs stop working.

Music / audio (musicMeta)

Track record: id, title, author, album, artists[], artistUserInfos[], musicianUserInfos[], plus duration, playUrl, coverThumb, coverMedium, coverLarge, ownership flags (isOriginal, isPgc, isCommerce), owner attribution (ownerId, ownerHandle, ownerNickname, secUid).

Engagement (statistics)

diggCount, commentCount, shareCount, collectCount, downloadCount, playCount, forwardCount, admireCount, whatsappShareCount, liveWatchCount, exposureCount, loseCount, loseCommentCount. Note: playCount is server-hidden by Douyin and returns 0.

Optional downloads

When you toggle them on, downloaded media lands in your key-value store and the row's videoFile / coverFile / slideshowFiles fields each carry:

{
"kvStoreKey":"7577614489533680959.mp4",
"kvStoreId":"GcaUbB3ejAQUjie4o",
"kvUrl":"https://api.apify.com/v2/key-value-stores/GcaUbB3ejAQUjie4o/records/7577614489533680959.mp4",
"sizeBytes":5328417,
"mimeType":"video/mp4",
"sourceUrl":"https://v5-hl-mly-ov.zjcdn.com/..."
}

kvUrl is the public Apify API URL of the stored bytes; visit it from your Apify account (or fetch it with your token) to get the file. When downloads are off (or fail), those fields are null.

Output Example

Every top-level field below is always present in every row. Arrays and nested objects are trimmed for readability; production rows contain the full content (e.g. videoMeta has 25 sub-fields, authorMeta has 42, musicMeta has 45, permissions has 23).

{
"id":"7577614489533680959",
"url":"https://www.douyin.com/video/7577614489533680959",
"shareUrl":"https://www.iesdouyin.com/share/video/7577614489533680959/?...",
"videoUrl":"https://v5-hl-mly-ov.zjcdn.com/.../?...",
"audioUrl":"https://lf9-music-east.douyinstatic.com/obj/ies-music-hj/7577614877490023225.mp3",
"coverUrl":"https://p3-sign.douyinpic.com/tos-cn-i-dy/...?...",
"durationSeconds":1082.5,
"type":"video",
"awemeType":0,
"awemeTypeLabel":"video",
"mediaType":4,
"mediaTypeLabel":"video",
"isStory":false,
"text":"่ฟ™ไธช่ดตๅทžไบ”็บฟๅฐๅŸŽ๏ผŒๅ‡ญไป€ไนˆๆ˜ฏไธญๅ›ฝ"ๅƒๅ•†"ๆœ€้ซ˜็š„ๅŸŽๅธ‚๏ผŸ\n#ๆŠ–้Ÿณ็พŽ้ฃŸ็ญๅฝ“ๅญฃๆ–ฐ่œๅ• #่ดตๅทž็พŽ้ฃŸ #่€ๅƒๅฎถ",
"caption":"็ณŸไบ†๏ผŒๆ…ไบ†่ดตๅทž่€ๅƒๅฎถ็š„็ชไบ†๏ผ",
"itemTitle":"่ฟ™ไธช่ดตๅทžไบ”็บฟๅฐๅŸŽ๏ผŒๅ‡ญไป€ไนˆๆ˜ฏไธญๅ›ฝ"ๅƒๅ•†"ๆœ€้ซ˜็š„ๅŸŽๅธ‚๏ผŸ",
"previewTitle":"่ฟ™ไธช่ดตๅทžไบ”็บฟๅฐๅŸŽ๏ผŒๅ‡ญไป€ไนˆๆ˜ฏไธญๅ›ฝ"ๅƒๅ•†"ๆœ€้ซ˜็š„ๅŸŽๅธ‚๏ผŸ",
"descLanguage":"zh",
"createTime":1764320400,
"createDate":"2025-11-28",
"region":"CN",
"city":"Shanghai",
"cityCode":"310000",
"isPinned":false,
"isAd":false,
"isPgc":false,
"isShared":false,
"is24Story":false,
"is25Story":false,
"isFirstVideo":false,
"isLifeItem":true,
"isKaraoke":false,
"isDuetSing":false,
"isFantasy":false,
"isInScope":false,
"isImageBeat":false,
"isVr":false,
"authorMeta":{
"id":"75736792009",
"secUid":"MS4wLjABAAAAjjwfy25gmtDlk8Wg6FNIBzHdHicG6BpZZNvWoTLL8S4",
"name":"็›—ๆœˆ็คพ้ฃŸ้‡่ฎฐ",
"username":"124700482",
"customUsername":"daoyueshe",
"verified":true,
"signature":"โค๏ธๅฟƒ้‡Œๆœ‰ๅ…‰๏ผŒๅ“ชๅ„ฟ้ƒฝ็พŽโค๏ธ",
"avatarLarge":"https://p26.douyinpic.com/aweme/1080x1080/aweme-avatar/...",
"totalLikesReceived":17589628,
"awemeCount":685,
"gender":"male",
"country":"CN",
"isLiving":false
},
"videoMeta":{
"duration":1082500,
"width":1280,
"height":720,
"ratio":"720p",
"format":"mp4",
"isLongVideo":true,
"isHdr":false,
"isBytevc1":false,
"hasWatermark":true,
"cdnUrlExpiresAt":1777980189,
"playUrl":"https://v5-hl-mly-ov.zjcdn.com/.../?...",
"downloadUrl":"https://v5-hl-mly-ov.zjcdn.com/.../?...",
"playUrlH265":"https://v5-hl-mly-ov.zjcdn.com/.../?...",
"bitRates":[
{"quality":"720_1_1","bitRate":1175087,"isH265":true,"fps":30,"qualityType":11,"url":"..."}
],
"cover":"https://p3-sign.douyinpic.com/tos-cn-i-dy/...?...",
"originCover":"https://p5-ex-gddgtc-sign.douyinpic.com/tos-cn-p-0015/...~tplv-dy-360p.webp?...",
"dynamicCover":"https://p3-sign.douyinpic.com/obj/tos-cn-i-dy/...?..."
},
"musicMeta":{
"id":"7577614774507424547",
"title":"@็›—ๆœˆ็คพ้ฃŸ้‡่ฎฐๅˆ›ไฝœ็š„ๅŽŸๅฃฐ",
"author":"็›—ๆœˆ็คพ้ฃŸ้‡่ฎฐ",
"isOriginal":true,
"duration":1082,
"playUrl":"https://lf9-music-east.douyinstatic.com/obj/ies-music-hj/7577614877490023225.mp3",
"ownerId":"75736792009",
"ownerHandle":"daoyueshe",
"ownerNickname":"็›—ๆœˆ็คพ้ฃŸ้‡่ฎฐ",
"secUid":"MS4wLjABAAAAjjwfy25gmtDlk8Wg6FNIBzHdHicG6BpZZNvWoTLL8S4"
},
"statistics":{
"diggCount":4037193,
"shareCount":5135670,
"commentCount":162235,
"collectCount":855021,
"playCount":0,
"downloadCount":634,
"forwardCount":0,
"admireCount":0
},
"permissions":{
"canDuet":true,
"canStitch":false,
"canDownload":false,
"canShare":true,
"canComment":true,
"canRepost":true,
"canSave":true,
"canShowComment":true,
"isPrivate":false,
"isProhibited":false,
"isInReviewing":false,
"isDeleted":false,
"isReviewed":true,
"withGoods":false
},
"interaction":{
"canComment":true,
"canShowComment":true,
"canShare":true,
"canForward":true,
"commentDisabled":false
},
"anchors":[
{"type":5001,"title":"่ดตๅทž็พŽ้ฃŸๅบ—ๆ‰“ๅก","url":"https://www.douyin.com/poi/...","iconUrl":"https://..."}
],
"commerce":{
"isAd":false,
"isCommerceItem":false,
"starAtlasOrderId":null,
"branded":false,
"withGoods":false
},
"risk":{
"type":0,
"tag":null,
"warn":false,
"noticeText":null
},
"share":{
"title":"็›—ๆœˆ็คพ้ฃŸ้‡่ฎฐๅ‘ๅธƒไบ†ไธ€ไธชๆŠ–้Ÿณไฝœๅ“...",
"desc":"็Ÿญ่ง†้ข‘็”Ÿๆˆๆ—ฅ่ฎฐ๏ผ",
"shareUrl":"https://www.iesdouyin.com/share/video/7577614489533680959/",
"shareUrlSigned":"https://www.iesdouyin.com/share/video/7577614489533680959/?signed=...",
"shareWeiboUrl":"https://www.iesdouyin.com/.../?platform=weibo",
"shareQqUrl":"https://www.iesdouyin.com/.../?platform=qq",
"shareQzoneUrl":"https://www.iesdouyin.com/.../?platform=qzone"
},
"xiguaCrossPost":{
"isOnXigua":false,
"xiguaItemId":null,
"xiguaShareUrl":null
},
"aiMetadata":{
"aiGeoHot":1,
"aiGeoNote":1,
"aiSmartdoc":3,
"aiNoteV2":1,
"aiNoteVertical":1,
"rawSeo":null,
"rawExtra":null
},
"images":[],
"mentions":[
{"secUid":"MS4wLjABAAAA...","userId":"98123450123","nickname":"@ๆœ‹ๅ‹A"}
],
"hashtags":[
{"id":"7572059655971538944","name":"ๆŠ–้Ÿณ็พŽ้ฃŸ็ญๅฝ“ๅญฃๆ–ฐ่œๅ•"},
{"id":"1594485689837575","name":"่ดตๅทž็พŽ้ฃŸ"},
"... +3 more"
],
"videoTags":[
{"name":"็พŽ้ฃŸ","level":1},
{"name":"็พŽ้ฃŸๆŽขๅบ—","level":2},
{"name":"้คๅŽ…ๆŽขๅบ—","level":3}
],
"chapters":[
{"startMs":30000,"title":""ๅƒๅ•†"ๆœ€้ซ˜็š„ๅŸŽๅธ‚","coverUrl":"https://p26-sign.douyinpic.com/...","detail":null},
{"startMs":47000,"title":"36ๅ—8็š„่‡ชๅŠฉ็ƒคๅฐ่‚ ๏ผ","coverUrl":"https://p26-sign.douyinpic.com/...","detail":"่ฟ˜ๆœ‰20ๅคš็ง่‚‰๏ผŒ่ฟ™็‰ฉไปทๆƒŠๅ‘†ๆˆ‘"},
"... +14 more"
],
"series":{
"id":"7486681757459154981",
"name":"ๅƒๅžฎไธญๅ›ฝ่ก—ๅคด็พŽ้ฃŸ",
"episode":8,
"total":10,
"coverUrl":"https://p3-sign.douyinpic.com/obj/douyin-user-image-file/...?...",
"shareUrl":"https://www.iesdouyin.com/share/mix/detail/7486681757459154981/",
"updateTime":1774195445
},
"location":{
"poiId":"6601234567890123456",
"poiName":"่€ๅ‡ฏ้‡Œ้…ธๆฑค้ฑผ๏ผˆๅ—้—จๅบ—๏ผ‰",
"address":"่ดตๅทž็œ่ดต้˜ณๅธ‚ๅ—ๆ˜ŽๅŒบ...",
"latitude":26.5783,
"longitude":106.7135,
"city":"่ดต้˜ณๅธ‚",
"province":"่ดตๅทž็œ"
},
"videoFile":{
"kvStoreKey":"7577614489533680959.mp4",
"kvStoreId":"GcaUbB3ejAQUjie4o",
"kvUrl":"https://api.apify.com/v2/key-value-stores/GcaUbB3ejAQUjie4o/records/7577614489533680959.mp4",
"sizeBytes":215476832,
"mimeType":"video/mp4",
"sourceUrl":"https://v5-hl-mly-ov.zjcdn.com/.../?..."
},
"coverFile":{
"kvStoreKey":"7577614489533680959.jpg",
"kvStoreId":"GcaUbB3ejAQUjie4o",
"kvUrl":"https://api.apify.com/v2/key-value-stores/GcaUbB3ejAQUjie4o/records/7577614489533680959.jpg",
"sizeBytes":32366,
"mimeType":"image/jpeg",
"sourceUrl":"https://p3-sign.douyinpic.com/tos-cn-i-dy/...?..."
},
"slideshowFiles":null,
"inputUrl":"7577614489533680959"
}

Notes on optional / context-dependent fields:

  • images is empty for plain video posts and populated (with width/height/url) for image-text posts (type = "imageText").
  • slideshowFiles is null for video posts and populated only when Download slideshow images is on AND the post is image-text.
  • videoFile and coverFile are null unless Download MP4 videos / Download cover images are toggled on.
  • location is null when no POI is attached.
  • mentions, chapters, series, anchors are commonly empty arrays / null for casual posts.

Important: URL Durability

Different URL types in the output have very different lifespans. Plan your downstream pipeline accordingly.

FieldLifespanNote
id, url (canonical video URL)Permanenthttps://www.douyin.com/video/<id>, never expires. The reliable reference.
shareUrl, share.shareUrlPermanenthttps://www.iesdouyin.com/share/video/<id>/, also permanent.
share.shareUrlSigned~24 hoursPersonalised share URL with tracking signature; the unsigned share.shareUrl is the long-term version.
authorMeta.shareUrlPermanentProfile share URL.
authorMeta.avatarThumb โ€ฆ avatarLarge (5 sizes)PermanentCDN-direct, no signature.
musicMeta.playUrl, musicMeta.coverLargePermanentCDN-direct, no signature.
videoMeta.cover, videoMeta.originCover, videoMeta.dynamicCover, videoMeta.animatedCover, images[].url, chapters[].coverUrl, series.coverUrl~14โ€“30 daysSigned CDN URLs (*-sign.douyinpic.com). The query string holds the signature; download or re-upload to your own storage if you need them long-term.
videoMeta.playUrl, videoMeta.downloadUrl, videoMeta.playUrlH264, videoMeta.playUrlH265, videoMeta.playUrlLowBitrate, videoMeta.bitRates[].url~1 hourShort-lived video CDN URLs. The exact expiry time is in videoMeta.cdnUrlExpiresAt (unix-seconds); check it before downloading.

The id and url fields are the only truly permanent references. Build your downstream pipeline around them, then re-resolve fresh media URLs whenever you need them, or enable shouldDownloadVideos / shouldDownloadCovers to keep copies in your own storage.

Advanced Usage

Save downloads to a named key-value store

{
"videoUrls":["7577614489533680959","7630302640823912635"],
"shouldDownloadVideos":true,
"shouldDownloadCovers":true,
"videoKvStoreName":"douyin-archive-2026-q4"
}

Pair the run with a daily schedule and the named store accumulates a stable archive across runs, instead of being wiped with each run's default storage.

Force a specific proxy country

{
"videoUrls":["7577614489533680959"],
"proxyConfiguration":{
"useApifyProxy":true,
"apifyProxyGroups":["RESIDENTIAL"],
"apifyProxyCountry":"HK"
}
}

The actor defaults to China residential with a Hong Kong fallback. Override only when you have a specific egress requirement.

Bulk-archive an image-text post (slideshow)

{
"videoUrls":["https://www.iesdouyin.com/share/video/7630302640823912635/"],
"shouldDownloadSlideshowImages":true,
"shouldDownloadCovers":true
}

For image-text posts, every slide is saved as a separate file in the key-value store (<aweme_id>_slide_1.jpg, <aweme_id>_slide_2.jpg, โ€ฆ). Plain video posts ignore this toggle.

Pricing: Pay Per Event (PPE)

You pay per video scraped, with optional add-ons for downloaded media. Apify subscribers get steeper discounts on every tier.

FreeStarterScaleBusiness
Video scraped (one row in your dataset)$6.99 / 1k$4.99 / 1k$4.49 / 1k$3.99 / 1k
MP4 download (one saved video file)$4.99 / 1k$3.99 / 1k$3.49 / 1k$2.99 / 1k
Cover imageFreeFreeFreeFree
Slideshow imagesFreeFreeFreeFree

Two trivial platform events also fire (apify-actor-start once per run, apify-default-dataset-item once per row at $0.01 / 1,000), covered by the free Apify tier in practice.

FAQ

What is Douyin (ๆŠ–้Ÿณ)? Douyin is ByteDance's Chinese short-video platform, the domestic counterpart of TikTok: same company and format, separate app and catalogue. This actor pulls the full metadata, music, and creator profile behind any Douyin video, plus the MP4 itself on request.

How many fields are returned per video? 56 top-level fields, plus 11 nested rich blocks. The biggest are authorMeta (42 author fields), musicMeta (45 track fields), videoMeta (25 media fields), permissions (23 flags), and statistics (13 counters).

What types of inputs are accepted? Browser address-bar URLs (douyin.com/video/<id>), legacy share URLs (iesdouyin.com/share/video/<id>/), app share short links (v.douyin.com/..., auto-resolved), and bare numeric aweme IDs. You can mix all of them in one videoUrls array.

Where are the video and audio download URLs? Every row carries flat top-level fields: videoUrl (direct MP4), audioUrl (original-sound / track MP3), coverUrl, and durationSeconds. They are included in every result at no extra cost, so a download bot or no-code flow can grab the URL and pull the file itself. The shouldDownloadVideos toggle is only for when you'd rather we copy the MP4 bytes into your key-value store for long-term archival. The videoUrl CDN link is short-lived (check videoMeta.cdnUrlExpiresAt); the audioUrl is long-lived.

How long do download URLs last? The CDN URLs in videoMeta (playback / download / multi-bitrate) and the top-level videoUrl typically live about an hour. The exact expiry is in videoMeta.cdnUrlExpiresAt. Cover and avatar URLs live ~14-30 days, and audioUrl is long-lived. The post url is permanent. If you need long-term media, enable shouldDownloadVideos / shouldDownloadCovers to copy the bytes into your own storage.

Do video downloads work for image-text posts? No. Image-text posts have no MP4. Use shouldDownloadSlideshowImages instead; that saves every slide image (one file per slide).

Where are downloaded files saved? By default, into the run's own key-value store, which you can find on the run's Storage tab. Set videoKvStoreName to a stable name (e.g. douyin-archive) to accumulate downloads across runs in one named store instead.

How fresh is the data? Live: every field is fetched on demand at run time. No caching.

Are statistics live? Yes. diggCount, commentCount, shareCount, collectCount, playCount, etc. are pulled live with each run. Note that playCount is often 0; Douyin hides the play count from third-party clients on most videos.

What's the difference between hashtags and videoTags? hashtags are the #tags the creator typed in the caption. videoTags is Douyin's own 3-level content classification; e.g. ็พŽ้ฃŸ (level 1, top-level category) โ†’ ็พŽ้ฃŸๆŽขๅบ— (level 2) โ†’ ้คๅŽ…ๆŽขๅบ— (level 3, leaf). The classification is server-assigned and is one of the more interesting signals on the platform.

What's the difference between permissions and interaction? permissions are author-set + platform-set visibility flags (can the post be downloaded, duetted, stitched, shared, commented). interaction covers the engagement layer: comment-input placeholder text, AB-test flags, audio-comment permissions, image-challenge config.

What's the difference between text, caption, itemTitle, and previewTitle? Douyin returns up to four caption variants per post. text is the full creator-typed description (with hashtags inline). caption is the trimmed version Douyin shows in some feeds. itemTitle is the headline-style title (often only set on PGC content). previewTitle is the share-card preview text. They overlap heavily; pick whichever fits your use case.

Can I scrape comments / replies / followers / liked videos? Not in this actor; per-video metadata, author profile, and downloads only. Use Douyin Comments Scraper for comment threads and Douyin Profile Scraper for a creator's full profile and post history (follower lists are not exposed by Douyin's public surface).

Does the actor work for any Douyin video? Public videos only. Private posts, deleted videos, region-locked posts (where the creator's region or the post's geofence excludes our egress), and accounts that have blocked external access are not addressable.

Do I need a Douyin account or cookies? No. Paste video URLs or aweme IDs and run; no account, cookie export, or QR login is involved.

How do I export the data? The dataset downloads as JSON, CSV, Excel, XML, or HTML from the run's Storage tab, or via the Apify API. Downloaded MP4s, covers, and slideshow images sit in your key-value store with direct URLs.

How do I find videos to scrape at scale? Chain the suite: Douyin Search Scraper finds videos by keyword and Douyin Profile Scraper lists a creator's full catalogue; feed the resulting url or id values straight into videoUrls here.

Is it legal to scrape Douyin videos? The actor collects publicly available video data only, nothing behind a login. You are responsible for complying with Douyin's terms of service, the creator's copyright, and applicable data protection law (GDPR, CCPA, PIPL), especially before storing or republishing downloaded media.

What's the maximum number of videos per run? 10,000 per run. Inputs are deduplicated by aweme ID so duplicates cost nothing.

More Zen Studio scrapers for Chinese platforms

๐ŸŽฌ Short-video & social

๐Ÿ›’ E-commerce

๐Ÿ  Real estate & autos

Support

  • Bugs: Issues tab
  • Features: Issues tab

Legal Compliance

Extracts publicly available data from Douyin (ๆŠ–้Ÿณ). Users must comply with Douyin's terms of service and applicable data protection regulations (GDPR, CCPA, PIPL).


Structured Douyin video metadata: engagement, music, hashtags, chapters, full creator profile. For any public video, in clean JSON. Optional MP4, cover, and slideshow downloads.

You might also like

Douyin ๆŠ–้Ÿณ Search Scraper + Video Downloader - 60+ Fields

zen-studio/douyin-search-scraper

Scrape Douyin (ๆŠ–้Ÿณ) videos by keyword and download them as MP4. Get views, likes, comments, shares, creator profile, music, hashtags, and video tags. Optionally save covers and slideshow images. Filter by sort, publish window, and duration. 60+ fields per video, 46 per creator. Free tier - 10 runs.

209

5.0

Douyin ๆŠ–้Ÿณ Profile Scraper - ๅšไธป Followers, Posts & Hashtags

zen-studio/douyin-profile-scraper

Extract Douyin (ๆŠ–้Ÿณ) ๅšไธป profiles, ็ฒ‰ไธ counts, engagement stats, hashtags, and Douyin's server-classified video categories. 28 fields per post + 22 per author. Accepts profile URLs, share links, UserSecIDs, and numeric user IDs. Profile-only ๆ•ฐๆฎ้‡‡้›† mode for cheap follower tracking.

Douyin ๆŠ–้Ÿณ Transcripts Scraper - 50+ Languages, .srt + MP4

zen-studio/douyin-transcripts-scraper

Extract timestamped transcripts and .srt ๅญ—ๅน• from any Douyin (ๆŠ–้Ÿณ) video. Mandarin speech-to-text plus translation into 50 languages. Optionally save the source MP4 and cover image to your key-value store at no extra cost. 60+ metadata fields. Per-minute pricing, free tier.

Douyin Video Downloader ๐ŸŽฅ

easyapi/douyin-video-downloader

Extract and download videos from Douyin (Chinese TikTok) without watermark. Get high-quality video URLs, thumbnails, author info and other metadata in structured format. Perfect for content analysis and archiving.

Douyin ๆŠ–้Ÿณ Comments Scraper - Comments & Replies

zen-studio/douyin-comments-scraper

Scrape Douyin (ๆŠ–้Ÿณ) video comments and replies. Each row is one top-level comment with author info, like count, region, and (optionally) all replies nested. Supports any Douyin video URL or aweme ID.

Douyin Search Scraper - Video & User Insights

cloudcharlestom/douyin-search-scraper

Extract Douyin video and user data by keyword. Get video URL, likes, comments, shares, favorites, and music info. Ideal for market analysis, influencer discovery, content research, and trend tracking.

149

Douyin Search Scraper

kuaima/douyin-search

This scraper can help you to get search data from https://www.douyin.com/ ๆŠ–้Ÿณ which is Chinese Version of tiktok.

Douyin Scraper

natanielsantos/douyin-scraper

This powerful tool enables you to extract data from Douyin, the Chinese version of TikTok. Use it to scrape post data, like URLs, numbers of followers, hearts, video, music-related data and more. Download Douyin data as a HTML, JSON, CSV, Excel, or XML doc.

๐Ÿ‘ User avatar

Nataniel Santos

1.5K

3.1

Douyin Transcripts Scraper

apple_yang/douyin-transcripts-scraper

Extract spoken transcripts from Douyin videos with Douyin Transcripts Scraper. Just enter video URLs to get transcripts. Perfect for content analysis, AI pipelines, or trend research.

501

5.0

Douyin Video Downloader API (No Watermark, Fast & Reliable)

apple_yang/douyin-video-audio-downloader

[Only $5/1000 results]Douyin Video Downloader API for extracting HD videos, audio, and metadata from public links, with no watermark. Fast, reliable, and built for developers and automation.