Douyin Video Scraper API – Metadata, Creator & Engagement Data avatar

Douyin Video Scraper API – Metadata, Creator & Engagement Data

Pricing

from $3.50 / 1,000 results

Go to Apify Store
Douyin Video Scraper API – Metadata, Creator & Engagement Data

Douyin Video Scraper API – Metadata, Creator & Engagement Data

Scrape structured data from public Douyin videos, including creator profiles, engagement metrics, music, hashtags, timestamps, covers, and direct media URLs. Supports short links, share text, aweme IDs, and batches up to 200 works.

Pricing

from $3.50 / 1,000 results

Rating

0.0

(0)

Developer

LanceAPI

LanceAPI

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Categories

Share

Douyin Video Scraper API

Scrape complete structured data from public Douyin videos — including direct media URLs, creator details, engagement metrics, music, hashtags, covers, and timestamps.

Submit a Douyin video URL, short link, copied share text, or aweme ID and receive one clean Dataset result ready for analytics, enrichment, APIs, monitoring, and automation.

Need more than a download URL? Get the video plus the data around it — creator details, engagement metrics, music, hashtags, timestamps, covers, and available direct media URLs in one structured result. Process up to 1,000 inputs in one run without providing a Douyin login Cookie.

Pay only when a substantive structured result is returned — failed and duplicate inputs are not charged.

This is an unofficial Actor and is not affiliated with, endorsed by, or sponsored by Douyin or ByteDance.

Key features

  • Complete video metadata: Get title, description, timestamps, creator data, engagement metrics, music, hashtags, covers, and available media URLs in one result.
  • Direct media URLs included: Use available videoUrl, audioUrl, and coverUrl values directly in downstream workflows.
  • Flexible Douyin input formats: Submit video/note URLs, short links, share links, copied share text, modal URLs, or bare aweme IDs.
  • Batch up to 1,000 works: Process large input lists while keeping failures isolated per item.
  • Clean structured Dataset output: Receive normalized results suitable for APIs, analytics, databases, spreadsheets, and automation.
  • No Douyin Cookie required: Scrape supported public works without providing your Douyin login Cookie.

Quick start

  1. Paste one or more public Douyin video links, short links, share text, or aweme IDs into urls.
  2. Click Start.
  3. Open Output or Dataset → Overview.
  4. Use the returned media URLs, creator data, engagement, music, hashtags, and timestamps.
{
"urls": [
"https://www.douyin.com/video/7534679152504376595"
]
}

Supported inputs

Input typeSupported example
Video URLhttps://www.douyin.com/video/7534679152504376595
Note URLhttps://www.douyin.com/note/{awemeId}
Share URLhttps://www.iesdouyin.com/share/video/7677496358793694515
Short linkhttps://v.douyin.com/.../
Modal URLhttps://www.douyin.com/jingxuan?modal_id=7534679152504376595
Discover URLhttps://www.douyin.com/discover?modal_id=7534679152504376595
Share textCopied Douyin text containing a supported URL
Aweme IDBare numeric ID such as 7534679152504376595

Supported note/slides share variants and Markdown-wrapped links such as [URL](URL) are also recognized. Profiles, feeds, search pages, comments, private works, and logged-in-only content are outside this Actor's scope.

Input

FieldTypeRequiredDefaultLimitsDescription
urlsarray[string]Yes1–1,000Public Douyin video/note URLs, short/share links, copied share text, modal URLs, or bare aweme IDs.

Output

Each input is processed independently. One unique aweme ID can produce at most one chargeable structured result in a run; later inputs resolving to the same aweme ID are returned as uncharged duplicate items. Concurrent batches do not guarantee Dataset order, so match results using input or awemeId.

The example below is based on a real public Douyin work. Temporary signed media query parameters are shortened because they may expire.

{
"input": "https://www.douyin.com/video/7534679152504376595",
"normalizedUrl": "https://www.douyin.com/video/7534679152504376595",
"awemeId": "7534679152504376595",
"contentType": "video",
"title": "雨天开车秒变“睁眼瞎”?玻璃起雾别慌!3步极速除雾法, 新手必存...",
"description": "雨天开车秒变“睁眼瞎”?玻璃起雾别慌!3步极速除雾法, 新手必存...",
"createTime": 1754304200,
"createTimeIso": "2025-08-04T10:43:20.000Z",
"duration": 67.756,
"videoUrl": "https://www.douyin.com/aweme/v1/play/?...temporary-parameters...",
"audioUrl": "https://sf6-cdn-tos.douyinstatic.com/obj/ies-music/7534679156710247206.mp3",
"coverUrl": "https://p3-pc-sign.douyinpic.com/...jpeg?...temporary-parameters...",
"author": {
"nickname": "懂车小彬",
"avatarUrl": "https://p3-pc.douyinpic.com/aweme/100x100/...jpeg",
"followerCount": 384795,
"totalFavorited": 3717158
},
"engagement": {
"playCount": 0,
"diggCount": 11993,
"commentCount": 617,
"shareCount": 4887,
"collectCount": 13171,
"recommendCount": 472
},
"music": {
"title": "@懂车小彬创作的原声",
"author": "懂车小彬",
"audioUrl": "https://sf6-cdn-tos.douyinstatic.com/obj/ies-music/7534679156710247206.mp3",
"duration": 67
},
"hashtags": ["雨天开车除雾正确方法", "新手司机", "新手开车", "青年创作者成长计划"],
"success": true,
"status": "success",
"error": null,
"scrapedAt": "2026-09-01T...Z"
}

The sample's playCount: 0 is not a fallback: Douyin explicitly returned the playCount field with a value of 0 for this work. Missing optional metrics and profile/music values are returned as null, not guessed, estimated, or silently replaced with zero. Missing list data is returned as an empty array or omitted when the field is optional. Counts are point-in-time values, and direct media URLs may expire.

Output field reference

FieldTypeMeaning
inputstringOriginal submitted input.
normalizedUrlstring or nullCanonical Douyin video or note URL.
awemeIdstring or nullUnique Douyin work ID.
contentTypestring or nullNormalized type: video, image, or unknown.
titlestringWork title derived from the source description; an empty string when unavailable.
descriptionstringOriginal work description; an empty string when unavailable.
createTimeinteger or nullSource creation time as a Unix timestamp.
createTimeIsostring or nullSource creation time in ISO 8601 format.
durationnumber or nullVideo duration in seconds.
videoUrlstring or nullPreferred direct video media URL.
audioUrlstring or nullSeparate direct audio URL when genuinely exposed and accessible.
coverUrlstring or nullCover or preview image URL.
authorobjectAvailable creator information.
engagementobjectAvailable public engagement metrics.
musicobjectAvailable music and audio metadata.
hashtagsarray of stringsHashtags extracted from source detail.
imagesarray of stringsImage-note media URLs when reliably exposed; otherwise omitted.
successbooleanWhether a substantive structured result was produced.
statusstringStable result classification.
errorobject or nullSafe error details; null for success and partial.
scrapedAtstringISO 8601 timestamp when scraping completed.

Author fields

FieldTypeMeaning
nicknamestring or nullCreator display name.
avatarUrlstring or nullCreator avatar URL.
followerCountinteger or nullPublic follower count supplied by Douyin.
totalFavoritedinteger or nullPublic total-favorites count supplied by Douyin.

Engagement fields

FieldTypeMeaning
playCountinteger or nullPlay count supplied by Douyin.
diggCountinteger or nullLike count.
commentCountinteger or nullComment count.
shareCountinteger or nullShare count.
collectCountinteger or nullCollection/save count.
recommendCountinteger or nullRecommendation count when exposed.

Music fields

FieldTypeMeaning
titlestring or nullMusic or original-sound title.
authorstring or nullMusic author or owner name.
audioUrlstring or nullDirect audio URL when available and accessible.
durationnumber or nullMusic duration in seconds.

Status and errors

StatusMeaningCharged?
successStructured Douyin work data was returned and the direct video URL passed lightweight validation.Yes
partialStructured Douyin work data was returned, but a usable direct video URL was unavailable or failed validation.Yes
duplicateThe same aweme ID was already processed in this run.No
invalid_input / unsupported_urlInput is malformed or outside supported forms.No
not_found / unavailable / privateThe work cannot be accessed publicly.No
blocked / login_required / rate_limitedDouyin rejected or limited the anonymous request.No
timeout / upstream_error / parsing_failedA request or response-parsing problem prevented a structured result.No
internal_errorAn unexpected safe-to-report processing error occurred.No

partial is chargeable because the Scraper's product value is structured Douyin detail, not only a downloadable video URL. Both success and partial are written as substantive results with success: true; all failure and duplicate items are uncharged.

{
"input": "not a Douyin URL",
"normalizedUrl": null,
"awemeId": null,
"success": false,
"status": "invalid_input",
"error": {
"code": "INVALID_INPUT",
"message": "The input does not contain a supported Douyin URL."
},
"scrapedAt": "2026-09-01T...Z"
}

API examples

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('lance_api/douyin-video-scraper-api').call({
urls: ['https://www.douyin.com/video/7534679152504376595'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python:

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('lance_api/douyin-video-scraper-api').call(run_input={
'urls': ['https://www.douyin.com/video/7534679152504376595'],
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

cURL:

curl -X POST \
'https://api.apify.com/v2/acts/lance_api~douyin-video-scraper-api/run-sync-get-dataset-items' \
-H 'Authorization: Bearer APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"urls":["https://www.douyin.com/video/7534679152504376595"]}'

The synchronous endpoint returns the run's default Dataset items. For large batches, start the Actor asynchronously and retrieve items from run.defaultDatasetId after completion.

Pricing

This Actor uses pay-per-result pricing. One result event is charged when a substantive structured result is successfully produced and written to the Dataset.

Apify planPer 1,000 chargeable resultsPer chargeable result
Free$5.00$0.0050
Starter$4.50$0.0045
Scale$4.00$0.0040
Business$3.50$0.0035
  • success and partial each create one result charge.
  • Invalid, unsupported, unavailable, private, blocked, rate-limited, timed-out, parsing-failed, and internal-error items are not charged.
  • Duplicate items are not charged. Different input forms that resolve to the same aweme ID can create at most one chargeable result per run.
  • Creator, engagement, music, hashtag, timestamp, image, and media fields do not create separate charges.

One unique substantive Douyin work = at most one result charge per run.

Check the Actor's Pricing tab for the current published prices.

Use cases

  • Content analytics: Collect structured metadata and engagement metrics for public Douyin videos.
  • Creator research: Combine available author information with video-level metrics for creator and content analysis.
  • Social listening and monitoring: Feed normalized public video data into internal monitoring and reporting systems.
  • Media enrichment: Enrich existing URLs with creator, music, engagement, timestamps, hashtags, covers, and direct media links.
  • Data pipelines: Load structured Douyin video data into databases, BI tools, spreadsheets, and analytics workflows.
  • AI and automation workflows: Pass returned metadata into downstream classification, summarization, transcription, moderation, or agent workflows.

Use with AI agents

Use this Actor through the Apify MCP Server in compatible AI and automation workflows to turn Douyin video URLs into structured video metadata.

An AI agent can take a Douyin URL, retrieve structured creator, engagement, music, hashtag, and media data, then use that result for downstream summarization, classification, research, monitoring, or automation.

FAQ

What data can I scrape from a Douyin video?

Available fields include description, timestamps, duration, creator information, engagement metrics, music, hashtags, cover, direct video/audio URLs, and processing status.

Does it return direct video and audio URLs?

Yes, when Douyin exposes accessible media URLs. Missing or inaccessible audio is returned as null; the Actor does not invent an MP3 URL.

Yes. It resolves supported v.douyin.com short links, iesdouyin.com share links, copied share text, and the other forms listed above.

No user Cookie or login is required. Only publicly accessible works are supported.

Can it scrape private videos?

No. Private, removed, logged-in-only, region-restricted, or otherwise inaccessible works cannot be scraped.

Does it support image notes?

The Actor accepts supported Douyin note URLs because Douyin may expose mixed video/image work types through related endpoints. The product is optimized for video scraping; images is returned only when image-note media is reliably available.

Are media URLs permanent?

No. Direct media and signed cover URLs may expire. Use or store permitted media promptly.

What does partial mean?

A partial result means structured Douyin work data was successfully returned, but a usable direct video URL was unavailable or failed validation. It still has success: true because the core scraper result succeeded, and it creates one result charge.

Are failed inputs charged?

No. Failed items are returned for batch visibility but do not trigger a result charge.

Are duplicate inputs charged twice?

No. Deduplication uses the resolved aweme ID. Only the first unique structured result can be charged; later duplicate items are not charged.

How much does each result cost?

The price depends on the Apify plan: $0.0050 on Free, $0.0045 on Starter, $0.0040 on Scale, and $0.0035 on Business.

Can it scrape profiles, feeds, search results, or comments?

No. This Actor handles individual public Douyin works only.

Limitations

  • Public individual works only; no profiles, search results, feeds, comments, private works, or user Cookie input.
  • The product is optimized for videos. Image-note fields are best effort and appear only when reliably exposed.
  • Media URLs are temporary and may expire; the Actor does not copy media into Apify storage.
  • Metadata depends on the fields Douyin exposes for each work. Missing optional metrics and profile/music values are null; list fields are empty or omitted; values are never estimated.
  • Regional, age, anti-bot, login, or rate restrictions may prevent access to some public-looking works.
  • Douyin can change its response structure, which may temporarily affect parsing.
  • Dataset order is not guaranteed for concurrent batches. Match items using input or awemeId.

Responsible use

Use this Actor only for content you are legally permitted to access and process. Respect copyright, privacy, applicable law, contractual restrictions, and platform terms.

Support

Contact lanceapi2026@hotmail.com or open an issue on the Actor page.

Include the run ID, a safe public input URL, the returned status, and error.code. Never send Apify tokens, cookies, signatures, authorization headers, passwords, or proxy credentials. Keep API tokens out of source code, screenshots, prompts, and logs.