Skip to content
Eden Engine

Douyin Hashtag & Challenge Search (by Keyword)

omnial/douyin-search-fetch-challenge-search

Given a search keyword, returns matching Douyin hashtags/challenges: each one's name, description, total post count, total view count, and status flags, plus a lightweight linked-media match (e.g. a show or film the platform associates with the hashtag) when one exists. Supports sort order, content-type, publish-time, and duration filters, and paginates via a returned cursor.

activeper callv3

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

Douyin

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
agent
// 1. search: find the tool
omnial_search({ query: "what you need" })

// 2. inspect: price and input schema
omnial_inspect({ tool: "omnial/douyin-search-fetch-challenge-search" })

// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "omnial/douyin-search-fetch-challenge-search" })

// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/douyin-search-fetch-challenge-search", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/douyin-search-fetch-challenge-search", input: { /* ... */ } })

// 5. settle: the call is charged when it finishes, nothing to do

Not 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.

ChargePrice
Per call
$0.0205
Updated
Oct 27, 2026

Input and output schemas

Input schema
input_schema.json
{
  "type": "object",
  "required": [
    "keyword"
  ],
  "properties": {
    "cursor": {
      "type": "integer",
      "default": 0,
      "description": "偏移游标,用于翻页,从上一次请求返回的响应中获取 / Offset cursor for pagination, obtained from the last response"
    },
    "keyword": {
      "type": "string",
      "description": "关键词 / Keyword"
    },
    "backtrace": {
      "type": "string",
      "default": "",
      "description": "翻页回溯标识,用于翻页,从上一次请求返回的响应中获取 / Backtrace for pagination, obtained from the last response"
    },
    "search_id": {
      "type": "string",
      "default": "",
      "description": "搜索ID,用于翻页,从上一次请求返回的响应中获取 / Search ID for pagination, obtained from the last response"
    },
    "sort_type": {
      "type": "string",
      "default": "0",
      "description": "排序方式:0=综合排序 1=最多点赞 2=最新发布 / Sort type: 0=Comprehensive, 1=Most Likes, 2=Latest"
    },
    "content_type": {
      "type": "string",
      "default": "0",
      "description": "内容类型:0=不限 1=视频 2=图片 3=文章 / Content type: 0=All, 1=Video, 2=Picture, 3=Article"
    },
    "publish_time": {
      "type": "string",
      "default": "0",
      "description": "发布时间筛选:0=不限 1=最近一天 7=最近一周 180=最近半年 / Publish time filter: 0=Unlimited, 1=Last day, 7=Last week, 180=Last half year"
    },
    "filter_duration": {
      "type": "string",
      "default": "0",
      "description": "视频时长过滤:0=不限 0-1=一分钟以内 1-5=一到五分钟 5-10000=五分钟以上 / Video duration filter: 0=Unlimited, 0-1=Within 1 minute, 1-5=1 to 5 minutes, 5-10000=More than 5 minutes"
    }
  },
  "additionalProperties": false
}
Output schema
output_schema.json
{
  "type": "object",
  "properties": {
    "cursor": {
      "type": "number",
      "description": "Pass back as `cursor` to fetch the next page."
    },
    "has_more": {
      "type": "number",
      "description": "1 when more results remain for this keyword/filter combination, else 0."
    },
    "is_match": {
      "type": "boolean",
      "description": "Whether the search keyword had an exact hashtag match, observed false in testing."
    },
    "status_code": {
      "type": "number",
      "description": "0 on a normal, successful search."
    },
    "challenge_list": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "challenge_info": {
            "type": "object",
            "properties": {
              "cid": {
                "type": "string",
                "description": "The hashtag's numeric id, as a string."
              },
              "tag": {
                "type": "number",
                "description": "Additional tag classification code, 0 on every hashtag observed."
              },
              "desc": {
                "type": "string",
                "description": "The hashtag's own description. Empty string on every hashtag observed."
              },
              "type": {
                "type": "number",
                "description": "Hashtag type code, e.g. 0 or 1 on the hashtags observed."
              },
              "cha_name": {
                "type": "string",
                "description": "The hashtag's display text (without the # sign)."
              },
              "sub_type": {
                "type": "number",
                "description": "Hashtag sub-type code, 0 on every hashtag observed."
              },
              "extra_attr": {
                "type": "object",
                "properties": {
                  "is_live": {
                    "type": "boolean",
                    "description": "Whether a live stream is currently associated with this hashtag."
                  }
                },
                "additionalProperties": true
              },
              "is_pgcshow": {
                "type": "boolean",
                "description": "Whether this hashtag is tied to professionally-produced show content."
              },
              "share_info": {
                "type": "object",
                "properties": {
                  "share_url": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "The hashtag's own public share link. Value withheld (stripped to `null`) in this tool's output -- only whether the field is populated is observable, not the link itself."
                  },
                  "share_desc": {
                    "type": "string"
                  },
                  "share_quote": {
                    "type": "string"
                  },
                  "share_title": {
                    "type": "string"
                  },
                  "bool_persist": {
                    "type": "number"
                  },
                  "share_desc_info": {
                    "type": "string"
                  },
                  "share_weibo_desc": {
                    "type": "string"
                  },
                  "share_title_other": {
                    "type": "string"
                  },
                  "share_title_myself": {
                    "type": "string"
                  },
                  "share_signature_url": {
                    "type": "string",
                    "description": "Empty string on every hashtag observed."
                  },
                  "share_signature_desc": {
                    "type": "string"
                  }
                },
                "description": "Pre-built public share captions for this hashtag.",
                "additionalProperties": true
              },
              "user_count": {
                "type": "number",
                "description": "Total number of posts tagged with this hashtag."
              },
              "view_count": {
                "type": "number",
                "description": "Total view count across all posts tagged with this hashtag."
              },
              "is_commerce": {
                "type": "boolean",
                "description": "Whether this hashtag is tied to commerce/shopping features."
              },
              "collect_stat": {
                "type": "number",
                "description": "A bookmark/collect counter, 0 on every hashtag observed."
              },
              "is_challenge": {
                "type": "number",
                "description": "1 when this is a formal branded challenge, 0 for a plain hashtag."
              },
              "publish_type": {
                "type": "number",
                "description": "Publishing permission code for this hashtag, 1 on every hashtag observed."
              },
              "connect_music": {
                "type": "array",
                "items": {},
                "description": "Music tracks associated with this hashtag. Usually empty; item shape not documented."
              },
              "vertical_type": {
                "type": "number",
                "description": "Vertical/category code for the hashtag's associated content. Rarely present -- only one of dozens of hashtags in testing carried it."
              },
              "hashtag_profile": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The hashtag's own cover image URL. Value withheld (stripped to `null`) in this tool's output -- only whether the field is populated is observable, not the image itself."
              },
              "challenge_status": {
                "type": "number",
                "description": "1 (active) on every hashtag observed."
              },
              "related_media_source": {
                "type": "object",
                "properties": {
                  "cover": {
                    "type": "object",
                    "properties": {
                      "url_list": {
                        "type": "array",
                        "items": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "description": "The linked media's cover image URLs. Values withheld (stripped to `null`) in this tool's output -- only whether the field is populated is observable, not the images themselves."
                      }
                    },
                    "additionalProperties": true
                  },
                  "title": {
                    "type": "string"
                  },
                  "rating": {
                    "type": "number"
                  },
                  "duration": {
                    "type": "number"
                  },
                  "media_tag": {
                    "type": "string",
                    "description": "Empty string on the one instance observed."
                  },
                  "compass_id": {
                    "type": "number",
                    "description": "The linked media's own internal id."
                  },
                  "media_name": {
                    "type": "string"
                  },
                  "media_type": {
                    "type": "number"
                  },
                  "seqs_count": {
                    "type": "number",
                    "description": "Number of episodes/segments."
                  },
                  "release_date": {
                    "type": "string"
                  },
                  "rating_status": {
                    "type": "number"
                  },
                  "classification": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Genre labels, e.g. [\"动画\", \"青春\"] on the one instance observed."
                  }
                },
                "description": "A linked show/film the platform associates with this hashtag, when one exists -- observed on only one of dozens of hashtags in testing.",
                "additionalProperties": true
              }
            },
            "description": "The hashtag/challenge's own detail record.",
            "additionalProperties": true
          }
        },
        "additionalProperties": true
      },
      "description": "One entry per matched hashtag/challenge."
    },
    "keyword_disabled": {
      "type": "number",
      "description": "1 when the platform has disabled/blocked this keyword, else 0."
    }
  },
  "description": "The hashtag/challenge search result.",
  "additionalProperties": true
}