Douyin Scraper
Pricing
from $0.92 / 1,000 douyin video listeds
Douyin Scraper
Download Douyin videos without watermark, get any comments, profiles, trending, series and keywords. No login or cookies needed.
Douyin Scraper
Pricing
from $0.92 / 1,000 douyin video listeds
Download Douyin videos without watermark, get any comments, profiles, trending, series and keywords. No login or cookies needed.
You can access the Douyin Scraper programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in API & Integrations in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "1.3", "x-build-id": "ar0IVAfC2bWit3TkL" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/ecommerce_leads~douyin-scraper/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-ecommerce_leads-douyin-scraper", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } }, "/acts/ecommerce_leads~douyin-scraper/runs": { "post": { "operationId": "runs-sync-ecommerce_leads-douyin-scraper", "x-openai-isConsequential": false, "summary": "Executes an Actor and returns information about the initiated run in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/runsResponseSchema" } } } } } } }, "/acts/ecommerce_leads~douyin-scraper/run-sync": { "post": { "operationId": "run-sync-ecommerce_leads-douyin-scraper", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } } }, "components": { "schemas": { "inputSchema": { "type": "object", "required": [ "mode" ], "properties": { "mode": { "title": "What do you want to do?", "enum": [ "download", "comments", "profile", "trending", "feed", "related", "keywords", "series", "translate" ], "type": "string", "description": "Pick the Douyin task to run. **Download videos** is the default and the most used: paste Douyin links and get watermark-free MP4 URLs back. Every other mode reveals its own fields below.", "default": "download" }, "videoUrls": { "title": "Douyin video links", "type": "array", "description": "Douyin links to download. Paste anything Douyin gives you — full links (`https://www.douyin.com/video/7681251317267942708`), short links (`https://v.douyin.com/iAbCdEf/`), the whole share caption with emojis, or a bare video ID. Each Douyin link becomes one row in the output.", "items": { "type": "string" } }, "includeRawData": { "title": "Include Douyin's raw API response", "type": "boolean", "description": "Adds a `raw` field with the full untouched Douyin payload (150+ fields per video). Leave off unless you need a Douyin field this actor does not already map — it makes each row roughly 20× larger.", "default": false }, "videoUrl": { "title": "Douyin video link", "type": "string", "description": "The Douyin video whose comments (or related videos) you want. Accepts a full Douyin link, a `v.douyin.com` short link, a share caption or a bare ID. Example: `https://www.douyin.com/video/7681251317267942708`" }, "maxComments": { "title": "Max Douyin comments", "minimum": 1, "maximum": 2000, "type": "integer", "description": "How many top-level Douyin comments to fetch. Douyin serves these in pages of 20 and the actor keeps paging until it reaches this number or Douyin runs out.", "default": 50 }, "includeReplies": { "title": "Also fetch Douyin comment replies", "type": "boolean", "description": "Fetches the reply thread under every Douyin comment that has one. ⚠️ Douyin is currently blocking its reply endpoint for anonymous sessions, so this often returns nothing — the run then continues with top-level Douyin comments only and you are not charged for the replies. Each reply that does come back is billed as one Douyin comment.", "default": false }, "maxRepliesPerComment": { "title": "Max replies per Douyin comment", "minimum": 1, "maximum": 200, "type": "integer", "description": "Cap on replies fetched per Douyin comment. Only applies when replies are enabled.", "default": 10 }, "profileUrls": { "title": "Douyin profile links", "type": "array", "description": "Douyin creator profiles to scrape. Paste the profile link (`https://www.douyin.com/user/MS4wLjABAAAA...`) or the bare `sec_uid`. Douyin numeric UIDs do **not** work here — Douyin's profile API only accepts `sec_uid`.", "items": { "type": "string" } }, "maxProfileVideos": { "title": "Max videos per Douyin profile", "minimum": 0, "maximum": 500, "type": "integer", "description": "How many of the creator's recent Douyin videos to include. ⚠️ Douyin currently restricts creator video lists for anonymous sessions, so this usually returns nothing while the Douyin profile stats still come back in full. Leave at 0 for profile stats only. To collect a creator's Douyin videos reliably, use the Download mode with their Douyin video links.", "default": 0 }, "board": { "title": "Douyin hot search board", "enum": [ "hot", "total", "shopping", "music", "sport", "car", "travel" ], "type": "string", "description": "Which Douyin trending board to read.", "default": "hot" }, "maxTrending": { "title": "Max Douyin trending entries", "minimum": 1, "maximum": 50, "type": "integer", "description": "How many Douyin hot-search entries to return.", "default": 50 }, "category": { "title": "Douyin feed category", "enum": [ "all", "game", "anime", "music", "food", "knowledge", "sports", "drama", "movie", "vlog", "kids", "car", "rural", "animal", "travel", "beauty" ], "type": "string", "description": "Which Douyin category feed to pull from. `all` is Douyin's main curated feed (精选).", "default": "all" }, "maxFeedVideos": { "title": "Max Douyin feed videos", "minimum": 1, "maximum": 200, "type": "integer", "description": "How many Douyin videos to pull from the category feed. Douyin returns a fresh recommendation set on every run, so repeated runs give different videos.", "default": 20 }, "maxRelated": { "title": "Max related Douyin videos", "minimum": 1, "maximum": 100, "type": "integer", "description": "How many Douyin videos related to the target video to return.", "default": 20 }, "keyword": { "title": "Douyin keyword", "type": "string", "description": "Seed keyword for Douyin search suggestions. Returns the terms Douyin's own search box suggests — useful for Douyin SEO and hashtag research. Example: `美食` (food)." }, "suggestionType": { "title": "Douyin suggestion type", "enum": [ "autocomplete", "related" ], "type": "string", "description": "`autocomplete` mirrors Douyin's type-ahead dropdown (prefix matches). `related` returns broader Douyin topic suggestions around the keyword.", "default": "autocomplete" }, "maxSeries": { "title": "Max Douyin mini-dramas", "minimum": 1, "maximum": 200, "type": "integer", "description": "How many Douyin mini-dramas (短剧) to list from Douyin's series catalogue.", "default": 24 }, "text": { "title": "Douyin text to translate", "type": "string", "description": "Douyin caption, comment or hashtag text to translate using Douyin's own translation engine. Example: `今天天气很好`" }, "targetLanguage": { "title": "Translate Douyin text into", "enum": [ "en", "zh", "ja", "ko", "es", "pt", "fr", "de", "ru", "id", "th", "vi", "ar" ], "type": "string", "description": "Target language code for the Douyin translation.", "default": "en" }, "crawlerUrl": { "title": "Crawler API base URL", "type": "string", "description": "Base URL of the Douyin crawler backend, e.g. `https://ping.example.com`. Falls back to the `CRAWLER_URL` environment variable." }, "crawlerApiKey": { "title": "Crawler API key", "type": "string", "description": "API key for the Douyin crawler backend. Falls back to the `CRAWLER_API_KEY` environment variable." } } }, "runsResponseSchema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "id": { "type": "string" }, "actId": { "type": "string" }, "userId": { "type": "string" }, "startedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "finishedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "status": { "type": "string", "example": "READY" }, "meta": { "type": "object", "properties": { "origin": { "type": "string", "example": "API" }, "userAgent": { "type": "string" } } }, "stats": { "type": "object", "properties": { "inputBodyLen": { "type": "integer", "example": 2000 }, "rebootCount": { "type": "integer", "example": 0 }, "restartCount": { "type": "integer", "example": 0 }, "resurrectCount": { "type": "integer", "example": 0 }, "computeUnits": { "type": "integer", "example": 0 } } }, "options": { "type": "object", "properties": { "build": { "type": "string", "example": "latest" }, "timeoutSecs": { "type": "integer", "example": 300 }, "memoryMbytes": { "type": "integer", "example": 1024 }, "diskMbytes": { "type": "integer", "example": 2048 } } }, "buildId": { "type": "string" }, "defaultKeyValueStoreId": { "type": "string" }, "defaultDatasetId": { "type": "string" }, "defaultRequestQueueId": { "type": "string" }, "buildNumber": { "type": "string", "example": "1.0.0" }, "containerUrl": { "type": "string" }, "usage": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "integer", "example": 1 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 } } }, "usageTotalUsd": { "type": "number", "example": 0.00005 }, "usageUsd": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "number", "example": 0.00005 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for Douyin Scraper from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: