Douyin Profile Scraper
Pricing
from $4.99 / 1,000 profiles
Douyin Profile Scraper
Extract Douyin profile data with exact follower, following, video, and like counts, verification, stable IDs, and public profile links. Optionally collect public posts with engagement, media, music, and hashtags in a separate typed dataset.
Pricing
from $4.99 / 1,000 profiles
Rating
0.0
(0)
Developer
Happy B
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
What is Douyin Profile Scraper?
Douyin Profile Scraper extracts public Douyin (抖音 / Chinese TikTok) profile data from profile URLs, share links, or stable sec_user_id values. It can also collect each account's public post history with engagement, media, music, hashtag, and embedded creator fields.
Every successful account is written to a typed Profiles dataset. When Include posts is enabled, posts are written to a separate typed Posts dataset, so exports never mix unrelated row shapes.
No Douyin login, cookie, browser, or proxy configuration is required from you.
Why use this Douyin profile scraper?
- A profile is valuable on its own. Get up to 32 typed public profile fields without paying for or waiting on post history.
- Posts are strictly optional. Enable them only when you need the 54-field content, engagement, media, music, hashtag, and creator context contract.
- Get exact numbers. Followers, likes, posts, plays, comments, shares, collections, and downloads are integers—not shortened values such as
1.2M. - Keep large IDs intact. Account and post IDs are strings, preventing precision loss in JavaScript and spreadsheet pipelines.
- Use clean output tabs. Profiles and Posts are separate typed datasets, while each post embeds flat profile context so it works independently downstream.
- Paste what Douyin gives you. Use a profile URL, a share URL, a bare
sec_user_id, or mobile share text containing one Douyin link.
How to scrape a Douyin profile
- Add one or more Douyin profile URLs, share links, or
sec_user_idvalues. - Leave Include posts off for profile-only research.
- Turn it on to collect public posts and choose a maximum per profile.
- Run the Actor and open the Profiles or Posts output.
Input example
{"profileUrls": ["https://www.douyin.com/user/MS4wLjABAAAA..."],"includePosts": true,"maxPostsPerProfile": 100}
Duplicate inputs are removed before scraping.
Accepted profile inputs
- Full profile URL:
https://www.douyin.com/user/MS4wLjAB... - Profile share URL:
https://v.douyin.com/... - Bare
sec_user_id:MS4wLjAB... - Douyin mobile share text containing exactly one supported HTTPS profile/share URL
Only HTTPS links on Douyin and iesdouyin domains are accepted. Unrelated links fail before any paid profile request.
What profile data can I extract?
| Field | Description |
|---|---|
sourceProfileInput | Normalized input that produced the row |
uid, secUid, shortId | Numeric, stable encoded, and short account IDs |
uniqueId | Public Douyin ID or handle |
nickname, signature | Display name and public biography |
avatarThumbUrl, avatarMediumUrl, avatarLargerUrl | Observed avatar variants |
avatarUrl, profileUrl | Derived preferred avatar and canonical profile link |
followerCount, followingCount | Counts reported by Douyin |
awemeCount, totalFavorited | Published posts and total likes received |
verified, enterpriseVerifyReason, customVerify, verificationType | Observed verification values |
privateAccount, commerceUser | Normalized account flags |
gender, region, location, language | Observed profile attributes when available |
insId, twitterId, youtubeChannelId | Linked account identifiers when published |
liveStatus | Public live-broadcast state when available |
scrapeTimestamp | UTC time when the row was produced |
Fields Douyin does not publish for an account are omitted.
The output follows the published Profiles dataset schema. The example below is illustrative and does not represent a specific person or captured live row.
Profile output example
{"sourceProfileInput": "MS4wLjABAAAA...","uid": "68141954464","secUid": "MS4wLjABAAAA...","uniqueId": "example_creator","nickname": "示例用户","signature": "公开简介","followerCount": 125430,"followingCount": 318,"awemeCount": 242,"totalFavorited": 3870000,"verified": false,"profileUrl": "https://www.douyin.com/user/MS4wLjABAAAA...","scrapeTimestamp": "2026-08-26T12:00:00.000Z"}
Optional public post history
Each post row can include:
- Post ID, caption, canonical link, and publication time
- Play, like, comment, share, collection, and download counters as reported by Douyin
- Video, cover, or slideshow image URLs when available
- Media type, dimensions, and duration
- Music ID, title, author, URL, and hashtags when available
- The profile's IDs, name, bio, counters, verification, region, location, and language embedded as flat
profile...fields sourceProfileInputandscrapeTimestamp
Embedding creator fields makes every post row usable on its own in a warehouse or spreadsheet.
Post output example
{"awemeId": "7530000000000000000","description": "示例作品","createTimeIso": "2026-08-20T09:30:00.000Z","playCount": 928430,"likeCount": 52800,"commentCount": 1640,"shareCount": 3900,"collectCount": 7200,"downloadCount": 120,"mediaTypeName": "video","videoUrl": "https://example.com/video.mp4","profileUniqueId": "example_creator","profileFollowerCount": 125430,"sourceProfileInput": "MS4wLjABAAAA...","scrapeTimestamp": "2026-08-26T12:00:00.000Z"}
Media URLs can be signed or temporary. Download media you are entitled to retain soon after the run.
Douyin can report zero when a counter is unavailable. The Actor preserves the reported value and does not estimate a replacement.
Input reference
| Parameter | Type | Default | Limits | Description |
|---|---|---|---|---|
profileUrls | string[] | required | 1–100 | Profile URLs, share links, or sec_user_id values |
includePosts | boolean | false | — | Collect public posts in the Posts dataset |
maxPostsPerProfile | integer | 50 | 1–5,000 | Maximum posts per profile |
Reliable results and billing
Interrupted runs can continue without duplicating profiles or posts already delivered. Charges track rows visible in the Profiles and Posts datasets. If a result cannot be validated, the run reports a clear sanitized error instead of returning questionable data.
How much does scraping Douyin profiles cost?
Profiles and posts are priced separately. You pay once for each returned profile and once for each returned post. Enabling posts does not change the profile price, and interrupted runs do not charge the same delivered row twice.
Profile result
| Apify tier | Per profile | Per 1,000 profiles |
|---|---|---|
| Free | $0.00799 | $7.99 |
| Bronze | $0.00599 | $5.99 |
| Silver | $0.00549 | $5.49 |
| Gold | $0.00499 | $4.99 |
Post result
| Apify tier | Per post | Per 1,000 posts |
|---|---|---|
| Free | $0.00799 | $7.99 |
| Bronze | $0.00599 | $5.99 |
| Silver | $0.00549 | $5.49 |
| Gold | $0.00499 | $4.99 |
An additional $0.001 run-start charge applies.
Platinum and Diamond users receive the listed Gold price.
| Example on the Free tier | Estimated cost |
|---|---|
| 10 profiles only | $0.081 |
| 1 profile + 50 posts | $0.408 |
| 10 profiles + 50 posts each | $4.076 |
Examples include the run-start charge. You are charged only for returned rows, and the Actor respects the run's maximum charge.
Common use cases
- Influencer and competitor profile audits
- Exact audience and publishing snapshots
- Public creator-content catalogs
- Engagement benchmarking
- Scheduled monitoring and archival workflows
- Enriching creator IDs returned by the Douyin Creator Scraper
Integrations
Use Apify Schedules and Webhooks for monitoring, or send Profiles and Posts to Make, Zapier, Google Sheets, Slack, a warehouse, or your own API client. Export formats include JSON, CSV, Excel, XML, HTML, and JSONL.
FAQ
Are private profiles supported?
Publicly visible profile fields may still be available. Private posts are not returned.
Why do I always get a profile row when posts are enabled?
The profile lookup is a useful, separately priced result and lives in the Profiles dataset. Posts are optional add-on results in the Posts dataset.
What happens when a profile has no public posts?
The profile row is still returned. The Posts dataset contains no row for that account, so there is no post charge.
Can I schedule profile monitoring?
Yes. Save an Actor task, attach a schedule, and compare the reported counters and scrapeTimestamp values across datasets.
Related Douyin Actors
| Actor | Best for |
|---|---|
| Douyin Creator Scraper | Find creators when you do not yet know their profile URL or ID |
| Douyin Trend Scraper | Export current topics or compare keyword popularity over time |
Legal and personal data
This Actor extracts publicly available data, some of which can be personal data. You are responsible for your lawful basis, notices, retention, security, outreach, profiling, copyright handling, and data-subject rights. Review Douyin's User Service Agreement, Privacy Policy, and all laws applicable to your use case.
Support
For a bug or feature request, open an Apify issue. Include the run ID, affected profile input, expected behavior, and input with sensitive values removed.