Douyin 抖音 Search Scraper - Keyword + Filters & 60+ Fields
Pricing
from $4.99 / 1,000 search results
Douyin 抖音 Search Scraper - Keyword + Filters & 60+ Fields
Extract Douyin (抖音) search results by keyword. One row per video with full creator profile, music, hashtags, video tags, and engagement stats. Filter by sort, publish window, and duration. 60+ fields per video, 46 per creator. Free tier - 10 runs.
Pricing
from $4.99 / 1,000 search results
Rating
0.0
(0)
Developer
Zen Studio
Maintained by CommunityActor stats
0
Bookmarked
15
Total users
4
Monthly active users
a day ago
Last modified
Categories
Share
Douyin Search Scraper (抖音) — Keyword Search, Filters & Full Video Metadata (2026)
Search Douyin (抖音) by keyword — full video metadata, creator profile, music, hashtags, and engagement in clean structured JSON — sort by relevance / most-liked / newest, filter by publish window and duration.

Copy to your AI assistant
zen-studio/douyin-search-scraper on Apify. Scrapes Douyin search results by keyword with sort/publish/duration filters and optional MP4/cover/slideshow downloads. One row per video with 62 top-level fields + 42-field authorMeta, plus musicMeta, videoMeta, statistics, hashtags, server-classified videoTags. Call ApifyClient("TOKEN").actor("zen-studio/douyin-search-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: keywords (string[]). Optional: maxResultsPerQuery, sort (general/most_liked/latest), publishTime (unlimited/one_day/one_week/half_year), duration (unlimited/under_1m/one_to_five/over_5m), shouldDownloadVideos (bool, paid +$0.99/1k), shouldDownloadCovers (bool, free), shouldDownloadSlideshowImages (bool, free), videoKvStoreName (string). Full spec: GET https://api.apify.com/v2/acts/zen-studio~douyin-search-scraper/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Token: https://console.apify.com/account/integrations
| Zen Studio · 抖音 + 西瓜视频 (Xigua) • Full-stack China short-video data: search, profiles, posts, transcripts | |||
|
Search ➤ You are here |
Profiles 博主 followers, posts, hashtags |
Video Metadata + MP4 download |
Transcripts 字幕 + 50-lang translation |
How to Search Douyin by Keyword
Basic — one keyword, default 100 results
{"keywords": ["美食"],"maxResultsPerQuery": 100}
Most-liked food videos from the last week
{"keywords": ["美食", "家常菜"],"maxResultsPerQuery": 200,"sort": "most_liked","publishTime": "one_week"}
Newest short-form clips across multiple brand keywords
{"keywords": ["iphone", "huawei", "xiaomi"],"maxResultsPerQuery": 300,"sort": "latest","duration": "under_1m"}
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
keywords | string[] | required | Search keywords. Chinese, English, hashtags, brand names, and emoji all work. |
maxResultsPerQuery | integer | 100 | How many results to fetch per keyword (1–1000). Cost scales linearly. |
sort | string | general | general / most_liked / latest. Relevance, most-liked first, or newest first. |
publishTime | string | unlimited | unlimited / one_day / one_week / half_year. Restrict results to videos published in this window. |
duration | string | unlimited | unlimited / under_1m / one_to_five / over_5m. Restrict by video length. |
shouldDownloadVideos | boolean | false | Save MP4 video files to your key-value store. Adds $0.99 per 1,000 successful downloads. Image-text posts have no MP4. |
shouldDownloadCovers | boolean | false | Save each result's cover image (JPEG) to your key-value store. Free. |
shouldDownloadSlideshowImages | boolean | false | For image-text posts, save every slide image to your key-value store. Free. |
videoKvStoreName | string | "" | Save downloads to a named, persistent KV store you can reuse across runs (lowercase letters, digits, dashes only). Leave empty for the run's default store. |
Accepted keyword formats
Any string Douyin's search box accepts:
| Format | Example |
|---|---|
| Chinese word or phrase | 美食, 家常菜, 懒人快手菜 |
| English word | iphone, huawei, xiaomi |
| Hashtag | #美食, #英语学习打卡 |
| Brand or person name | Tesla, 周杰伦 |
| Emoji | 🍜, 🎬 |
Each keyword is searched independently, then results are deduped across keywords so you never pay twice for the same video. A single keyword typically returns 100–300 unique videos before Douyin stops returning new results — combine multiple keywords for broader coverage.
What Data Can You Extract from Douyin Search?
One row per video. Each row carries 62 top-level fields, with the full creator profile (42 fields) nested under authorMeta, plus rich sub-objects for musicMeta (45 fields), videoMeta (25 fields incl. multiple bit-rate variants), statistics (13 counters), permissions (23 flags), commerce, share, interaction, and arrays for hashtags, videoTags (Douyin's server-classified 3-level taxonomy), mentions, chapters, images.
Output Example
Every top-level field is shown below. Large arrays and signed CDN URLs are trimmed with ….
{"id": "7610711200906065509","groupId": "7610711200906065509","url": "https://www.douyin.com/video/7610711200906065509","shareUrl": "https://www.iesdouyin.com/share/video/7610711200906065509/?region=US&mid=…&share_sign=…","type": "video","awemeType": 0,"awemeTypeLabel": "video","mediaType": 4,"mediaTypeLabel": "video","horizontalType": 0,"horizontalTypeLabel": "","isStory": false,"text": "可惜你不是湖南人,你不知道这道擂辣椒茄子炒皮蛋有多香多下饭#擂辣椒茄子皮蛋 #家常菜 #湘菜 …","caption": "可惜你不是湖南人,你不知道这道擂辣椒茄子炒皮蛋有多香多下饭#擂辣椒茄子皮蛋 #家常菜 #湘菜 …","itemTitle": "","previewTitle": "可惜你不是湖南人,你不知道这道擂辣椒茄子炒皮蛋有多香多下饭…","descLanguage": "zh","createTime": 1772006790,"createDate": "2026-02-25","region": "CN","city": "Changsha","cityCode": "430100","isPinned": false,"isAd": false,"isPgc": false,"isShared": false,"is24Story": false,"is25Story": false,"isFirstVideo": false,"isLifeItem": false,"isKaraoke": false,"isDuetSing": false,"isFantasy": false,"isInScope": false,"isImageBeat": false,"isVr": false,"authorMeta": {"id": "100271680992","secUid": "MS4wLjABAAAAmIUcH6QuPwoTQYnt_xVUdKH4iCdmr1jj97jzPc77_MU","name": "娇娇的美食日记","username": "3845294457","customUsername": "dylk4dp2vnqz","customUsernameUpdatedAt": 1778515670,"verified": true,"verifyType": 1,"customVerifyText": null,"verificationReason": null,"enterpriseVerifyReason": null,"signature": "💁在职妈妈的烟火日常,每日在工作与厨房间切换;\n👉用爱烹饪美食…","avatarThumb": "https://p3.douyinpic.com/aweme/100x100/…","avatarMedium": "https://p3.douyinpic.com/aweme/720x720/…","avatar168": "https://p3.douyinpic.com/img/…~c5_168x168.jpeg","avatar300": "https://p3.douyinpic.com/img/…~c5_300x300.jpeg","avatarLarge": "https://p3.douyinpic.com/aweme/1080x1080/…","bgImage": null,"shareQrCodeUri": "31953000a4734d1b75643","shareUrl": null,"followersCount": 555931,"followersCountStr": null,"followingCount": null,"totalLikesReceived": null,"likesGivenCount": null,"awemeCount": null,"gender": "male","language": "zh-Hans","country": "CN","ipLocation": null,"userAge": null,"birthday": null,"constellation": 0,"school": null,"isLiving": false,"roomId": null,"isStar": false,"usesSeries": false,"withShopEntry": true,"commerceUserLevel": null,"mcnInfo": null,"crossPlatform": null},"videoMeta": {"duration": 28375,"width": 2160,"height": 3838,"ratio": "540p","format": "mp4","isLongVideo": false,"isHdr": false,"isBytevc1": false,"hasWatermark": true,"useStaticCover": false,"horizontalType": null,"cdnUrlExpiresAt": 1778519298,"playUrl": "https://v5-ex-x.douyinvod.com/…","downloadUrl": "https://v5-coldy.douyinvod.com/…","playUrlH264": "https://v26-cold.douyinvod.com/…","playUrlH265": "https://…","playUrlLowBitrate": "https://…","cover": "https://p11-sign.douyinpic.com/…","originCover": "https://p11-sign.douyinpic.com/…","dynamicCover": "https://p11-sign.douyinpic.com/…","bitRates": [{"quality": "adapt_lowest_1080_1", "bitRate": 2936000, "fps": 30, "isH265": true, "url": "https://…"},{"quality": "adapt_lower_540_1", "bitRate": 3215000, "fps": 30, "isH265": false, "url": "https://…"}]},"musicMeta": {"id": "7610711167291378459","title": "@娇娇的美食日记创作的原声","author": "娇娇的美食日记","album": null,"isOriginal": true,"isPgc": false,"isCommerce": false,"isMatchedMetadata": false,"matchedPgcSound": null,"duration": 28,"startTime": 0,"endTime": 0,"ownerId": "100271680992","ownerHandle": "dylk4dp2vnqz","ownerNickname": "娇娇的美食日记","secUid": "MS4wLjABAAAAmIUcH6QuPwoTQYnt_xVUdKH4iCdmr1jj97jzPc77_MU","authorDeleted": false,"playUrl": "https://lf3-music-east.douyinstatic.com/obj/ies-music-hj/7610711232131418917.mp3","coverThumb": "https://p3.douyinpic.com/img/…","coverMedium": "https://p3.douyinpic.com/aweme/720x720/…","coverLarge": "https://p3.douyinpic.com/aweme/1080x1080/…","muteShare": false,"musicStatus": 1,"canBackgroundPlay": true,"preventDownload": false,"userCount": 0,"musicCollectCount": 0},"statistics": {"diggCount": 907159,"shareCount": 591162,"commentCount": 26845,"collectCount": 937400,"playCount": 0,"downloadCount": 0,"forwardCount": 0,"admireCount": null,"whatsappShareCount": 1,"liveWatchCount": 0,"exposureCount": 0,"loseCount": 0,"loseCommentCount": 0},"permissions": {"canDuet": true,"canStitch": true,"canDownload": false,"canShare": true,"canComment": true,"canRepost": true,"canSave": true,"canShowComment": true,"canRecord": true,"canReact": true,"canMusic": true,"canDouplus": true,"canDynamicWallpaper": false,"allowFriendRecommend": false,"isPrivate": false,"isProhibited": false,"isInReviewing": false,"isDeleted": false,"isReviewed": true,"withGoods": false,"withFusionGoods": false},"interaction": {"canComment": true,"canShowComment": true,"canShare": true,"canForward": true,"commentDisabled": false},"commerce": {"isAd": false,"adType": 0,"isLifeItem": false,"originalAnchorType": null,"withShopEntry": false,"withFusionShopEntry": true,"withCommerceEntry": false,"withDouEntry": false,"withPromotionalMusic": false,"commerceUserLevel": 0},"share": {"shareUrl": "https://www.iesdouyin.com/share/video/7610711200906065509/","shareUrlSigned": "https://www.iesdouyin.com/share/video/7610711200906065509/?…&share_sign=…","shareTitle": "可惜你不是湖南人,你不知道这道擂辣椒茄子炒皮蛋…","shareDesc": "在抖音,记录美好生活","shareLinkDesc": "5.87 复制打开抖音,看看【娇娇的美食日记的作品】…","shareTemplate": null},"anchors": [],"hashtags": [{"id": "1676261542974476", "name": "擂辣椒茄子皮蛋"},{"id": "1601976860276750", "name": "擂辣椒皮蛋"},{"id": "1767587367821390", "name": "家常菜"},{"id": "1568858247632398", "name": "湘菜"},{"id": "1619283196524547", "name": "妈呀太香了"}],"videoTags": [{"name": "美食", "level": 1},{"name": "家常菜", "level": 2},{"name": "下饭菜", "level": 3}],"mentions": [],"chapters": [],"images": [],"series": null,"location": null,"risk": null,"xiguaCrossPost": null,"aiMetadata": null,"videoFile": null,"coverFile": null,"slideshowFiles": null,"searchKeyword": "#美食","searchPosition": 1,"inputKeyword": "#美食","inputUrl": "#美食"}
Advanced Usage
Hashtag tracking — pull the latest under a tag
{"keywords": ["#美食"],"maxResultsPerQuery": 200,"sort": "latest"}
Combine with a daily schedule to build a hashtag-velocity dashboard. The createDate and statistics.diggCount fields let you compute new-post rate and engagement velocity over time.
Competitor tracking — daily snapshot across brand keywords
{"keywords": ["iphone", "huawei", "xiaomi", "samsung"],"maxResultsPerQuery": 100,"sort": "most_liked","publishTime": "one_day"}
One row per video; the searchKeyword field tells you which competitor surfaced it. Dedup across keywords is automatic.
Long-form discovery — pull 5+ minute videos only
{"keywords": ["纪录片", "美食纪录片"],"maxResultsPerQuery": 200,"duration": "over_5m","sort": "most_liked"}
Useful for finding mini-docs, long-form reviews, and series episodes on Douyin (where most content is under 60s).
Mass keyword sweep — many narrow topics in one run
{"keywords": ["麻辣火锅","川菜","粤菜","湘菜","..."],"maxResultsPerQuery": 50}
Up to 5 keywords run in parallel. Cross-keyword duplicates are removed automatically, so a video tagged across multiple cuisines appears only once.
Keep the MP4s for every search result
{"keywords": ["美食", "家常菜"],"maxResultsPerQuery": 50,"shouldDownloadVideos": true,"shouldDownloadCovers": true,"videoKvStoreName": "douyin-search-cooking"}
Saves the MP4 + cover image for each matched video to a named, persistent key-value store (douyin-search-cooking). MP4 downloads add $0.99 per 1,000 successful saves; cover images are free.
A small share of MP4 downloads can fail on wide sweeps when a video's CDN URL ages out before it's reached. Failed downloads leave videoFile as null on the affected row; the metadata row still ships and is not charged the download fee.
Pricing — Pay Per Event (PPE)
$4.99 per 1,000 results. Each row written to the dataset counts as one result. No charge for failed pages, retries, or empty keywords.
| Event | Per call | Per 1,000 |
|---|---|---|
result (one dataset row) | $0.00499 | $4.99 |
video_downloaded (one successful MP4 saved, opt-in) | $0.00099 | $0.99 |
Cover and slideshow image downloads are free. Toggles default OFF — leave them off for pure metadata scraping.
Free tier
10 lifetime runs, capped at 12 results per keyword per run. No credit card. Plenty for evaluation; combine 5 keywords × 12 results = a 60-row sample dataset per run.
FAQ
How many fields are returned per video?
62 top-level fields per row, with authorMeta containing a further 42 fields nested. Sub-objects (musicMeta, videoMeta, statistics, permissions, commerce, share, interaction) and arrays (hashtags, videoTags, mentions, chapters) push the total far higher.
How many results can I expect per keyword?
Typically 100–300 unique videos before Douyin's search backend stops returning new items, regardless of how high you set maxResultsPerQuery. To get more coverage, use multiple related keywords — cross-keyword deduplication is automatic, so you never pay twice for the same video.
Does the sort/publish/duration filter combine?
Yes. All filters are applied server-side and stack: sort=most_liked + publishTime=one_week + duration=under_1m returns the most-liked sub-1-minute videos from the last 7 days. Narrow combinations may shrink the result count.
How fresh is the data? Live — every field is fetched on demand at run time. No caching.
Are the media URLs permanent?
The url (https://www.douyin.com/video/<id>) and shareUrl are permanent — use them as the long-term reference. Image URLs (videoMeta.cover, authorMeta.avatarLarge and friends) stay valid for roughly 14–30 days. The video URLs (videoMeta.playUrl, videoMeta.downloadUrl, videoMeta.bitRates[].url) are short-lived — they typically expire within hours; the exact unix-seconds expiry is in videoMeta.cdnUrlExpiresAt. If you need long-term media, enable shouldDownloadVideos / shouldDownloadCovers / shouldDownloadSlideshowImages to copy the bytes into your own KV store.
What's the difference between hashtags and videoTags?
hashtags are the #tags the creator typed in the caption. videoTags is Douyin's own server-classified content taxonomy — for example a video might be tagged 美食 (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.
Can I search by hashtag specifically?
Yes — pass "#美食" as a keyword. Douyin's search treats hashtag and free-text searches similarly, and both flow through the same row shape.
Can I scrape comments / individual posts / a creator's full profile? Not in this actor. Search results only. Other actors in this collection cover those use cases — see the navigation table at the top.
What's the maximum results per keyword? 1,000. Note that Douyin's own search backend caps relevance results around 200–300 per keyword in practice, so very high values may not fully fill.
Does the actor work for any Douyin search? Public search only. The same surface anyone hits when they search on the Douyin web or app. Results respect Douyin's own region- and age-gating where applicable.
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).
Structured Douyin search results — full creator profile, video, music, hashtags, server-classified video tags, engagement stats — one row per match, in clean JSON.