Skip to content
Eden Engine

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 counts, 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.

activeper callv1
Provider
Web & Business Data Network
Category
douyin
Provider price
$0.020475 per call
Latency p50 / p95
— / —
Success rate
—
Verified
—

Provider list price; Omnial MCP charges provider cost plus a platform markup on top.

Contract

input_schema.json
{
  "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.json
{
  "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 on the nonsense-keyword fixture) 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."
                      },
                      "signature": {
                        "type": "string",
                        "description": "The creator's public profile bio; may be empty."
                      },
                      "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."
                      },
                      "following_count": {
                        "type": "number",
                        "description": "How many accounts the creator follows."
                      },
                      "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 on the Beijing-guide fixture had a POI (a temple, a roast-duck restaurant); on the nonsense-keyword fixture 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."
                  },
                  "ip_attribution": {
                    "type": "string",
                    "description": "The post's IP-location label (e.g. '北京' on the Beijing guide cards); absent on posts that do not publish one."
                  }
                },
                "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 on both fixtures."
        },
        "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 (5 on the Beijing fixture)."
        }
      },
      "description": "Page-level search configuration, including the cursor values to page on.",
      "additionalProperties": true
    }
  },
  "description": "The search page document, as returned at routing.responseResultPath ($.output). Composed of `business_config` (page-level pagination) and `business_data` (the result cards). Both real calibration fixtures produced a populated `business_data` array -- an empty or error-shaped variant was never observed.",
  "additionalProperties": true
}

Pricing

Every real charge, itemised. A model that quietly omits one is a slow financial leak, so nothing here is rolled up, and a charge that only applies to some inputs says so rather than being added in.

Prices in this catalog are the provider's own list price, not your bill: Omnial MCP charges provider cost plus a platform markup on top, so what you are charged is higher than the figure shown. For the exact amount a specific call will cost, run omnial_execute with dry_run: true; that number includes the markup and is what we hold while the call runs. It is a quote, not a cap on the charge.

ChargeRate
Per call
Flat, regardless of what comes back
$0.020475
Cost basis
Not recorded

This tool's catalog entry does not record how its final bill is determined, so we will not tell you whether its cost is fixed before the call or reported by the provider afterwards. Either way what is held is a quote rather than a cap: you are charged what the call actually costs, bounded at 2x the quote.

Updated
Sep 25, 2026