logo
languageENdown
menu

Douyin Keyword Search

Search one Douyin keyword and return matching public videos, publishers, engagement metrics, and timestamps.

Overview

Keyword research on Douyin often starts with a simple phrase but quickly turns into a fragmented set of videos, accounts, and engagement signals. This app gathers public search results for one brand, product, topic, or campaign keyword and turns them into a structured content dataset. Each record connects the content itself with its publishing account, publication time, media links, and the engagement values visible when it was collected. The dataset is suited to research that needs evidence at the individual-content level. It preserves source identifiers and public URLs so analysts can trace notable results, while also retaining titles, account attributes, tags, recognized speech or on-screen text when available, and multiple engagement counters for comparison.

Data notes

Results come from Douyin's public keyword search and are deduplicated by Content ID. Ordering follows the selected search order and publication-period filter. Engagement values and follower counts are stored as numeric strings, while cooperation details, image lists, music details, publish locations, and topic tags remain in their original text representation. Collection time and Publish time use the source representation, whose time zone is not specified. Video duration is also preserved as a numeric string, but the source does not identify its unit. The dataset covers only public content discoverable through keyword search; deleted, private, login-only, and non-indexed content are outside its scope.

What the results look like

Each record represents one Douyin item found for the submitted keyword.

Content IDContent titleAccount namePublish timeLike countComment count
6760573437619473671lol最逆天的彩蛋!揭晓! #lol呼叫网管2019-11-18T17:18:59547844.05446.0
7029249241700699400《改口》真实经历#lol酒鬼大人2021-11-11T17:57:06474147.021519.0
Additional fields include public content and account URLs, follower count, favorites, shares, downloads, video duration, verification details, recognized speech, on-screen text, music information, locations, and topic tags.

Use cases

  • For brand or campaign monitoring, compare Matched keyword, Publish time, Content title, and Like count to identify topics that attract attention over time.
  • For creator discovery, combine Account name, Account URL, Follower count, Verification status, and engagement counters to shortlist relevant public accounts.
  • For content benchmarking, group records by Topic tags and compare Like count, Comment count, Favorite count, and Share count to find formats and themes associated with stronger interaction.

Scope and boundaries

One keyword per task with an expected result count from 1 to 200; results are returned in complete batches of 10 and may be rounded up; public searchable content only.

  • Good for
  • When you need to discover public Douyin content about a brand, product, topic, or campaign.
  • When you need a structured dataset of videos, publishing accounts, timestamps, and engagement metrics for content research.
  • Do not use for
  • When you need comments from an individual video; this app returns keyword search results rather than comment details.
  • When you need deleted, private, login-only, or otherwise non-searchable Douyin content.

Failure handling

Failure and retry behavior declared by the author. We recommend including it in your system prompt when integrating.

  1. 1If no results are returned, shorten or rephrase the keyword and submit a new task.
  2. 2Retry later after rate limits, temporary service errors, or timeouts; check the execution credential configuration after an authentication failure.
  3. 3Keep completed records after a partial success; resubmit the same input after a failed or expired task.

Input

Parameters required to call this App, generated from the input.schema in manifest.json.

FieldBusiness nameTypeRequiredDefaultEnum / ConstraintsExampleDescription
keywordSearch keywordstringYes——韶音Brand, product, topic, or phrase to search on Douyin. Each task accepts one keyword from 1 to 512 characters.
crawl_countExpected result countintegerYes—1–20050Expected number of results, from 1 to 200. Results arrive in complete batches of 10, so the actual count may be rounded up.
sortSort orderstring(enum)Yes—1 (Comprehensive) / 4 (Newest)4Choose comprehensive relevance or newest-first ordering for the search results.
time_limitPublication periodstring(enum)Yes—1 (Past day) / 0 (Any time)0Limit results to content published within the last day, or search without a publication-time limit.

Output

Field structure of a single record, generated from the output.schema in manifest.json.

FieldBusiness nameTypeExampleDescription
accountIdAccount IDstring109014805831Douyin identifier of the publishing account.
accountNameAccount namestring呼叫网管Display name of the publishing account.
accountSecIdAccount secure IDstringMS4wLjABAAAAAtnCpevF0YXW29cXbyJmXnSyq6qZL-PdV2x8Cl6PQpwEncrypted Douyin identifier of the publishing account.
accountShortIdAccount short IDstring—Short identifier shown for the publishing account when available.
accountUniqueIdDouyin handlestringHJWGUnique public handle of the publishing account.
accountUrlAccount URLstringhttps://www.douyin.com/user/MS4wLjABAAAAAtnCpevF0YXW29cXbyJmXnSyq6qZL-PdV2x8Cl6PQpwPublic Douyin profile URL of the publishing account.
accurateLocationCitiesMatched citiesstring—City-level location information associated with the content, as provided by the source.
accurateLocationProvincesMatched provincesstring—Province-level location information associated with the content, as provided by the source.
anchorInfoAnchor informationstring—Raw anchor information attached to the content.
asrTextSpeech transcriptstring—Text recognized from the video's audio when available.
avatarUrlAvatar URLstringhttps://p11.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-avt-0015_5c0c342a89f6ce58ccd71b497a37a53e.heic?from=327834062Image URL for the publishing account's avatar.
bizIdBusiness IDstring英雄联盟Business identifier associated with the result record.
collectionCountFavorite countstring3196.0Number of favorites saved as a numeric string.
commentCountComment countstring5446.0Number of comments saved as a numeric string.
contentIdContent IDstring6760573437619473671Unique identifier of the Douyin content.
contentTextContent textstring—Main text of the content when available.
contentTitleContent titlestringlol最逆天的彩蛋!揭晓! #lolDisplay title or caption of the content.
contentUrlContent URLstringhttps://www.douyin.com/video/6760573437619473671Public Douyin page URL for the content.
cooperationInfosCooperation informationstring[]Cooperation details saved as a JSON-formatted string.
coverUrlCover URLstringhttps://p95-sz-sign.douyinpic.com/tos-cn-p-0015/53734fedbaec4ad3968a06c6cb295e7e~tplv-dy-resize-walign-adapt-aq:540:q75.heicImage URL for the content cover.
crawlTimeCollection timestring2026-09-09T16:39:38Time when the record was collected; the source does not specify a time zone.
diggCountLike countstring547844.0Number of likes saved as a numeric string.
downloadCountDownload countstring8463.0Number of downloads saved as a numeric string.
fansFollower countstring12170016Publisher follower count saved as a numeric string.
forwardCountForward countstring20.0Number of forwards saved as a numeric string.
imageUrlListImage URL liststring[]Content image URLs saved as a JSON-formatted string.
isHotHot statusstringfalseWhether the content is marked as hot, saved as the source string.
keywordMatched keywordstring英雄联盟Search keyword associated with this result.
musicMusic informationstring{"audition_duration":"78","author":"呼叫网管","owner_id":"109014805831","owner_nickname":"呼叫网管","id":"6760527209229798151","title":"@呼叫网管创作的原声"}Music details saved as a JSON-formatted string.
ocrTextOn-screen textstring—Text recognized from the content's visual frames when available.
poiInfoPlace informationstring—Raw place information associated with the content.
publishLocationPublish locationstring{}Publishing location saved as a JSON-formatted string.
publishTimePublish timestring2019-11-18T17:18:59Content publication time; the source does not specify a time zone.
shareCountShare countstring8616.0Number of shares saved as a numeric string.
statusContent statusstring有效Current validity status reported for the content.
tagsTopic tagsstring["lol"]Topic tags saved as a JSON-formatted string.
taskMetaTask metadatastring—Keyword item and no-data marker associated with the result.
verifiedVerification statusstring—Publisher verification status as provided by the source.
verifyTypeVerification typestring—Publisher verification type as provided by the source.
videoDurationVideo durationstring78468.0Video duration saved as a numeric string; the source does not specify the unit.
videoUrlVideo media URLstringhttps://www.douyin.com/aweme/v1/play/?video_id=v0300fg10000dagho0nog65j2h6olpi0Media URL for the video content.
viewCountView countstring0.0Number of views saved as a numeric string.

Record schema

Output is returned record by record. detail.output.idFieldHint

output.schema
{
  "type": "object",
  "properties": {
    "accountId": {
      "type": "string",
      "title": "Account ID",
      "description": "Douyin identifier of the publishing account.",
      "prefill": "109014805831"
    },
    "accountName": {
      "type": "string",
      "title": "Account name",
      "description": "Display name of the publishing account.",
      "prefill": "呼叫网管"
    },
    "accountSecId": {
      "type": "string",
      "title": "Account secure ID",
      "description": "Encrypted Douyin identifier of the publishing account.",
      "prefill": "MS4wLjABAAAAAtnCpevF0YXW29cXbyJmXnSyq6qZL-PdV2x8Cl6PQpw"
    },
    "accountShortId": {
      "type": "string",
      "title": "Account short ID",
      "description": "Short identifier shown for the publishing account when available."
    },
    "accountUniqueId": {
      "type": "string",
      "title": "Douyin handle",
      "description": "Unique public handle of the publishing account.",
      "prefill": "HJWG"
    },
    "accountUrl": {
      "type": "string",
      "title": "Account URL",
      "description": "Public Douyin profile URL of the publishing account.",
      "prefill": "https://www.douyin.com/user/MS4wLjABAAAAAtnCpevF0YXW29cXbyJmXnSyq6qZL-PdV2x8Cl6PQpw"
    },
    "accurateLocationCities": {
      "type": "string",
      "title": "Matched cities",
      "description": "City-level location information associated with the content, as provided by the source."
    },
    "accurateLocationProvinces": {
      "type": "string",
      "title": "Matched provinces",
      "description": "Province-level location information associated with the content, as provided by the source."
    },
    "anchorInfo": {
      "type": "string",
      "title": "Anchor information",
      "description": "Raw anchor information attached to the content."
    },
    "asrText": {
      "type": "string",
      "title": "Speech transcript",
      "description": "Text recognized from the video's audio when available."
    },
    "avatarUrl": {
      "type": "string",
      "title": "Avatar URL",
      "description": "Image URL for the publishing account's avatar.",
      "prefill": "https://p11.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-avt-0015_5c0c342a89f6ce58ccd71b497a37a53e.heic?from=327834062"
    },
    "bizId": {
      "type": "string",
      "title": "Business ID",
      "description": "Business identifier associated with the result record.",
      "prefill": "英雄联盟"
    },
    "collectionCount": {
      "type": "string",
      "title": "Favorite count",
      "description": "Number of favorites saved as a numeric string.",
      "prefill": "3196.0"
    },
    "commentCount": {
      "type": "string",
      "title": "Comment count",
      "description": "Number of comments saved as a numeric string.",
      "prefill": "5446.0"
    },
    "contentId": {
      "type": "string",
      "title": "Content ID",
      "description": "Unique identifier of the Douyin content.",
      "prefill": "6760573437619473671"
    },
    "contentText": {
      "type": "string",
      "title": "Content text",
      "description": "Main text of the content when available."
    },
    "contentTitle": {
      "type": "string",
      "title": "Content title",
      "description": "Display title or caption of the content.",
      "prefill": "lol最逆天的彩蛋!揭晓! #lol"
    },
    "contentUrl": {
      "type": "string",
      "title": "Content URL",
      "description": "Public Douyin page URL for the content.",
      "prefill": "https://www.douyin.com/video/6760573437619473671"
    },
    "cooperationInfos": {
      "type": "string",
      "title": "Cooperation information",
      "description": "Cooperation details saved as a JSON-formatted string.",
      "prefill": "[]"
    },
    "coverUrl": {
      "type": "string",
      "title": "Cover URL",
      "description": "Image URL for the content cover.",
      "prefill": "https://p95-sz-sign.douyinpic.com/tos-cn-p-0015/53734fedbaec4ad3968a06c6cb295e7e~tplv-dy-resize-walign-adapt-aq:540:q75.heic"
    },
    "crawlTime": {
      "type": "string",
      "title": "Collection time",
      "description": "Time when the record was collected; the source does not specify a time zone.",
      "prefill": "2026-09-09T16:39:38"
    },
    "diggCount": {
      "type": "string",
      "title": "Like count",
      "description": "Number of likes saved as a numeric string.",
      "prefill": "547844.0"
    },
    "downloadCount": {
      "type": "string",
      "title": "Download count",
      "description": "Number of downloads saved as a numeric string.",
      "prefill": "8463.0"
    },
    "fans": {
      "type": "string",
      "title": "Follower count",
      "description": "Publisher follower count saved as a numeric string.",
      "prefill": "12170016"
    },
    "forwardCount": {
      "type": "string",
      "title": "Forward count",
      "description": "Number of forwards saved as a numeric string.",
      "prefill": "20.0"
    },
    "imageUrlList": {
      "type": "string",
      "title": "Image URL list",
      "description": "Content image URLs saved as a JSON-formatted string.",
      "prefill": "[]"
    },
    "isHot": {
      "type": "string",
      "title": "Hot status",
      "description": "Whether the content is marked as hot, saved as the source string.",
      "prefill": "false"
    },
    "keyword": {
      "type": "string",
      "title": "Matched keyword",
      "description": "Search keyword associated with this result.",
      "prefill": "英雄联盟"
    },
    "music": {
      "type": "string",
      "title": "Music information",
      "description": "Music details saved as a JSON-formatted string.",
      "prefill": "{\"audition_duration\":\"78\",\"author\":\"呼叫网管\",\"owner_id\":\"109014805831\",\"owner_nickname\":\"呼叫网管\",\"id\":\"6760527209229798151\",\"title\":\"@呼叫网管创作的原声\"}"
    },
    "ocrText": {
      "type": "string",
      "title": "On-screen text",
      "description": "Text recognized from the content's visual frames when available."
    },
    "poiInfo": {
      "type": "string",
      "title": "Place information",
      "description": "Raw place information associated with the content."
    },
    "publishLocation": {
      "type": "string",
      "title": "Publish location",
      "description": "Publishing location saved as a JSON-formatted string.",
      "prefill": "{}"
    },
    "publishTime": {
      "type": "string",
      "title": "Publish time",
      "description": "Content publication time; the source does not specify a time zone.",
      "prefill": "2019-11-18T17:18:59"
    },
    "shareCount": {
      "type": "string",
      "title": "Share count",
      "description": "Number of shares saved as a numeric string.",
      "prefill": "8616.0"
    },
    "status": {
      "type": "string",
      "title": "Content status",
      "description": "Current validity status reported for the content.",
      "prefill": "有效"
    },
    "tags": {
      "type": "string",
      "title": "Topic tags",
      "description": "Topic tags saved as a JSON-formatted string.",
      "prefill": "[\"lol\"]"
    },
    "taskMeta": {
      "type": "string",
      "title": "Task metadata",
      "description": "Keyword item and no-data marker associated with the result."
    },
    "verified": {
      "type": "string",
      "title": "Verification status",
      "description": "Publisher verification status as provided by the source."
    },
    "verifyType": {
      "type": "string",
      "title": "Verification type",
      "description": "Publisher verification type as provided by the source."
    },
    "videoDuration": {
      "type": "string",
      "title": "Video duration",
      "description": "Video duration saved as a numeric string; the source does not specify the unit.",
      "prefill": "78468.0"
    },
    "videoUrl": {
      "type": "string",
      "title": "Video media URL",
      "description": "Media URL for the video content.",
      "prefill": "https://www.douyin.com/aweme/v1/play/?video_id=v0300fg10000dagho0nog65j2h6olpi0"
    },
    "viewCount": {
      "type": "string",
      "title": "View count",
      "description": "Number of views saved as a numeric string.",
      "prefill": "0.0"
    }
  },
  "required": [],
  "additionalProperties": false
}

Integration

This App can be integrated via MCP, API, SDK, or file export. All channels share the same capabilities and pricing. Every request authenticates with the Authorization: Bearer header using an API key (long-lived, created in the Data Hub Console); MCP clients can also sign in with OAuth, no key required. More options such as CLI and Skill are on the way.

With the MCP (Model Context Protocol), you can call this App directly from AI clients like Claude and Cursor. Pick your client and auth mode, then copy the config below.

Client config

Replace the value after Bearer with your long-lived API key. Works in any client, CI, or headless environment.

mcpServers config
{
  "mcpServers": {
    "meme_today__douyin-keyword-list": {
      "type": "http",
      "url": "https://mcp-v2.octoparse.com?pin=meme_today/douyin-keyword-list",
      "headers": { "Authorization": "Bearer <YOUR_API_KEY>" }
    }
  }
}

Let AI set it up for you

Don't want to edit configs by hand? Copy the install prompt and paste it into any AI client. It will complete the setup its own way. (The prompt asks the AI to request your API key from you, so credentials never end up in chat history or shared configs.)

detail.access.mcp.composeHint

Pricing

Task start

Charged once per submitted run, regardless of how many records are returned.

$0.0001/ run
Returned Douyin records

Charged by the number of records successfully returned. Failed runs are not charged. Billed in units of 10 record; any partial unit is rounded up to 10 record.

$0.0015/ 10 record

Multiple billing events accumulate independently. See each item for details. Failed runs are not charged.

View credits

Try it now

Fill in the parameters and run. Results come from a real call.

Example
Parameters are validated against input.schema before submission
Please fill in the required parameters first
From $0.0015 / 10 record