/v1/call/douyin.kol_searchPreviewDouyin KOL search API (Xingtu)
Only on Douyin.
The Douyin KOL search API (Xingtu) searches Douyin creators on Xingtu by words in their name: Xingtu creator ID, name, location, content categories, followers. The creator ID the other Xingtu endpoints take comes from here. 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.
Last updated:
Request and response
curl https://api.socialtoai.com/v1/call/douyin.kol_search \ -H "Authorization: Bearer $SOCIALTOAI_KEY" \ -H "Content-Type: application/json" \ -d '{ "query": "美食" }'import osimport requestsresponse = requests.post( "https://api.socialtoai.com/v1/call/douyin.kol_search", headers={"Authorization": f"Bearer {os.environ['SOCIALTOAI_KEY']}"}, json={ "query": "美食", },)print(response.json())# Connected over MCP? Ask in plain words.Use the Douyin Xingtu creator search interface (douyin.kol_search) with query: 美食.# Your AI calls the call tool with:{ "query": "美食"}{ "op": "douyin.kol_search", "platform": "douyin", "status": "ok", "items": [ { "platform": "douyin", "id": "…", "ref": "…", "approx": [], "type": "entry", "entry_type": "creator", "title": "…", "url": null, "rank": null, "heat": null, "fields": { "account_id": null, "username": null, "location": "…", "categories": ["…"], "subcategories": ["…"], "followers": 48169 } } ], "unavailable": ["fields.account_id", "fields.username"], "page": { "has_more": true, "cursor": "cur_…", "cursor_expires_at": "2026-10-12T22:36:50.000Z" }, "cost_credits": 3}- entry_type
- creator
- account_id
null- username
null- location
- …
- followers
- 48169
Names and text were removed from the sample; the numbers are as recorded.
2 parameters.
1 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 |
|---|---|---|---|---|
| query | string | Required | — | Search terms, matched against creators' names |
| cursor | string | Optional | — | Pass page.cursor from the last response to get the next page. |
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.account_id | stringalways null | The creator's account ID on the platform, which the platform's account calls take. |
| items[].fields.username | stringalways null | The creator's handle. |
| items[].fields.location | string | Where the creator is based, in the platform's words. |
| items[].fields.categories | string[] | Content categories, first level, in the platform's words. |
| items[].fields.subcategories | string[] | Content categories, second level, in the platform's words. |
| items[].fields.followers | integer | Followers. |
nullFields Douyin cannot giveRead null as “Douyin did not give this”, not as zero. These are always null on this call:
fields.account_idThe creator's account ID on the platform, which the platform's account calls take.fields.usernameThe creator's handle.
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.
Search Douyin creators on Xingtu by words in their name: 美食.
3 creditscall {"op":"douyin.kol_search","query":"美食"}