SocialToAIStart freeConsole
POST/v1/call/douyin.kol_audiencePreview

Douyin KOL audience API (Xingtu)

Only on Douyin.

The Douyin KOL audience API (Xingtu) returns who follows a Douyin creator, by Xingtu creator ID: followers and share in each segment by gender, age, province, city, city tier, interest, device, consumer group, purchase category and purchase amount. One call costs 3 credits ($0.006 to $0.01 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
3 creditsper call
One objectreturned per call
2026-10-17last tested
2.0 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.kol_audience \  -H "Authorization: Bearer $SOCIALTOAI_KEY" \  -H "Content-Type: application/json" \  -d '{    "id": "6763236383382306828"  }'
import osimport requestsresponse = requests.post(    "https://api.socialtoai.com/v1/call/douyin.kol_audience",    headers={"Authorization": f"Bearer {os.environ['SOCIALTOAI_KEY']}"},    json={        "id": "6763236383382306828",    },)print(response.json())
# Connected over MCP? Ask in plain words.Use the Douyin Xingtu creator audience interface (douyin.kol_audience) with id: 6763236383382306828.# Your AI calls the call tool with:{  "id": "6763236383382306828"}
Sign in to run3 creditsOpens in the Playground with these parameters after you sign in. It never runs by itself.
200 OK2.0 KB3 credits
{  "op": "douyin.kol_audience",  "platform": "douyin",  "status": "ok",  "items": [    {      "platform": "douyin",      "id": "…",      "ref": "…",      "approx": [],      "type": "entry",      "entry_type": "audience",      "title": null,      "url": null,      "rank": null,      "heat": null,      "fields": {        "measured_at": null,        "gender": [          {            "name": "male",            "share": 0.8084018682929753,            "count": 20914248          },          {            "name": "female",            "share": 0.19159813170702464,            "count": 4956855          }        ],        "age": [          {            "name": "18-23",            "share": 0.02613169810130031,            "count": 669976          },          {            "name": "24-30",            "share": 0.11262389160089727,            "count": 2887501          }        ],        "province": [          {            "name": "福建",            "share": 0.034598226662216194,            "count": 845507          },          {            "name": "香港",            "share": 0.001540805252634323,            "count": 37654          }        ],        "city": [          {            "name": "北京",            "share": 0.14657726964471665,            "count": 751515          },          {            "name": "上海",            "share": 0.12174096383309756,            "count": 624177          }        ],        "interest": [          {            "name": "二次元",            "share": 0.022866163075920397,            "count": 471117          },          {            "name": "随拍",            "share": 0.5770495394947144,            "count": 11889089          }        ],        "device": [          {            "name": "其他",            "share": 0.1350657086683392,            "count": 3500022          },          {            "name": "华为",            "share": 0.24915854592413617,            "count": 6456564          }        ],        "city_tier": [          {            "name": "二线",            "share": 0.18540551970015773,            "count": 4530677          },          {            "name": "五线",            "share": 0.10928394606430417,            "count": 2670526          }        ],        "crowd": [          {            "name": "Z世代",            "share": 0.015066702484682015,            "count": 328216          },          {            "name": "资深中产",            "share": 0.16493764562162405,            "count": 3593034          }        ],        "purchase_category": [          {            "name": "其他",            "share": 0.35668521581357804,            "count": 3854685          },          {            "name": "服饰内衣",            "share": 0.20722439582025148,            "count": 2239467          }        ],        "purchase_amount": [          {            "name": "50-100",            "share": 0.23128677093645555,            "count": 2497497          },          {            "name": "0-50",            "share": 0.3880473446209439,            "count": 4190240          }        ]      }    }  ],  "unavailable": ["fields.measured_at"],  "cost_credits": 3}
entry_type
audience
measured_at
null

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

Sample dataFull response

1 parameter.
All required.

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

NameTypeRequiredDefaultDescription
idstringRequired—Xingtu creator ID, a string of digits; not the Douyin account ID: take it from the Xingtu creator search

Where to get what you send.

id

Xingtu creator ID, a string of digits; not the Douyin account ID: take it from the Xingtu creator search (e.g. 6763236383382306828)

Every item these return carries its ref; send it as it is:

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.measured_atstringalways nullThe day the figures are for, as the start of that day in China time (UTC+8).
items[].fields.genderarrayBy gender: name, share, count.
items[].fields.agearrayBy age group: name, share, count.
items[].fields.provincearrayBy province: name, share, count.
items[].fields.cityarrayBy city, the largest only: name, share, count.
items[].fields.interestarrayBy interest: name, share, count.
items[].fields.devicearrayBy phone brand: name, share, count.
items[].fields.city_tierarrayBy city tier: name, share, count.
items[].fields.crowdarrayBy the consumer groups the platform sorts people into: name, share, count.
items[].fields.purchase_categoryarrayBy category of goods bought: name, share, count.
items[].fields.purchase_amountarrayBy amount spent per order: name, share, count.
nullFields Douyin cannot give

Read null as “Douyin did not give this”, not as zero. These are always null on this call:

  • fields.measured_atThe day the figures are for, as the start of that day in China time (UTC+8).

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 3 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 follows a Douyin creator, by Xingtu creator ID: 6763236383382306828.
    call {"op":"douyin.kol_audience","id":"6763236383382306828"}
    3 credits
  2. Search Douyin creators on Xingtu by words in their name: 美食, then for the first 3: get who follows a Douyin creator, by Xingtu creator ID.
    call {"op":"douyin.kol_search","query":"美食"}call {"op":"douyin.kol_audience","id":"<ref>"} × 3
    12 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