# Douyin KOL audience API (Xingtu)

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.

- Page: https://socialtoai.com/douyin-kol-audience-api/
- Last updated: 2026-10-17
- Last tested: 2026-10-17

| Request | Price key | Credits |
| --- | --- | --- |
| `POST /v1/call/douyin.kol_audience` | `douyin.kol_audience` | 3 |

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

```bash
curl https://api.socialtoai.com/v1/call/douyin.kol_audience \
  -H "Authorization: Bearer $SOCIALTOAI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "6763236383382306828"
  }'
```

```python
import os
import requests

response = 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())
```

## Parameters

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `id` | string | Required | — | Xingtu creator ID, a string of digits; not the Douyin account ID: take it from the Xingtu creator search |

## Where the values come from

- `id`: Xingtu creator ID, a string of digits; not the Douyin account ID: take it from the Xingtu creator search (e.g. `6763236383382306828`)
  Returned as `ref` by: [kol_search](https://socialtoai.com/douyin-kol-search-api.md)

## Response fields

| Field | Type | Meaning | Given |
| --- | --- | --- | --- |
| `items[].title` | string | The entry's title or name. | yes |
| `items[].url` | string | A link that opens it; null where the platform's list has none. | yes |
| `items[].rank` | integer | Position on a board, from 1. | yes |
| `items[].heat` | integer | The platform's heat score. | yes |
| `items[].fields.measured_at` | string | The day the figures are for, as the start of that day in China time (UTC+8). | always null: Douyin does not give it |
| `items[].fields.gender` | array | By gender: name, share, count. | yes |
| `items[].fields.age` | array | By age group: name, share, count. | yes |
| `items[].fields.province` | array | By province: name, share, count. | yes |
| `items[].fields.city` | array | By city, the largest only: name, share, count. | yes |
| `items[].fields.interest` | array | By interest: name, share, count. | yes |
| `items[].fields.device` | array | By phone brand: name, share, count. | yes |
| `items[].fields.city_tier` | array | By city tier: name, share, count. | yes |
| `items[].fields.crowd` | array | By the consumer groups the platform sorts people into: name, share, count. | yes |
| `items[].fields.purchase_category` | array | By category of goods bought: name, share, count. | yes |
| `items[].fields.purchase_amount` | array | By amount spent per order: name, share, count. | yes |

Every item also has platform, id, ref, approx and type; the response around the items is the same on every call. [Response format](https://socialtoai.com/docs/api/response.md)

## Sample response

Sample data: names, links and text are replaced by placeholders; the numbers are as recorded.

```json
{
  "request_id": "req_00000000-0000-4000-8000-000000000001",
  "schema_version": "v1",
  "fetched_at": "2026-10-12T21:49:33.000Z",
  "action": "call",
  "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"],
  "warnings": [],
  "applied_params": {
    "id": "6763236383382306828"
  },
  "cost_credits": 3,
  "billing": {
    "cost_credits": 3,
    "balance_credits": 97,
    "today_spend_credits": 3,
    "daily_limit_credits": null,
    "daily_remaining_credits": null,
    "display": "This call: 3 credits. Balance: 97 credits."
  },
  "replayed": false
}
```

## Paging and failures

- 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](https://socialtoai.com/docs/credits-and-billing.md#rate-limits)
- A failed call costs 0 credits and is never retried on its own. [Error codes](https://socialtoai.com/docs/api/errors.md)

## Ask your AI

- Get who follows a Douyin creator, by Xingtu creator ID: 6763236383382306828. → `call {"op":"douyin.kol_audience","id":"6763236383382306828"}`, 3 credits
- 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

## More on Douyin

| Interface | What it does | Price key | Credits | Page |
| --- | --- | --- | --- | --- |
| `kol_search` | Search Douyin creators on Xingtu by words in their name. | `douyin.kol_search` | 3 | https://socialtoai.com/douyin-kol-search-api.md |
| `kol_profile` | Get a Douyin creator's profile on Xingtu by Xingtu creator ID. | `douyin.kol_profile` | 3 | https://socialtoai.com/douyin-kol-profile-api.md |
| `kol_performance` | Get how a Douyin creator's videos did over the last 30 or 90 days, by Xingtu creator ID. | `douyin.kol_performance` | 3 | https://socialtoai.com/douyin-kol-performance-api.md |
| `account_history` | Get how a Douyin account's numbers moved over the last 7 or 30 days, by its numeric ID, from the platform's own index tool. | `douyin.account_history` | 2 | https://socialtoai.com/douyin-account-history-api.md |
| `kol_rates` | Get what a Douyin creator charges on Xingtu for each kind of sponsored work, and how it is settled. | `douyin.kol_rates` | 24 | https://socialtoai.com/douyin-kol-rates-api.md |
| `kol_videos` | Get a page of a Douyin creator's videos by Xingtu creator ID, newest first, with the figures Xingtu gives for each. | `douyin.kol_videos` | 3 | https://socialtoai.com/douyin-kol-videos-api.md |
| `account_top_videos` | Get the videos the platform's own index tool lists as a Douyin account's top videos for a span of up to 30 days, by the account's numeric ID. | `douyin.account_top_videos` | 2 | https://socialtoai.com/douyin-account-top-videos-api.md |
| `account_audience` | Get who follows a Douyin account from the platform's own index tool, by the account's numeric ID. | `douyin.account_audience` | 2 | https://socialtoai.com/douyin-account-audience-api.md |
| `account_metrics` | Get a Douyin creator's core figures from the platform's own index tool, by the account's numeric ID. | `douyin.account_metrics` | 2 | https://socialtoai.com/douyin-account-metrics-api.md |
| `kol_keywords` | Get the words a Douyin creator's recent videos keep coming back to, by Xingtu creator ID. | `douyin.kol_keywords` | 2 | https://socialtoai.com/douyin-kol-keywords-api.md |

## FAQ

**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.
