Douyin 抖音 Profile Scraper - 博主 Followers, Posts & Hashtags
Pricing
from $4.49 / 1,000 results
Douyin 抖音 Profile Scraper - 博主 Followers, Posts & Hashtags
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.
Pricing
from $4.49 / 1,000 results
Rating
0.0
(0)
Developer
Actor stats
3
Bookmarked
91
Total users
33
Monthly active users
17 hours
Issues response
a day ago
Last modified
Categories
Share
Douyin Profile Scraper (抖音) | Followers, Posts, Bio, Likes (2026)
1,000 Douyin (抖音) posts per profile in under 60 seconds: followers, engagement, hashtags, music, and the full creator profile in clean structured JSON.
Copy to your AI assistant
zen-studio/douyin-profile-scraper on Apify. Scrapes Douyin profiles + posts with follower counts, engagement, hashtags, and server-classified videoTags. Call ApifyClient("TOKEN").actor("zen-studio/douyin-profile-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. profileUrls accepts URLs/share links/UserSecIDs/numeric uids;maxPostsPerProfile=0for profile-only. Full spec: GET https://api.apify.com/v2/acts/zen-studio~douyin-profile-scraper/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Token: https://console.apify.com/account/integrations
| Zen Studio · Chinese-platform suite • RedNote (小红书), Douyin (抖音), Xigua (西瓜视频) | |||
|
👁 Image Douyin Profile ➤ You are here |
👁 Image Douyin Search Keyword + filters, 60+ fields |
👁 Image Douyin Video Metadata + MP4 downloads |
👁 Image Douyin Comments Comments & nested replies |
How to Scrape Douyin Profiles & Posts
Basic: one creator, last 100 posts
{"profileUrls":["https://www.douyin.com/user/MS4wLjABAAAAk1tZ-L085zZf2yW_H5dnVFZWyk8Rt8v4RAvf9KhTyPoVdMDxTs7Q_rvgTJGWXezS"],"maxPostsPerProfile":100}
Profile only: track follower count without scraping posts
{"profileUrls":["1929015166249580"],"maxPostsPerProfile":0}
Recent activity only: last 30 days across multiple creators
{"profileUrls":["https://www.douyin.com/user/MS4wLjABAAAAk1tZ-L085zZf2yW_H5dnVFZWyk8Rt8v4RAvf9KhTyPoVdMDxTs7Q_rvgTJGWXezS","MS4wLjABAAAAjjwfy25gmtDlk8Wg6FNIBzHdHicG6BpZZNvWoTLL8S4","1929015166249580"],"maxPostsPerProfile":200,"recentDays":30,"excludePinnedPosts":true}
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
profileUrls | string[] | required | Douyin profile URLs, share links, UserSecIDs, or bare numeric user IDs. |
maxPostsPerProfile | integer | 100 | How many recent posts per profile (0–10,000). Set to 0 for profile-only mode. |
recentDays | integer | none | Only include posts from the last N days (e.g. 30 for last month). Easier alternative to oldestPostDate. |
oldestPostDate | string | none | Only include posts on or after this absolute date (YYYY-MM-DD). When both recentDays and oldestPostDate are set, recentDays wins. |
excludePinnedPosts | boolean | false | Skip posts pinned to the top of the profile. |
Accepted profile input formats
| Format | Example |
|---|---|
| Browser address bar URL | https://www.douyin.com/user/MS4wLjABAAAAk1tZ-L085zZf2yW_H5dnVFZWyk8Rt8v4RAvf9KhTyPoVdMDxTs7Q_rvgTJGWXezS |
| App share link (auto-resolved) | https://v.douyin.com/iAbc123/ |
| Legacy share URL | https://www.iesdouyin.com/share/user/1929015166249580 |
| Bare UserSecID | MS4wLjABAAAAk1tZ-L085zZf2yW_H5dnVFZWyk8Rt8v4RAvf9KhTyPoVdMDxTs7Q_rvgTJGWXezS |
| Bare numeric user ID | 1929015166249580 |
What Data Can You Extract from Douyin?
Two output shapes depending on maxPostsPerProfile:
maxPostsPerProfile > 0(default): one row per post (28 fields), with the creator's profile metadata nested underauthorMeta(46 fields).maxPostsPerProfile = 0: one row per profile (48 fields), profile fields promoted to the top level. Fastest, cheapest mode.
Per-post fields
- Identity:
id,type(video/imageText/story),url,shareUrl,inputUrl,region(creator IP),city+cityCode(post upload location, GB/T 2260),descLanguage - Content:
text(caption),title(clean headline with hashtags stripped, when the post has one),thumb,images(for image-text posts) - Timing:
createTime(unix),createDate(ISO YYYY-MM-DD) - Flags:
isPinned,isAd,isPgc,isShared,crossPostedToXigua - Engagement:
statistics:diggCount,commentCount,shareCount,collectCount,downloadCount,playCount,forwardCount - Categorisation:
hashtags([{id, name}], creator-typed with stable IDs),videoTags(Douyin's server-classified 3-level taxonomy),mentions - Media:
musicMeta(track id, name, author, owner, duration, play URL, cover, isOriginal),videoMeta(cover, duration, dimensions, format, play URL, download URL, bit-rate variants, HDR, watermark,cdnUrlExpiresAt: unix-seconds when video URLs die, typically ~1h after scrape) - Structure:
chapters([{startMs, title, coverUrl}]),series({id, name, episode, total, coverUrl, shareUrl, updateTime}for posts in a 合集),location(geotagged posts → place{id, name, category, address, district, city, province, country, cityCode, lat, lng, coverUrl}+ POI signals{viewCount, itemCount, collectedCount, userCount, popularity}; else null) - Permissions:
canDuet,canStitch,canDownload,canShare,canComment
Per-author (authorMeta) fields
Identity: id, secUid, name, username, customUsername, customUsernameUpdatedAt (unix timestamp of last handle change), verified, verifyType (0/1/2 = none/normal/enterprise), customVerifyText (e.g. "时尚创作者"), enterpriseVerifyReason, verificationReason, signature (bio), country (e.g. "CN"), language, gender (unknown/male/female).
Demographics: userAge (when set), birthday (when set), constellation (1–12 zodiac index when set, else null).
Avatars: avatarThumb, avatarLarge (existing), plus avatar168 (168×168), avatarMedium (720×720), avatar300 (300×300), bgImage (profile background), shareQrCodeUri (Douyin's share-QR asset path).
Engagement metrics: followersCount, followersCountStr (e.g. "4.8万"), followingCount, heartCount (legacy total likes from userhome), videoCount, videoPlayCount, videoShareCount, totalLikesReceived (lifetime cumulative likes, the canonical creator-economy metric, often differs from heartCount), awemeCount (real total post count), likesGivenCount (likes the creator gave to others).
Live & commerce: isLiving, roomId (live-room ID when live), isStar (Douyin's "star creator" tier), withShopEntry (has a Douyin Shop), commerceUserLevel (0–5).
Locality & associations: ipLocation (creator IP region), school ({id, name, category, type} for student creators, else null), usesSeries (publishes 合集), mcnInfo ({name, uid} for managed creators, else null), crossPlatform ({instagram, twitter, youtube, weibo} handles when set, else null), shareUrl.
Output Example
{"id":"7628905002311994670","type":"video","text":"英语磨耳朵:热爱待在家的人的心理 #英语听力训练 #英语学习打卡 #启蒙英语 #英语没那么难 #每天英语一分钟","title":"英语磨耳朵:热爱待在家的人的心理","descLanguage":"zh","createTime":1776298080,"createDate":"2026-04-16","url":"https://www.douyin.com/video/7628905002311994670","shareUrl":"https://www.iesdouyin.com/share/video/7628905002311994670/","thumb":"https://p11-sign.douyinpic.com/tos-cn-i-dy/40e0d6...~tplv-dy-resize.heic?...","isPinned":false,"isAd":false,"isPgc":false,"isShared":false,"region":"河北","city":"Hebei","cityCode":"130100","authorMeta":{"id":"1929015166249580","secUid":"MS4wLjABAAAAk1tZ-L085zZf2yW_H5dnVFZWyk8Rt8v4RAvf9KhTyPoVdMDxTs7Q_rvgTJGWXezS","name":"木木英语","username":"63970939507","customUsername":null,"customUsernameUpdatedAt":1777798069,"verified":true,"verifyType":1,"customVerifyText":"英语创作者","enterpriseVerifyReason":null,"verificationReason":"英语创作者","signature":"📚英语爱好者\n🧸努力学习英语中\n❤️好好吃饭💛好好睡觉💚好好生活","avatarThumb":"https://p26.douyinpic.com/img/aweme-avatar/...c5_300x300.jpeg?from=2956013662","avatarLarge":"https://p26.douyinpic.com/img/aweme-avatar/...c5_300x300.jpeg?from=2956013662","avatar168":"https://p26.douyinpic.com/img/aweme-avatar/...c5_168x168.jpeg","avatarMedium":"https://p26.douyinpic.com/img/aweme-avatar/...c5_720x720.jpeg","avatar300":"https://p26.douyinpic.com/img/aweme-avatar/...c5_300x300.jpeg","bgImage":"https://p11-sign.douyinpic.com/obj/douyin-user-image-file/...?...","shareQrCodeUri":"2f1f800070d01d38cc905","followingCount":15,"followersCount":48875,"followersCountStr":"4.8万","heartCount":87153,"totalLikesReceived":87153,"videoCount":189,"awemeCount":189,"likesGivenCount":312,"videoPlayCount":null,"videoShareCount":null,"isLiving":false,"roomId":null,"isStar":false,"withShopEntry":false,"commerceUserLevel":0,"ipLocation":"山东","country":"CN","gender":"unknown","language":"zh-Hans","userAge":9,"birthday":null,"constellation":1,"school":null,"usesSeries":true,"mcnInfo":null,"crossPlatform":null,"shareUrl":"https://www.iesdouyin.com/xg/user/1929015166249580"},"musicMeta":{"id":"7628905006464944923","name":"@木木英语创作的原声","author":"木木英语","album":null,"isOriginal":true,"isPgc":false,"isCommerce":false,"duration":221,"playUrl":"https://sf5-hl-ali-cdn-tos.douyinstatic.com/obj/ies-music/7628905080950901550.mp3","coverThumb":"https://p11.douyinpic.com/aweme-avatar/...","coverLarge":"https://p26.douyinpic.com/aweme/1080x1080/aweme-avatar/...","owner":{"id":"1929015166249580","handle":"63970939507","nickname":"木木英语"}},"videoMeta":{"cover":"https://p11-sign.douyinpic.com/tos-cn-i-dy/40e0d6...~tplv-dy-resize.heic?...","originCover":"https://p11-sign.douyinpic.com/tos-cn-p-0015/oUeILU...~tplv-dy-360p.heic?...","dynamicCover":"https://p11-sign.douyinpic.com/obj/tos-cn-i-dy/40e0d6...?...","height":1280,"width":720,"ratio":"720p","duration":221937,"format":"mp4","isLongVideo":false,"playUrl":"https://v95-hzyy-thr-daily-colda.douyinvod.com/.../?...","downloadUrl":"https://v5-se-ws-cold.douyinvod.com/.../?...","bitRates":[{"quality":"adapt_lowest_1080_1","bitRate":247531,"isH265":true,"fps":30,"url":"https://..."},{"quality":"adapt_lower_540_1","bitRate":155050,"isH265":true,"fps":30,"url":"https://..."}],"isHdr":false,"hasWatermark":true,"cdnUrlExpiresAt":1777883276},"images":[],"statistics":{"diggCount":106,"shareCount":14,"commentCount":4,"collectCount":47,"downloadCount":1,"playCount":0,"forwardCount":0},"mentions":[],"hashtags":[{"id":"1664320797481997","name":"英语听力训练"},{"id":"7541656378260408383","name":"英语学习打卡"},{"id":"7402916912059680777","name":"启蒙英语"}],"videoTags":[{"name":"校园教育","level":1},{"name":"考试考证","level":2},{"name":"语言学习","level":3}],"chapters":[],"series":null,"location":{"id":"7245118392016537123","name":"河北省图书馆","category":"生活服务;文化场馆;图书馆","address":"东大街22号","district":"长安区","city":"石家庄市","province":"河北省","country":"中国","cityCode":"130100","lat":38.043941,"lng":114.521967,"coverUrl":"https://p3-sign.douyinpic.com/obj/tos-cn-i-...","viewCount":8420,"itemCount":213,"collectedCount":64,"userCount":156,"popularity":"327人想去"},"permissions":{"canDuet":true,"canStitch":false,"canDownload":false,"canShare":true,"canComment":true},"crossPostedToXigua":false,"inputUrl":"1929015166249580"}
Important: URL Durability
Different URL types in the output have very different lifespans. Plan your downstream pipeline accordingly.
| Field | Lifespan | Note |
|---|---|---|
url (canonical post URL) | Permanent | https://www.douyin.com/video/<id>, never expires. The reliable reference. |
shareUrl | Permanent | https://www.iesdouyin.com/share/video/<id>/, also permanent. |
authorMeta.shareUrl, authorMeta.profileUrl | Permanent | Profile share/canonical URLs. |
authorMeta.avatarThumb, authorMeta.avatarLarge | Permanent | CDN-direct, no signature. |
musicMeta.playUrl, musicMeta.coverLarge | Permanent | CDN-direct, no signature. |
thumb, videoMeta.cover, videoMeta.originCover, videoMeta.dynamicCover, images[].url, authorMeta.bgImage | ~14–30 days | Signed 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.bitRates[].url | ~1 hour | Short-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.
Advanced Usage
Track follower growth across many creators (cheapest)
{"profileUrls":["1929015166249580","75736792009","..."],"maxPostsPerProfile":0}
One row per creator, no posts. Pair with a daily schedule to build a follower-tracking dashboard.
Pull only this week's posts from a creator
{"profileUrls":["MS4wLjABAAAAk1tZ-L085zZf2yW_H5dnVFZWyk8Rt8v4RAvf9KhTyPoVdMDxTs7Q_rvgTJGWXezS"],"maxPostsPerProfile":500,"recentDays":7}
The actor stops fetching as soon as it crosses the 7-day boundary, so you only pay for posts within the window.
Bulk creator audit
{"profileUrls":["1929015166249580","75736792009","63485583690","..."],"maxPostsPerProfile":30,"excludePinnedPosts":true}
Fast snapshot of recent (non-pinned) activity across a list of creators. Up to 30 profiles run in parallel.
Pricing: Pay Per Event (PPE)
$6.99 per 1,000 results (base price). Each row written to the dataset counts as one result, whether it's a post row or a profile-only row.
| Event | Per call | Per 1,000 |
|---|---|---|
result (one dataset row) | $0.00699 | $6.99 |
FAQ
What is Douyin (抖音)? Douyin is ByteDance's Chinese short-video platform, the domestic counterpart of TikTok: same company and format, separate app and creator base. Its creators drive trends across China, and this actor captures their full public profile and post history.
How many fields are returned per post?
28 top-level fields per post (in posts mode), with authorMeta containing a further 22 fields nested. In profile-only mode (maxPostsPerProfile: 0) the same 22 author fields are promoted to the top level alongside profileUrl and inputUrl, for 24 fields total.
What types of profile inputs are accepted?
Browser address-bar URLs (/user/MS4w...), app share links (v.douyin.com/...), legacy share URLs (iesdouyin.com/share/user/<numeric>), bare UserSecIDs (MS4w...), and bare numeric user IDs. You can mix all of them in one profileUrls array.
How fresh is the data? Live: every field is fetched on demand at run time. No caching.
Do video URLs work after the run finishes?
Image URLs (covers, avatars, image-post photos, profile background) stay valid for roughly 14–30 days. Video play URLs and download URLs are short-lived; they typically expire within hours. The post url (https://www.douyin.com/video/<id>) is permanent and is the safe long-term reference. See the URL Durability section above.
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; 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.
What's profile-only mode for?
Setting maxPostsPerProfile to 0 returns just the creator's profile metadata: followers, following, total likes, video count, bio, avatar, region. One row per creator. Ideal for daily follower-tracking dashboards where post-level data isn't needed.
Why did a profile (or my whole run) return 0 rows?
Usually a date filter. oldestPostDate and recentDays keep only posts inside the window you set, so a creator who hasn't posted in that window contributes no rows, and a run where none of the profiles posted in the window comes back empty. That is expected, not an error: the run still finishes successfully, and its status message reports how many profiles had no posts in the selected range. Widen or remove the date filter to reach their older posts, or set maxPostsPerProfile: 0 (profile-only mode) to get each creator's profile data regardless of whether they posted recently.
Why are some username fields empty?
Not every Douyin creator has a short_id set on their profile; when they don't, that field comes back empty. The numeric id and the secUid are always present.
Do I need a Douyin account or cookies? No. Paste profile URLs, share links, or 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. JSON preserves the nested authorMeta object best.
How do I find creators by keyword, or get their comments and videos? Chain the suite: Douyin Search Scraper finds creators and posts by keyword, this actor returns their full profile and back-catalogue, Douyin Comments Scraper pulls comment threads, and Douyin Video Scraper fetches per-video metadata and MP4s.
Can I scrape comments / followers / liked videos? Not in this actor; profile and posts only. Use Douyin Comments Scraper for comment threads; follower lists and liked videos are not exposed by Douyin's public profile surface.
Is it legal to scrape Douyin profiles? The actor collects publicly visible profile and post data only, nothing behind a login. You are responsible for complying with Douyin's terms of service and applicable data protection law (GDPR, CCPA, PIPL); profiles are personal data, so check your legal basis before storing or republishing them.
What's the maximum posts per profile? 10,000. The vast majority of creators have fewer than 1,000 posts, so the cap rarely binds. Cost scales linearly with this value, so set what you actually need.
Does the actor work for any Douyin creator? Public profiles only. Private accounts and accounts that have blocked external access are not addressable.
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 profile + post data: followers, engagement, video tags, music, bio. For any creator, in clean JSON.
