Douyin trend-index keyword audience API
Get who is behind a keyword on Douyin over a date range, from the platform's own keyword tool: the share and TGI of each age group, gender, province, city, city tier and interest. One object a call; $0.0020 per call. Errors, timeouts and objects that do not exist are not charged.
Try it
Change a value and the request on the right follows.Sign in to run it; it runs on your own balance. New accounts can try this endpoint free, up to 50 calls.
Used to call POST /v1/douyin/index/keyword-audience? It is this address now. What changed for old endpoints
curl -G "https://api.dataxapi.com/v1/douyin/index/keywords/audience/get" \ --data-urlencode "keyword=咖啡" \ --data-urlencode "since=2026-09-01T00:00:00Z" \ --data-urlencode "until=2026-09-30T00:00:00Z" \ -H "Authorization: Bearer $DATAXAPI_API_KEY"
{
"code": "ok",
"request_id": "e05f9d23-d8dd-4f0f-9084-3f4ca55d0dbb",
"data": {
"item": {
"keyword": "咖啡",
"age": [
{ "label": "18-23", "share": 0.1968, "tgi": 174.17389307762207 },
{ "label": "24-30", "share": 0.2233, "tgi": 173.71695132383041 },
// … 3 more
],
"gender": [
{ "label": "男", "share": 0.47, "tgi": 98.27023904973254 },
{ "label": "女", "share": 0.53, "tgi": 101.58569115669054 }
],
"province": [
{ "label": "北京", "share": 0.0221, "tgi": 120.01085780496312 },
{ "label": "天津", "share": 0.0121, "tgi": 105.42964416985868 },
// … 32 more
],
"city": [
{ "label": "上海", "share": 0.0245, "tgi": 125.4042968127423 },
{ "label": "广州", "share": 0.0237, "tgi": 117.79286978677968 },
// … 28 more
],
"city_tier": [
{
"label": "一线城市",
"share": 0.08856723771604946,
"tgi": 114.35574144488798
},
{
"label": "新一线城市",
"share": 0.19688659709388875,
"tgi": 103.66957853814951
},
// … 5 more
],
"interest": [
{
"label": "时尚",
"share": 0.15486799847286528,
"tgi": 111.80033780828992
},
{
"label": "美食",
"share": 0.10207902382205732,
"tgi": 113.58111661037135
},
// … 23 more
]
}
},
"warnings": [],
"meta": {
"capability": "douyin.index.keywords.audience.get",
"result_status": "complete",
"fetched_at": "2026-10-12T21:50:52.000Z",
"cached": false,
"replayed": false,
"unavailable": {},
"billing": {
"amount": "0.002",
"currency": "USD",
"balance_after": "9.998"
}
}
}From a response recorded 2026-10-12 21:50 UTC. Names, text and IDs are examples, and so are the links: none is the recorded one (the page shows no one's personal data); the figures are as recorded. Long lists are cut. The request ID, cursor and balance are made up.
Size as sent: 6.7 KB in the standard view (6.7 KB compact, 6.7 KB full).
curl -G "https://api.dataxapi.com/v1/douyin/index/keywords/audience/get" \ --data-urlencode "keyword=咖啡" \ --data-urlencode "since=2026-09-01T00:00:00Z" \ --data-urlencode "until=2026-09-30T00:00:00Z" \ -H "Authorization: Bearer $DATAXAPI_API_KEY"
from dataxapi import DataXAPI dx = DataXAPI() # reads DATAXAPI_API_KEY result = dx.douyin.index.keywords.audience.get(keyword="咖啡", since="2026-09-01T00:00:00Z", until="2026-09-30T00:00:00Z") print(result["data"]["item"])
import { DataXAPI } from "@dataxapi/sdk";
const dx = new DataXAPI(); // reads DATAXAPI_API_KEY
const result = await dx.douyin.index.keywords.audience.get({ keyword: "咖啡", since: "2026-09-01T00:00:00Z", until: "2026-09-30T00:00:00Z" });
console.log(result.data.item);dataxapi call douyin.index.keywords.audience.get 'keyword=咖啡' since=2026-09-01T00:00:00Z until=2026-09-30T00:00:00Z{
"mcpServers": {
"dataxapi": {
"type": "http",
"url": "https://api.dataxapi.com/mcp",
"headers": {
"Authorization": "Bearer ${DATAXAPI_API_KEY}"
}
}
}
}Add this to your MCP client, then ask your agent to call douyin.index.keywords.audience.get.
Parameters
One keyword; letter case does not matter. Example: 咖啡.
The first day counted: the China-time (UTC+8) calendar day this moment falls on. Example: 2026-09-01T00:00:00Z.
The last day counted, read the same way; the platform publishes a day or two late. Example: 2026-09-30T00:00:00Z.
How much of each item to return. All three cost the same. Values: compact, standard (default), full.
Return only these fields. Each by its path, such as author.name.
Known limits
- One object per call: there is nothing to page.
Returned fields
data.item is one keyword audience object. Preview: the structure may change, announced beforehand.
The keyword
By age group
Name of the group, in the platform's words
Share of the audience in this group, 0 to 1
TGI: how much this group leans to the keyword; 100 is the platform's average, above 100 leans more
By gender
Show all 28 fields →
Name of the group, in the platform's words
Share of the audience in this group, 0 to 1
TGI: how much this group leans to the keyword; 100 is the platform's average, above 100 leans more
By province
Name of the group, in the platform's words
Share of the audience in this group, 0 to 1
TGI: how much this group leans to the keyword; 100 is the platform's average, above 100 leans more
By city: the cities with the largest shares, as the platform lists them; they do not add up to 1
Name of the group, in the platform's words
Share of the audience in this group, 0 to 1
TGI: how much this group leans to the keyword; 100 is the platform's average, above 100 leans more
By city tier
Name of the group, in the platform's words
Share of the audience in this group, 0 to 1
TGI: how much this group leans to the keyword; 100 is the platform's average, above 100 leans more
By interest; the shares do not add up to 1
Name of the group, in the platform's words
Share of the audience in this group, 0 to 1
TGI: how much this group leans to the keyword; 100 is the platform's average, above 100 leans more
Which numbers of this item are approximate or lower bounds; absent when all are exact
Path of the field, such as metrics.views
Approximate, or a lower boundapproximatelower_bound
Typical size of one item: compact 6.4 KB, standard 6.4 KB, full 6.4 KB (measured on the response recorded 2026-10-12 21:50 UTC).
When you are charged
X-Max-Price to refuse anything above your own limit)Prices as read 2026-10-21 09:10 UTC, under price book 2, in effect since 2026-10-17 11:00 UTC; the Playground reads the price in force before a run.
If the object does not exist
The answer is 404 not_found and nothing is charged. reason says which: not_found (it does not exist) or private_or_deleted.
Errors
What this endpoint can answer with; codes all endpoints share are on the full list.
invalid_paramsA parameter is invalidRetry: After a fixNoinsufficient_balanceThe balance is too lowRetry: After a fixNonot_foundThe object does not exist, is private or was deletedRetry: NoNoupstream_failedThe data source failedRetry: YesNotimeoutThe data did not arrive in time; retry with the same idempotency keyRetry: YesNoQuestions
How much does the Douyin trend-index keyword audience API cost?
$0.0020 per call. The most one call can cost is $0.0020.
When am I not charged?
Errors, timeouts and objects that do not exist are not charged.
What happens if the object does not exist?
The answer is 404 not_found and nothing is charged. reason says which: not_found (it does not exist) or private_or_deleted.
Where do the figures come from?
From 巨量算数 (Juliang Suanshu, the Douyin index): who is behind the keyword over the dates asked for: the share of each age group, gender, province, city, city tier and interest, each with its TGI (100 is the platform's average).
How do I use it in ChatGPT or Claude?
Connect DataXAPI once (one prompt with your key, on the agents page), then ask in plain words: "Who searches 咖啡 on Douyin? Use DataXAPI." The agent calls douyin.index.keywords.audience.get, $0.0020 a call.
All 34 Douyin endpoints
Use it in your AI
Copy this prompt
Your API key is built in, so there is nothing to configure.
No account yet? Sign-up takes an email and no card, and a failed call is never charged.
Paste it into your agent
It reads the page the prompt points to and connects itself.
Now ask something
Use one of these, or your own words.
Prefer to set it up by hand?
dataxapi setupgives the agents on your machine (Claude Code, Codex, Cursor) the DataXAPI MCP server and the base skill. The key is read from DATAXAPI_API_KEY; none is written into a file.MCP server: https://api.dataxapi.com/mcp. The entry for your client is under MCP in the request examples of this page; then ask your agent to call douyin.index.keywords.audience.get.Other clients →Show the text
Use the DataXAPI endpoint douyin.index.keywords.audience.get (Douyin trend-index keyword audience). Get who is behind a keyword on Douyin over a date range, from the platform's own keyword tool: the share and TGI of each age group, gender, province, city, city tier and interest. Call GET https://api.dataxapi.com/v1/douyin/index/keywords/audience/get with the header "Authorization: Bearer $DATAXAPI_API_KEY". Read the key from the environment variable DATAXAPI_API_KEY; never write it into code. Parameters: - keyword (required): One keyword; letter case does not matter. Example: 咖啡. - since (required): The first day counted: the China-time (UTC+8) calendar day this moment falls on. Example: 2026-09-01T00:00:00Z. - until (required): The last day counted, read the same way; the platform publishes a day or two late. Example: 2026-09-30T00:00:00Z. - view: How much of each item to return. All three cost the same. Values: compact, standard (default), full. - fields: Return only these fields. Each by its path, such as author.name. Price: $0.0020 per call. Errors, timeouts and objects that do not exist are not charged. The answer is JSON: data.item holds keyword audience; meta.billing.amount is what this call was charged. Example: curl -G "https://api.dataxapi.com/v1/douyin/index/keywords/audience/get" \ --data-urlencode "keyword=咖啡" \ --data-urlencode "since=2026-09-01T00:00:00Z" \ --data-urlencode "until=2026-09-30T00:00:00Z" \ -H "Authorization: Bearer $DATAXAPI_API_KEY" Full reference in Markdown: https://dataxapi.com/apis/douyin/index/keywords/audience/get.md
Names and identifiers
- In Chinese
- 抖音巨量算数关键词人群画像 API
- Endpoint ID
douyin.index.keywords.audience.get- Endpoint
GET /v1/douyin/index/keywords/audience/get
Start with one key.
207 endpoints on 21 platforms, from $0.0003 a call. Errors and timeouts are not charged.