Douyin Profile Scraper avatar

Douyin Profile Scraper

Pricing

from $7.00 / 1,000 profile scrapeds

Go to Apify Store
Douyin Profile Scraper

Douyin Profile Scraper

Scrape public Douyin (抖音) creator profiles by URL, share link, sec_user_id or uid, with nickname, bio, follower, following and like counts, verification, region, gender and custom badges. No cookies needed.

Pricing

from $7.00 / 1,000 profile scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

1

Monthly active users

4 days ago

Last modified

Share

What is Douyin Profile Scraper — 抖音 Creator Profiles & Followers?

Scrape public Douyin (抖音) creator profiles by profile URL, share-link, or sec_user_id. Each input resolves to one flat dataset record for a creator, so you can read identity fields, audience metrics, verification badges, region, gender, and commerce signals in a single row. When recent-post enrichment is enabled, the Actor adds separate post rows for the same input profile.

This is an Apify Actor that can be used through Apify MCP. It accepts Douyin profile identifiers, returns one record per scraped profile or post, and writes the results to an Apify dataset for API access, automation, and agent workflows.

Best fit and connected workflows

This Actor fits workflows that start with a public Douyin profile identifier and end with structured creator data. Common routes include:

  • Creator research and lead generation from profile URLs or Douyin share-links.
  • Brand and account review using follower counts, verification status, region, and business signals.
  • Agent workflows that need a compact Douyin profile summary from Apify MCP.
  • Optional profile-plus-post collection when a profile-level view should be paired with recent video metadata.

If your workflow begins with a Douyin profile page, this Actor provides a focused path from the public profile to a dataset row that can be filtered, joined, or exported downstream.

Practical scenario

Maya is reviewing a Douyin creator shared by a partner team. She starts with the creator's profile URL and runs the Actor with recent posts disabled. The dataset returns nickname, signature, followerCount, verified, customVerify, ipLocation, and profileUrl. Maya uses the follower count, verification badge, and region to decide whether to send the creator to a manual review queue, then opens the profile URL to confirm the account identity.

Input

FieldTypeDescription
profileInputsstring[]Douyin profile identifiers. Accepted values are full profile URLs, short share-links, or raw sec_user_id strings. One item per row.
includeRecentPostsbooleanWhen true, the Actor adds recent video posts as separate dataset rows tagged itemType: "post".
maxPostsPerProfileintegerCaps recent posts per profile when recent posts are enabled. Range: 1-200. Default: 20.
maxProfilesintegerCaps how many profiles are processed in one run after deduplication. Range: 1-100. Default: 25.
proxyConfigurationobjectApify Residential proxy configuration with country rotation. Default country: HK.

Focused JSON input example

{
"profileInputs": [
"https://www.douyin.com/user/MS4wLjABAAAAVtZkS6ZpJVm-T1FZW5XWGcVTQ-Z2u7CcEt1MdJxoZbA",
"MS4wLjABAAAAVtZkS6ZpJVm-T1FZW5XWGcVTQ-Z2u7CcEt1MdJxoZbA"
],
"includeRecentPosts": true,
"maxPostsPerProfile": 5,
"maxProfiles": 10,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "HK"
}
}

Output

The Actor stores results in an Apify dataset and also exposes a run summary in OUTPUT. Each dataset item is either a creator profile row or a recent post row.

FieldTypeDescription
itemTypestringprofile or post.
inputstringOriginal identifier supplied by the user.
secUserIdstringDouyin opaque encrypted user ID.
uidstringDouyin numeric user ID, string-encoded.
shortIdstringPublic Douyin handle when available.
nicknamestringDisplay name.
signaturestringBio or signature.
avatarUrlstringAvatar image URL.
profileUrlstringPublic profile URL.
followerCountintegerFollowers.
followingCountintegerFollowing.
totalFavoritedintegerTotal likes received.
favoritingCountintegerLikes given count.
awemeCountintegerTotal video posts count.
verifiedbooleanVerified account flag.
customVerifystringVerification badge text.
enterpriseVerifyReasonstringEnterprise verification reason.
genderstringmale, female, unknown, or other.
ipLocationstringIP location.
countrystringCountry.
provincestringProvince.
citystringCity.
isLiveCommercebooleanLive-commerce enabled flag.
withCommerceEntrybooleanCommerce store flag.
languagestringAccount language.
awemeIdstringVideo aweme ID for post rows.
postDescstringPost caption for post rows.
postUrlstringPost permalink for post rows.
postCreateTimestringPost creation time in ISO 8601 for post rows.
diggCountintegerPost like count.
commentCountintegerPost comment count.
shareCountintegerPost share count.
playCountintegerPost play count.
collectCountintegerPost bookmark count.
videoDurationSecnumberVideo duration in seconds.
videoCoverUrlstringVideo cover URL.
scrapedAtstringScrape timestamp in ISO 8601.
_providerstringBacking provider used for the record.

Illustrative JSON output record

{
"itemType": "profile",
"input": "https://www.douyin.com/user/MS4wLjABAAAAVtZkS6ZpJVm-T1FZW5XWGcVTQ-Z2u7CcEt1MdJxoZbA",
"secUserId": "MS4wLjABAAAAVtZkS6ZpJVm-T1FZW5XWGcVTQ-Z2u7CcEt1MdJxoZbA",
"uid": "93847265012",
"shortId": "douyin_handle",
"nickname": "示例创作者",
"signature": "短视频每天更新",
"avatarUrl": "https://example.com/avatar.jpg",
"profileUrl": "https://www.douyin.com/user/MS4wLjABAAAAVtZkS6ZpJVm-T1FZW5XWGcVTQ-Z2u7CcEt1MdJxoZbA",
"followerCount": 1284321,
"followingCount": 248,
"totalFavorited": 18950221,
"favoritingCount": 120,
"awemeCount": 532,
"verified": true,
"customVerify": "美食博主",
"enterpriseVerifyReason": "example enterprise verification reason",
"gender": "female",
"ipLocation": "上海",
"country": "China",
"province": "Shanghai",
"city": "Shanghai",
"isLiveCommerce": true,
"withCommerceEntry": true,
"language": "zh",
"scrapedAt": "2026-06-27T06:55:12.000Z"
}

How it works

The Actor uses an anti-detect browser with Apify Residential proxies. The live contract shows these implementation facts:

  • It visits www.douyin.com/user/<sec_user_id>.
  • It intercepts the profile XHR at /aweme/v1/web/user/profile/other/.
  • When includeRecentPosts is enabled, it also intercepts /aweme/v1/web/aweme/post/.
  • It performs cookie warmup on the Douyin homepage before the profile page.
  • It rotates through HK, SG, TW, JP, and MO proxy countries.

The output dataset contains creator rows by default and post rows only when recent-post collection is enabled.

Pricing

Douyin Profile Scraper — 抖音 Creator Profiles & Followers uses Pay per event pricing, and Apify platform usage is charged separately according to your Apify plan. Open the live Pricing tab in the Apify Console for the current pricing details and usage-based charges.

Charged events:

  • Actor start
  • Profile scraped
  • Recent post scraped

Example in words: if you scrape ten profiles and collect five recent posts per profile, the execution includes ten profile-scraped events and fifty post-scraped events, plus one actor-start event.

Use with AI agents (MCP)

This Actor is available as an Apify Actor that can be called through Apify MCP for agentic workflows. The precise Actor identity is khadinakbar/douyin-profile-scraper.

Tool description: submit Douyin profile identifiers, receive structured creator rows in an Apify dataset, and optionally add recent-post rows for each profile.

Scrape this Douyin profile URL and return the creator profile row. If recent posts are enabled, include recent post rows and keep the output in dataset order for downstream filtering.

Output interpretation:

  • Use itemType: "profile" for creator identity and audience fields.
  • Use itemType: "post" for video-level rows when recent posts are requested.
  • Use input to trace each row back to the original identifier.
  • Use profileUrl, secUserId, and nickname as the primary identity anchors.
  • Use scrapedAt and _provider for provenance and recency.
  • Use awemeId and postUrl to connect post rows back to the source profile.

Scope and pagination:

  • Input accepts up to 100 profile identifiers per run.
  • maxProfiles acts as a run-level cap.
  • maxPostsPerProfile caps post rows per profile when recent posts are enabled.

Cost guidance:

  • One profile row is charged per successfully scraped creator record.
  • One post row is charged per recent post record pushed when recent posts are enabled.
  • Review the live Pricing tab before scaling agent runs.

Apify API example

import { ApifyClient } from "apify-client";
const APIFY_TOKEN = process.env.APIFY_TOKEN;
const client = new ApifyClient({ token: APIFY_TOKEN });
const actorCall = await client.actor("khadinakbar/douyin-profile-scraper").call({
profileInputs: [
"https://www.douyin.com/user/MS4wLjABAAAAVtZkS6ZpJVm-T1FZW5XWGcVTQ-Z2u7CcEt1MdJxoZbA"
],
includeRecentPosts: false,
maxProfiles: 1
});
const datasetId = actorCall.defaultDatasetId;
const { items } = await client.dataset(datasetId).listItems({ clean: true });
console.log("Dataset items:", items);

Best results and outcome guidance

Use one Douyin identifier per row so each profile resolves cleanly and stays traceable in the dataset. If your workflow starts with a share-link, pass the share-link directly; if you already have sec_user_id, pass that value directly for the most direct profile lookup. Set includeRecentPosts only when post-level context is useful for your workflow, and use maxProfiles as a run-level cap when you want predictable cost control.

Continue the workflow

  • Then use Douyin Search Scraper to extend Douyin Profile Scraper — 抖音 Creator Profiles & Followers research with a complementary discovery contract.
  • Then use Facebook Ads Library Scraper to extend Douyin Profile Scraper — 抖音 Creator Profiles & Followers with a neighboring social-media research source when the brief calls for Facebook data.

Design note

I found that the live dataset contract separates creator rows and post rows through itemType, and the profile view is the default output path. That makes the Actor easy to route downstream because each row stays flat while still carrying a clear source type.

FAQ

Which input format is the most direct for Douyin profiles?

A raw sec_user_id is the most direct profile identifier in the live contract, and full profile URLs or Douyin share-links are also accepted.

What happens when recent posts are enabled?

The Actor adds separate dataset rows with itemType: "post" for recent videos belonging to the input profiles. These rows include fields such as awemeId, postDesc, playCount, and postUrl.

How can I connect the result to a profile in my own system?

Use secUserId, uid, shortId, and profileUrl as the main identifiers. The input field preserves the original identifier you sent.

Can this Actor be used in an Apify MCP workflow?

Yes. It is an Apify Actor that is MCP-ready, and its structured dataset output is suitable for agent tools that read back profile and post rows.

Responsible use

This Actor accesses public Douyin profile data. Use the returned data in ways that respect applicable law, platform terms, privacy expectations, and your own data governance policies. For outreach, review, and enrichment workflows, keep usage proportional to the purpose and store only the fields you need.