SocialToAIStart freeConsole
POST/v1/call/douyin.keyword_audiencePreview

Douyin trend-index keyword audience API

Only on Douyin.

The Douyin trend-index keyword audience API returns 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 call costs 2 credits ($0.004 to $0.0067 depending on the pack); failed calls are free. Call it over HTTP or from your AI client over MCP. Last tested 2026-10-17.

100 credits on sign-up, no card needed
2 creditsper call
One objectreturned per call
2026-10-17last tested
1.5 KBsample response, 1 item

Last updated:

Preview: this interface is not marked stable yet, so its parameters and fields may still change. It is charged like any other call, and a failed call is not charged.

Request and response

curl https://api.socialtoai.com/v1/call/douyin.keyword_audience \  -H "Authorization: Bearer $SOCIALTOAI_KEY" \  -H "Content-Type: application/json" \  -d '{    "keyword": "咖啡",    "since": "2026-09-01T00:00:00Z",    "until": "2026-09-30T00:00:00Z"  }'
import osimport requestsresponse = requests.post(    "https://api.socialtoai.com/v1/call/douyin.keyword_audience",    headers={"Authorization": f"Bearer {os.environ['SOCIALTOAI_KEY']}"},    json={        "keyword": "咖啡",        "since": "2026-09-01T00:00:00Z",        "until": "2026-09-30T00:00:00Z",    },)print(response.json())
# Connected over MCP? Ask in plain words.Use the Douyin trend-index keyword audience interface (douyin.keyword_audience) with keyword: 咖啡, since: 2026-09-01T00:00:00Z, until: 2026-09-30T00:00:00Z.# Your AI calls the call tool with:{  "keyword": "咖啡",  "since": "2026-09-01T00:00:00Z",  "until": "2026-09-30T00:00:00Z"}
Sign in to run2 creditsOpens in the Playground with these parameters after you sign in. It never runs by itself.
200 OK1.5 KB2 credits
{  "op": "douyin.keyword_audience",  "platform": "douyin",  "status": "ok",  "items": [    {      "platform": "douyin",      "id": "咖啡",      "ref": "咖啡",      "approx": [],      "type": "entry",      "entry_type": "keyword_audience",      "title": "咖啡",      "url": null,      "rank": null,      "heat": null,      "fields": {        "age": [          {            "label": "18-23",            "share": 0.1968,            "tgi": 174.17389307762207          },          {            "label": "24-30",            "share": 0.2233,            "tgi": 173.71695132383041          }        ],        "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          }        ],        "city": [          {            "label": "上海",            "share": 0.0245,            "tgi": 125.4042968127423          },          {            "label": "广州",            "share": 0.0237,            "tgi": 117.79286978677968          }        ],        "city_tier": [          {            "label": "一线城市",            "share": 0.08856723771604946,            "tgi": 114.35574144488798          },          {            "label": "新一线城市",            "share": 0.19688659709388875,            "tgi": 103.66957853814951          }        ],        "interest": [          {            "label": "时尚",            "share": 0.15486799847286528,            "tgi": 111.80033780828992          },          {            "label": "美食",            "share": 0.10207902382205732,            "tgi": 113.58111661037135          }        ]      }    }  ],  "unavailable": [],  "cost_credits": 2}
entry_type
keyword_audience

Names and text were removed from the sample; the numbers are as recorded.

Sample dataFull response

3 parameters.
All required.

Send them as a JSON body with POST. Your key goes in the Authorization header, never in the URL.

NameTypeRequiredDefaultDescription
keywordstringRequired—One keyword; letter case does not matter
sincedatetimeRequired—The first day counted: the China-time (UTC+8) calendar day this moment falls on
untildatetimeRequired—The last day counted, read the same way; the platform publishes a day or two late

The fields of each item.
What Douyin cannot give is marked.

FieldTypeMeaning
items[].titlestringThe entry's title or name.
items[].urlstringA link that opens it; null where the platform's list has none.
items[].rankintegerPosition on a board, from 1.
items[].heatintegerThe platform's heat score.
items[].fields.agearrayBy age group: label, share, tgi. tgi says how over-represented the group is; 100 is average.
items[].fields.genderarrayBy gender: label, share, tgi.
items[].fields.provincearrayBy province: label, share, tgi.
items[].fields.cityarrayBy city, the largest only, so the shares do not add up to 1: label, share, tgi.
items[].fields.city_tierarrayBy city tier: label, share, tgi.
items[].fields.interestarrayBy interest. One person can have several, so the shares do not add up to 1: label, share, tgi.
nullFields Douyin cannot give

Douyin gives every field of this call. Where one item lacks a value, that field is null.

Every item also has platform, id, ref, approx and type; the response around the items is the same on every call. Response format

What to expect.

One call returns one object, with no pages, for 2 credits.

1 call per second per key, 5 after a purchase; going over is not charged. Rate limits

A failed call costs 0 credits and is never retried on its own. Error codes

Once connected over MCP, these questions use it.

  1. Get who is behind a keyword on Douyin over a date range, from the platform's own keyword tool (keyword: 咖啡, since: 2026-09-01T00:00:00Z, until: 2026-09-30T00:00:00Z).
    call {"op":"douyin.keyword_audience","keyword":"咖啡","since":"2026-09-01T00:00:00Z","until":"2026-09-30T00:00:00Z"}
    2 credits

Questions.
Short answers.

Everything on Douyin
Do I need a Douyin account or Douyin's own API access?
No. You only need a SocialToAI key. The call returns content and account information publicly visible on Douyin; you never sign in to Douyin or apply for anything there.
What does “Preview” mean here?
Preview: this interface is not marked stable yet, so its parameters and fields may still change. It is charged like any other call, and a failed call is not charged.

Your AI is one URL away
from all of social media.

100 credits on sign-up, no card needed