
Market data for AI agents: Douyin, Xiaohongshu, TikTok, WeChat, X and 15 more. Pay per call.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Your DataXAPI API key as a bearer token (make one at https://dataxapi.com/console/keys/). Not needed by clients that sign in by OAuth; find and describe work without it.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
balance: the balance, this key's budget and spending. receipt: what one call was charged, by its result ID. usage: calls and charges by day or capability. status: which capabilities are up (no key). Free.
usage: from this time, ISO 8601; 30 days back when left out
usage: up to this time
usage: day, capability, key_id, entry, source, end_user; commas between several
receipt: the result ID
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http mcp https://api.dataxapi.com/mcp
Headers
Authorization (optional, not in the config above): Your DataXAPI API key as a bearer token (make one at https://dataxapi.com/console/keys/). Not needed by clients that sign in by OAuth; find and describe work without it.balance: the balance, this key's budget and spending. receipt: what one call was charged, by its result ID. usage: calls and charges by day or capability. status: which capabilities are up (no key). Free.
| Argument | Type | Description |
|---|---|---|
| what* | string | |
| since | string | usage: from this time, ISO 8601; 30 days back when left out |
| until | string | usage: up to this time |
| group_by | string | usage: day, capability, key_id, entry, source, end_user; commas between several |
| request_id | string | receipt: the result ID |
{
"type": "object",
"required": [
"what"
],
"properties": {
"what": {
"enum": [
"balance",
"receipt",
"usage",
"status"
],
"type": "string"
},
"since": {
"type": "string",
"description": "usage: from this time, ISO 8601; 30 days back when left out"
},
"until": {
"type": "string",
"description": "usage: up to this time"
},
"group_by": {
"type": "string",
"description": "usage: day, capability, key_id, entry, source, end_user; commas between several"
},
"request_id": {
"type": "string",
"description": "receipt: the result ID"
}
},
"additionalProperties": false
}Fetch one page of data from one capability. Charged per call or per item, as `describe` says; an error costs nothing. IDs read platform.resource.action; give only the parameters that capability takes. The first line of the result says how many items, the charge, the balance, and how to get the next page (`cursor`: a new charged call) or the rest of a result cut to about 20 KB (`read_more`: free). Needs an API key.
| Argument | Type | Description |
|---|---|---|
| id | string | ID of the first resource in the path |
| ids | array | Several IDs in one request |
| tab | string | Tab as shown on the platform |
| url | string | Link to the object, instead of its ID |
| lang | string | Language code |
| sort | string | Sort order |
| type | string | Content format |
| view | string | How much of each item to return; compact when left out |
| board | string | Which board |
| brand | string |
The whole contract of 1 to 5 capabilities: parameters, fields returned in each view, paging, price and the most one call can cost, what it cannot give, example calls. Free, no key. Use it before `call` when unsure of the parameters.
| Argument | Type | Description |
|---|---|---|
| ids* | array | Capability IDs |
{
"type": "object",
"required": [
"ids"
],
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 5,
"minItems": 1,
"description": "Capability IDs"
}
},
"additionalProperties": false
}Find which capability returns the data you need, when its ID is not obvious from the `call` list. Say the need in plain words, English or Chinese. Returns up to 5, each with its required parameters, price and a ready-made call. Free, no key. When nothing matches on a named platform it lists everything that platform has: pick from it, or tell the user it is not there. Never use another platform's capability instead.
| Argument | Type | Description |
|---|---|---|
| query | string | e.g. "comments on a douyin video", "小红书笔记详情" |
| category | string | |
| platform | string | Only this platform, by ID or name; alone, lists all it has |
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "e.g. \"comments on a douyin video\", \"小红书笔记详情\""
},
"category": {
"enum": [
"ads",
"commerce",
"creator",
"social"
],
"type": "string"
},
"platform": {
"type": "string",
"description": "Only this platform, by ID or name; alone, lists all it has"
}
},
"additionalProperties": false
}Read the rest of a result that `call` cut to fit, or the same result in another view. Free: nothing is fetched again; results are kept 24 hours. Needs the API key that made the call.
| Argument | Type | Description |
|---|---|---|
| view | string | How much of each item to return; compact when left out |
| fields | array | Return only these fields |
| offset | integer | Where to go on, as printed; from the start when left out |
| result_id* | string | As `call` printed it |
{
"type": "object",
"required": [
"result_id"
],
"properties": {
"view": {
"enum": [
"compact",
"standard",
"full"
],
"type": "string",
"description": "How much of each item to return; compact when left out"
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Return only these fields"
},
"offset": {
"type": "integer",
"minimum": 0,
"description": "Where to go on, as printed; from the start when left out"
},
"result_id": {
"type": "string",
"description": "As `call` printed it"
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 3, 2026.
| Name of the brand asked about |
| limit | integer | Items per page |
| query | string | Search terms |
| since | string | Published at or after |
| until | string | Published at or before |
| cursor | string | Cursor returned by the previous page |
| fields | array | Return only these fields |
| region | string | Country or region code |
| window | string | Statistics period |
| include | array | Extra parts to return alongside |
| keyword | string | The keyword asked about |
| post_id | string | ID of the post it belongs to |
| keywords | array | Several terms in one request |
| username | string | Account handle, instead of its ID |
| export_id | string | A video's encrypted ID as a search result gives it, starting with export/; it expires |
| max_price | string | Refuse if the call could cost more US dollars than this: "0.01" |
| capability* | string |
| idempotency_key | string | Optional: left out, the server makes a new one. To be able to repeat a call whose answer you did not get, give a new unique value (a UUID) and send the same value again: that returns the first result, charged once. |
| published_within | string | Published within the last period |
{
"type": "object",
"required": [
"capability"
],
"properties": {
"id": {
"type": "string",
"description": "ID of the first resource in the path"
},
"ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Several IDs in one request"
},
"tab": {
"type": "string",
"description": "Tab as shown on the platform"
},
"url": {
"type": "string",
"description": "Link to the object, instead of its ID"
},
"lang": {
"type": "string",
"description": "Language code"
},
"sort": {
"type": "string",
"description": "Sort order"
},
"type": {
"type": "string",
"description": "Content format"
},
"view": {
"enum": [
"compact",
"standard",
"full"
],
"type": "string",
"description": "How much of each item to return; compact when left out"
},
"board": {
"type": "string",
"description": "Which board"
},
"brand": {
"type": "string",
"description": "Name of the brand asked about"
},
"limit": {
"type": "integer",
"description": "Items per page"
},
"query": {
"type": "string",
"description": "Search terms"
},
"since": {
"type": "string",
"description": "Published at or after"
},
"until": {
"type": "string",
"description": "Published at or before"
},
"cursor": {
"type": "string",
"description": "Cursor returned by the previous page"
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Return only these fields"
},
"region": {
"type": "string",
"description": "Country or region code"
},
"window": {
"type": "string",
"description": "Statistics period"
},
"include": {
"type": "array",
"items": {
"type": "string"
},
"description": "Extra parts to return alongside"
},
"keyword": {
"type": "string",
"description": "The keyword asked about"
},
"post_id": {
"type": "string",
"description": "ID of the post it belongs to"
},
"keywords": {
"type": "array",
"items": {
"type": "string"
},
"description": "Several terms in one request"
},
"username": {
"type": "string",
"description": "Account handle, instead of its ID"
},
"export_id": {
"type": "string",
"description": "A video's encrypted ID as a search result gives it, starting with export/; it expires"
},
"max_price": {
"type": "string",
"description": "Refuse if the call could cost more US dollars than this: \"0.01\""
},
"capability": {
"enum": [
"douyin.comments.replies.list",
"douyin.hashtags.videos.list",
"bilibili.comments.replies.list",
"bilibili.trends.list",
"bilibili.users.get",
"bilibili.users.videos.list",
"bilibili.videos.comments.list",
"bilibili.videos.get",
"bilibili.videos.search",
"bilibili.videos.trending",
"douyin.index.brands.history",
"douyin.index.brands.metrics",
"douyin.index.creators.videos.list",
"douyin.index.creators.audience.get",
"douyin.index.creators.metrics",
"douyin.index.keywords.audience.get",
"douyin.index.keywords.history",
"douyin.index.keywords.related",
"douyin.index.trends.list",
"douyin.index.videos.search",
"douyin.trends.list",
"douyin.users.get",
"douyin.users.history",
"douyin.users.search",
"douyin.users.videos.list",
"douyin.videos.comments.list",
"douyin.videos.get",
"douyin.videos.metrics",
"douyin.videos.related",
"douyin.videos.search",
"douyin.videos.trending",
"douyin.xingtu.creators.rates.get",
"kuaishou.comments.replies.list",
"kuaishou.trends.list",
"kuaishou.users.get",
"kuaishou.users.search",
"kuaishou.users.videos.list",
"kuaishou.videos.comments.list",
"kuaishou.videos.get",
"kuaishou.videos.search",
"telegram.channels.get",
"telegram.channels.messages.list",
"telegram.messages.get",
"x.communities.posts.list",
"x.lists.posts.list",
"x.posts.article.get",
"x.posts.get",
"facebook.pages.get",
"facebook.pages.posts.list",
"facebook.posts.comments.list",
"facebook.posts.get",
"google.ads.get",
"google.advertisers.ads.list",
"google.advertisers.search",
"linkedin.ads.get",
"linkedin.ads.search",
"linkedin.companies.get",
"linkedin.companies.posts.list",
"linkedin.posts.get",
"linkedin.posts.search",
"meta.ads.get",
"meta.ads.search",
"meta.ads.transcript.get",
"meta.advertisers.ads.list",
"meta.advertisers.search",
"threads.posts.get",
"threads.posts.search",
"threads.users.get",
"threads.users.posts.list",
"instagram.comments.replies.list",
"instagram.hashtags.posts.list",
"instagram.posts.comments.list",
"instagram.posts.get",
"instagram.posts.transcript.get",
"instagram.users.get",
"instagram.users.posts.list",
"instagram.users.search",
"tiktok.ads.search",
"tiktok.ads.get",
"tiktok.comments.replies.list",
"tiktok.creative_center.ads.get",
"tiktok.creative_center.ads.search",
"tiktok.hashtags.videos.list",
"tiktok.users.get",
"tiktok.users.search",
"tiktok.users.videos.list",
"tiktok.videos.comments.list",
"tiktok.videos.get",
"tiktok.videos.search",
"tiktok.videos.transcript.get",
"weibo.comments.replies.list",
"weibo.posts.comments.list",
"weibo.posts.get",
"weibo.posts.likers.list",
"weibo.posts.search",
"weibo.trends.list",
"weibo.users.followers.list",
"weibo.users.get",
"weibo.users.posts.list",
"weibo.users.search",
"x.posts.quotes.list",
"x.posts.replies.list",
"x.posts.retweeters.list",
"x.posts.search",
"x.threads.posts.list",
"x.trends.list",
"x.users.followers.list",
"x.users.following.list",
"x.users.get",
"x.users.mentions.list",
"x.users.posts.list",
"x.users.search",
"xiaohongshu.images.search",
"xiaohongshu.notes.get",
"xiaohongshu.comments.replies.list",
"xiaohongshu.notes.comments.list",
"xiaohongshu.notes.search",
"xiaohongshu.pgy.keywords.history",
"xiaohongshu.pgy.keywords.related",
"xiaohongshu.topics.notes.list",
"xiaohongshu.topics.get",
"xiaohongshu.trends.list",
"xiaohongshu.users.get",
"xiaohongshu.users.notes.list",
"xiaohongshu.users.search",
"youtube.channels.get",
"youtube.channels.search",
"youtube.channels.videos.list",
"youtube.comments.replies.list",
"youtube.videos.comments.list",
"youtube.videos.get",
"youtube.videos.search",
"youtube.videos.transcript.get",
"wechat_channels.users.get",
"wechat_channels.videos.get",
"wechat_channels.videos.comments.list",
"wechat_channels.videos.share_link.get",
"wechat_channels.users.collections.list",
"wechat_channels.collections.videos.list",
"wechat_channels.users.videos.list",
"wechat_channels.videos.search",
"wechat.posts.search",
"wechat_mp.accounts.articles.list",
"wechat_mp.accounts.get",
"wechat_mp.articles.comments.list",
"wechat_mp.articles.get",
"wechat_mp.articles.metrics",
"wechat_mp.comments.replies.list",
"wechat_channels.backup.users.get",
"wechat_channels.backup.users.videos.list",
"wechat.backup.posts.search",
"wechat.accounts.search",
"wechat_channels.backup.videos.search",
"wechat_mp.accounts.search",
"wechat_mp.accounts.owner.get",
"wechat.index.keywords.history",
"wechat.keywords.related",
"wechat.miniprograms.search",
"wechat_channels.users.search",
"wechat_channels.videos.metrics",
"wechat_channels.comments.replies.list",
"wechat_channels.users.live_replays.list",
"reddit.posts.comments.list",
"reddit.posts.get",
"reddit.posts.search",
"reddit.posts.trending",
"reddit.subreddits.posts.list",
"reddit.trends.list",
"reddit.users.get",
"reddit.users.posts.list",
"zhihu.answers.comments.list",
"zhihu.answers.get",
"zhihu.articles.get",
"zhihu.columns.articles.list",
"zhihu.comments.replies.list",
"zhihu.pins.get",
"zhihu.posts.search",
"zhihu.questions.answers.list",
"zhihu.questions.get",
"zhihu.trends.list",
"zhihu.users.answers.list",
"zhihu.users.articles.list",
"zhihu.users.followers.list",
"zhihu.users.get",
"zhihu.users.pins.list",
"zhihu.users.search",
"reddit.subreddits.get",
"reddit.users.subreddits.list",
"x.communities.get",
"tiktok.shop.products.get",
"tiktok.shop.products.reviews.list",
"tiktok.shop.products.search",
"tiktok.shop.sellers.products.list",
"xiaohongshu.shop.products.get",
"xiaohongshu.shop.products.reviews.list",
"xiaohongshu.shop.products.search",
"x.communities.members.list",
"x.lists.followers.list",
"x.lists.members.list",
"linkedin.posts.transcript.get",
"reddit.posts.transcript.get",
"x.posts.transcript.get",
"tiktok.users.followers.list",
"youtube.channels.posts.list",
"youtube.posts.get",
"pinterest.pins.get",
"pinterest.pins.search",
"douyin.xingtu.creators.search",
"douyin.xingtu.creators.get",
"douyin.xingtu.creators.audience.get",
"douyin.xingtu.creators.metrics",
"douyin.xingtu.creators.videos.list",
"douyin.xingtu.creators.keywords.get",
"douyin.xingtu.creators.scores.get",
"douyin.xingtu.creators.content_mix.get",
"douyin.xingtu.creators.conversion.get",
"douyin.xingtu.campaigns.list",
"xiaohongshu.pgy.creators.search",
"xiaohongshu.pgy.creators.get",
"xiaohongshu.pgy.creators.audience.get",
"xiaohongshu.pgy.creators.metrics",
"xiaohongshu.pgy.creators.notes.list",
"bilibili.backup.users.videos.list",
"douyin.backup.users.videos.list",
"douyin.backup.videos.search",
"weibo.backup.trends.list"
],
"type": "string"
},
"idempotency_key": {
"type": "string",
"description": "Optional: left out, the server makes a new one. To be able to repeat a call whose answer you did not get, give a new unique value (a UUID) and send the same value again: that returns the first result, charged once."
},
"published_within": {
"type": "string",
"description": "Published within the last period"
}
},
"additionalProperties": false
}