/v1/call/douyin.account_audiencePreviewDouyin trend-index creator follower profile API
Only on Douyin.
The Douyin trend-index creator follower profile API returns who follows a Douyin account from the platform's own index tool, by the account's numeric ID: the share of each segment by gender, age, province, city, city tier, phone brand and interest. Not limited to marketplace creators; shares only, no head counts. 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.
Last updated:
Request and response
curl https://api.socialtoai.com/v1/call/douyin.account_audience \ -H "Authorization: Bearer $SOCIALTOAI_KEY" \ -H "Content-Type: application/json" \ -d '{ "id": "66598046050" }'import osimport requestsresponse = requests.post( "https://api.socialtoai.com/v1/call/douyin.account_audience", headers={"Authorization": f"Bearer {os.environ['SOCIALTOAI_KEY']}"}, json={ "id": "66598046050", },)print(response.json())# Connected over MCP? Ask in plain words.Use the Douyin trend-index creator follower profile interface (douyin.account_audience) with id: 66598046050.# Your AI calls the call tool with:{ "id": "66598046050"}{ "op": "douyin.account_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.8084029405057243, "count": null }, { "name": "female", "share": 0.1915970594942758, "count": null } ], "age": [ { "name": "31-40", "share": 0.3573003477857061, "count": null }, { "name": "41-50", "share": 0.2595408957167182, "count": null } ], "province": [ { "name": "广东", "share": 0.14160949971558792, "count": null }, { "name": "江苏", "share": 0.07285886667660696, "count": null } ], "city": [ { "name": "北京", "share": 0.03281000167057653, "count": null }, { "name": "上海", "share": 0.027333702606498388, "count": null } ], "interest": [ { "name": "随拍", "share": 0.04880862874319531, "count": null }, { "name": "未分类(垂直度不足)", "share": 0.045695193136280836, "count": null } ], "device": [ { "name": "华为", "share": 0.30586610757827787, "count": null }, { "name": "苹果", "share": 0.22449642440387466, "count": null } ], "city_tier": [ { "name": "三线", "share": 0.22936908477712395, "count": null }, { "name": "新一线", "share": 0.20041213759459334, "count": null } ], "crowd": null, "purchase_category": null, "purchase_amount": null } } ], "unavailable": ["fields.measured_at", "fields.gender.count", "fields.age.count", "fields.province.count", "fields.city.count", "fields.interest.count", "fields.device.count", "fields.city_tier.count", "fields.crowd", "fields.purchase_category", "fields.purchase_amount"], "cost_credits": 2}- entry_type
- audience
- measured_at
null- crowd
null- purchase_category
null- purchase_amount
null
Names and text were removed from the sample; the numbers are as recorded.
1 parameter.
All required.
Send them as a JSON body with POST. Your key goes in the Authorization header, never in the URL.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Required | — | The account's numeric Douyin ID (uid), a string of digits; not the token starting with MS4w that the profile endpoint takes |
Where to get what you send.
idThe account's numeric Douyin ID (uid), a string of digits; not the token starting with MS4w that the profile endpoint takes (e.g. 66598046050)
No other interface of the platform returns it: take it from the web page or link as described above.
The fields of each item.
What Douyin cannot give is marked.
| Field | Type | Meaning |
|---|---|---|
| items[].title | string | The entry's title or name. |
| items[].url | string | A link that opens it; null where the platform's list has none. |
| items[].rank | integer | Position on a board, from 1. |
| items[].heat | integer | The platform's heat score. |
| items[].fields.measured_at | stringalways null | The day the figures are for, as the start of that day in China time (UTC+8). |
| items[].fields.gender | array | By gender: name, share, count.count: always null here |
| items[].fields.age | array | By age group: name, share, count.count: always null here |
| items[].fields.province | array | By province: name, share, count.count: always null here |
| items[].fields.city | array | By city, the largest only: name, share, count.count: always null here |
| items[].fields.interest | array | By interest: name, share, count.count: always null here |
| items[].fields.device | array | By phone brand: name, share, count.count: always null here |
| items[].fields.city_tier | array | By city tier: name, share, count.count: always null here |
| items[].fields.crowd | arrayalways null | By the consumer groups the platform sorts people into: name, share, count. |
| items[].fields.purchase_category | arrayalways null | By category of goods bought: name, share, count. |
| items[].fields.purchase_amount | arrayalways null | By amount spent per order: name, share, count. |
nullFields Douyin cannot giveRead 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).fields.crowdBy the consumer groups the platform sorts people into: name, share, count.fields.purchase_categoryBy category of goods bought: name, share, count.fields.purchase_amountBy amount spent per order: name, share, count.fields.gender.countBy gender: name, share, count.fields.age.countBy age group: name, share, count.fields.province.countBy province: name, share, count.fields.city.countBy city, the largest only: name, share, count.fields.interest.countBy interest: name, share, count.fields.device.countBy phone brand: name, share, count.fields.city_tier.countBy city tier: name, share, count.
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.
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.
Get who follows a Douyin account from the platform's own index tool, by the account's numeric ID: 66598046050.
2 creditscall {"op":"douyin.account_audience","id":"66598046050"}