Douyin Experience Search (by Keyword)
omnial/douyin-search-fetch-experience-search
Given a keyword, returns Douyin's search-result cards: each post's caption and publish time, its creator's public profile and follower count, engagement counters (likes/comments/shares/collects), media metadata, soundtrack, and any attached place (a POI with name, coordinates, and address), plus the page's hashtags and the next-page cursor for paging. A keyword with no matching content still returns cards (Douyin's own suggested posts) rather than an empty result.
Price
Up to $0.0205 per call; you pay what the call used
You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $5.00.
Data source
Data from Douyin.
Use it
Your AI assistant does the work: it finds this tool, shows you the price first, runs it, and you are charged when the run finishes. There is nothing to set up for this tool in particular.
Connect once and your AI can find and run this tool, and any other it needs.
For developers: the calls your assistant makes
// 1. search: find the tool
omnial_search({ query: "what you need" })
// 2. inspect: price and input schema
omnial_inspect({ tool: "omnial/douyin-search-fetch-experience-search" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "omnial/douyin-search-fetch-experience-search" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/douyin-search-fetch-experience-search", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/douyin-search-fetch-experience-search", input: { /* ... */ } })
// 5. settle: the call is charged when it finishes, nothing to doNot connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.
Pricing
Every charge this tool can incur.
| Charge | Price |
|---|---|
Per call | $0.0205 |
- Updated
- Oct 27, 2026
Input and output schemas
Input schema
{
"type": "object",
"required": [
"keyword"
],
"properties": {
"cursor": {
"type": "integer",
"default": 0,
"description": "Offset cursor for paginating to the next page; take it from the previous page's response."
},
"keyword": {
"type": "string",
"description": "The keyword to find experience content for, e.g. a city, dish, place, or activity. Required."
},
"backtrace": {
"type": "string",
"default": "",
"description": "Pagination backtrace token from the previous page's response."
},
"search_id": {
"type": "string",
"default": "",
"description": "Search id for paginating; take it from the previous page's response."
},
"sort_type": {
"type": "string",
"default": "0",
"description": "Sort order: 0=comprehensive, 1=most likes, 2=latest. Defaults to comprehensive."
},
"content_type": {
"type": "string",
"default": "0",
"description": "Content-type filter: 0=all, 1=video, 2=images, 3=articles. Defaults to all."
},
"publish_time": {
"type": "string",
"default": "0",
"description": "Publish-date filter: 0=any, 1=last day, 7=last week, 180=last half year. Defaults to any."
},
"filter_duration": {
"type": "string",
"default": "0",
"description": "Video-length filter: 0=any, 0-1=under a minute, 1-5=one to five minutes, 5-10000=over five minutes. Defaults to any."
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"properties": {
"business_data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"doc_type": {
"type": "number",
"description": "Numeric card type: 303 on the image cards and 153 on the video cards observed -- the card_id string is the more readable discriminator."
},
"aweme_info": {
"type": "object",
"properties": {
"desc": {
"type": "string",
"description": "The post's caption text, often with hashtags and line breaks (observed, e.g., with a full Beijing temple guide)."
},
"music": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "The track's title."
},
"id_str": {
"type": "string",
"description": "The music's numeric id."
},
"duration": {
"type": "number",
"description": "Track length in seconds."
},
"cover_large": {
"type": "object",
"properties": {
"url_list": {
"type": [
"array",
"null"
],
"items": {},
"description": "Always nulled in this tool's output."
}
},
"description": "The music's cover image; its URL values are withheld.",
"additionalProperties": true
},
"owner_nickname": {
"type": "string",
"description": "The soundtrack's creator's public display name (observed as the singer's handle text on one card and as a numeric-string handle on another)."
}
},
"description": "The soundtrack attached to the post, when it has one -- absent on posts without music metadata.",
"additionalProperties": true
},
"video": {
"type": "object",
"properties": {
"cover": {
"type": "object",
"properties": {
"url_list": {
"type": [
"array",
"null"
],
"items": {},
"description": "Always nulled in this tool's output."
}
},
"description": "The video's cover image; its URL values are withheld.",
"additionalProperties": true
},
"ratio": {
"type": "string",
"description": "Aspect-ratio label, observed as 'default'."
},
"width": {
"type": "number",
"description": "Pixel width."
},
"height": {
"type": "number",
"description": "Pixel height."
},
"duration": {
"type": "number",
"description": "Seconds; 0 on non-video cards."
},
"play_addr": {
"type": "object",
"properties": {
"url_list": {
"type": [
"array",
"null"
],
"items": {},
"description": "Always nulled in this tool's output."
}
},
"description": "The playable video's URL info; the URL values are withheld.",
"additionalProperties": true
}
},
"description": "Video metadata. Present on video cards with real durations (105s, 188s, 199s for a nonsense-keyword query) and present with duration 0 on the image cards observed.",
"additionalProperties": true
},
"author": {
"type": "object",
"properties": {
"uid": {
"type": "string",
"description": "The creator's numeric Douyin user id."
},
"sec_uid": {
"type": "string",
"description": "The creator's secure public user id."
},
"nickname": {
"type": "string",
"description": "The creator's public display name (e.g. an observed '北京胡同烤鸭店(前门店)官方号')."
},
"short_id": {
"type": "string",
"description": "The creator's short public id."
},
"aweme_count": {
"type": "number",
"description": "How many posts the creator has published."
},
"is_verified": {
"type": "boolean",
"description": "Whether the account shows a verification badge (true on all Beijing-guide creators observed)."
},
"avatar_larger": {
"type": "object",
"properties": {
"url_list": {
"type": [
"array",
"null"
],
"items": {},
"description": "Always nulled in this tool's output -- the avatar's URL values are withheld, only the field's presence is observable."
}
},
"description": "The creator's larger avatar image; its URL values are withheld.",
"additionalProperties": true
},
"custom_verify": {
"type": "string",
"description": "The account's verification label (e.g. a certified channel title); empty on the unverified creators observed."
},
"follower_count": {
"type": "number",
"description": "The creator's follower count."
},
"total_favorited": {
"type": "number",
"description": "Total likes the creator has received across posts."
}
},
"description": "The creator who published this post -- the queried result's own public profile, not a third party riding along.",
"additionalProperties": true
},
"images": {
"type": "array",
"items": {
"type": "object",
"properties": {
"width": {
"type": "number",
"description": "Pixel width."
},
"height": {
"type": "number",
"description": "Pixel height."
},
"url_list": {
"type": [
"array",
"null"
],
"items": {},
"description": "Always nulled in this tool's output."
}
},
"additionalProperties": true
},
"description": "One entry per image when the post is an image post (the Beijing-guide cards each carried several); absent on cards that are not image posts. The per-image URL values are withheld."
},
"aweme_id": {
"type": "string",
"description": "The post's id."
},
"cha_list": {
"type": "array",
"items": {
"type": "object",
"properties": {
"cid": {
"type": "string",
"description": "The hashtag's id."
},
"cha_name": {
"type": "string",
"description": "The hashtag's public name."
},
"user_count": {
"type": "number",
"description": "How many posts use the hashtag."
},
"view_count": {
"type": "number",
"description": "Hashtag viewership; observed as 0 on many hashtags."
}
},
"additionalProperties": true
},
"description": "The hashtags/challenges attached to the post (e.g. the '佛造像' hashtag observed on a temple post); absent on posts without hashtag cards."
},
"poi_info": {
"type": "object",
"properties": {
"poi_id": {
"type": "string",
"description": "The place's id."
},
"poi_name": {
"type": "string",
"description": "The place's public name (e.g. an observed '北京超化寺')."
},
"address_info": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City, e.g. '北京市'."
},
"address": {
"type": "string",
"description": "The street-level address (e.g. an observed '前门煤市街排子胡同17号')."
},
"district": {
"type": "string",
"description": "District, e.g. '房山区'."
},
"province": {
"type": "string",
"description": "Province, e.g. '北京市'."
},
"simple_addr": {
"type": "string",
"description": "A compact form of the address."
}
},
"description": "The place's own published public address.",
"additionalProperties": true
},
"poi_latitude": {
"type": "number",
"description": "WGS84 latitude."
},
"poi_longitude": {
"type": "number",
"description": "WGS84 longitude."
}
},
"description": "The place this post is attached to, when it has one -- every card for a Beijing-guide query had a POI (a temple, a roast-duck restaurant); for a nonsense-keyword query five of six cards had none, and the sixth carried a single school POI. Present only on cards that are place-attached.",
"additionalProperties": true
},
"aweme_type": {
"type": "number",
"description": "Numeric post-type code -- 68 on both image and video cards observed."
},
"statistics": {
"type": "object",
"properties": {
"digg_count": {
"type": "number",
"description": "Like count."
},
"play_count": {
"type": "number",
"description": "View count, but observed as 0 even on posts with thousands of likes -- do not trust it to rank or compare posts."
},
"share_count": {
"type": "number",
"description": "Share count."
},
"collect_count": {
"type": "number",
"description": "Save/bookmark (collect) count."
},
"comment_count": {
"type": "number",
"description": "Comment count."
},
"forward_count": {
"type": "number",
"description": "Forward/reshare count."
}
},
"description": "Public engagement counters for the post.",
"additionalProperties": true
},
"create_time": {
"type": "number",
"description": "Unix seconds the post was published."
}
},
"description": "The post this card represents.",
"additionalProperties": true
}
},
"description": "The card's payload.",
"additionalProperties": true
},
"type": {
"type": "number"
},
"card_id": {
"type": "string",
"description": "The card's type tag: 'douyin.doctype_aweme_image' on all five Beijing- guide cards and 'douyin.doctype_aweme_video' on all of the nonsense-keyword cards observed."
},
"data_id": {
"type": "string",
"description": "The card's own id."
}
},
"description": "A single search result card. Cards of different content types (image posts vs video posts) share this shape.",
"additionalProperties": true
},
"description": "One entry per search result card, in ranking order."
},
"business_config": {
"type": "object",
"properties": {
"keyword": {
"type": "string",
"description": "The keyword this page of results was returned for."
},
"has_more": {
"type": "number",
"description": "1 when another page of results is available, 0 on the last page. Observed as 1 in testing."
},
"next_page": {
"type": "object",
"properties": {
"cursor": {
"type": "number",
"description": "The pagination cursor for the next page."
},
"search_id": {
"type": "string",
"description": "The search session id to repeat on the next call."
},
"search_request_id": {
"type": "string",
"description": "The search request id to repeat on the next call."
}
},
"description": "Values to feed this tool's own next call (cursor, search_id, search_request_id) to fetch the next page.",
"additionalProperties": true
},
"card_count": {
"type": "number",
"description": "Number of result cards on this page (e.g. 5 for a Beijing travel-guide query)."
}
},
"description": "Page-level search configuration, including the cursor values to page on.",
"additionalProperties": true
}
},
"description": "The search page document. Composed of `business_config` (page-level pagination) and `business_data` (the result cards). In testing every query produced a populated `business_data` array -- an empty or error-shaped variant has not been observed.",
"additionalProperties": true
}