For AI

How-to guides

How to find Douyin Xingtu creators and get their rate cards

Two endpoints: Douyin Xingtu creator search to filter creators by topic, followers and recent engagement, then Douyin Xingtu creator rate card for each creator you shortlist. The worked example below is 6 calls and costs $0.204; a failed call is not charged.

Updated

The job: a brand wants Douyin creators in one niche, inside a follower band, whose recent videos still get engagement, and it wants to know what each one charges before anyone opens Xingtu (巨量星图), Douyin's official creator marketplace. You search Xingtu by topic with filters, rank the results by what a placement costs per thousand views, then pull the full rate card of the five you would actually pitch. You end with one table: creator, followers, 30-day engagement rate, median views, and every kind of sponsored work they list with its price in yuan, whether it is open for orders and how it is settled.

No Xingtu advertiser account is needed. The data is what Xingtu shows advertisers on a creator's page, read through your API key.

Step by step

Step 1: search Xingtu with filters

Call Douyin Xingtu creator search with query. The parameters that shape the list:

  • search_by is content (the default) or name. content matches your words against what creators post, so query=露营 finds camping creators whose nickname never mentions camping. name matches nicknames; use it when you already hold a list of names.
  • followers_min and followers_max set the follower band.
  • engagement_min is the floor for the 30-day engagement rate, in percent: 3 means 3%.
  • gender is female or male. Leave it out to get both.

One call returns up to 20 creators for $0.004. Each has id (the Xingtu creator ID, all digits), name, followers, location, gender, categories in Xingtu's own words, engagement_rate, and median_views and median_engagements of recent everyday videos. rates holds the two headline prices Xingtu prints on the card, in yuan: integrated_video (植入视频, the product placed inside the creator's usual kind of video) and custom_video (定制视频, a video made around the brand).

curl -G "https://api.okdata.online/v1/douyin/xingtu/creators/search" \
  -H "Authorization: Bearer $OKDATA_API_KEY" \
  --data-urlencode 'query=露营' \
  --data-urlencode 'followers_min=100000' \
  --data-urlencode 'followers_max=500000' \
  --data-urlencode 'engagement_min=3'

Watch the units: the filter takes percent, but the response gives engagement_rate as a fraction, so 0.042 is 4.2%. With view=full, each creator also carries Xingtu's own estimates under ext where it shows them, such as expected_views, cpm_integrated and completion_rate. For the next page, send page.next_cursor back as cursor; each page is one more call.

Step 2: pull the full rate card

The search card shows two prices and leaves available and settlement empty. Douyin Xingtu creator rate card takes the Xingtu creator id from step 1 and returns everything on the card for $0.04. The Xingtu ID is not the Douyin account ID or sec_uid, so always take it from the search.

The response has creator_id, url (the creator's Xingtu page), industries (Xingtu's industry tags) and rates. Each rate has:

  • type: integrated_video, custom_video, or other for anything else the creator lists, such as co-creation tasks.
  • name: Xingtu's own label, for example 植入视频.
  • price and currency (CNY). price is null when Xingtu does not publish it.
  • available: true when the creator takes that kind of order right now.
  • settlement: how it is settled, in Xingtu's words, for example 固定价格 (fixed price).
curl -G "https://api.okdata.online/v1/douyin/xingtu/creators/rates/get" \
  -H "Authorization: Bearer $OKDATA_API_KEY" \
  --data-urlencode 'id=7192045836617285643'

Step 3: rank and price in Python

The script below searches once, ranks creators by integrated video price per 1,000 median views, buys the rate card of the five cheapest and writes one CSV row per offering. SHORTLIST is also your spending cap for step 2.

import csv
import os
import requests

API = "https://api.okdata.online"
HEADERS = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
SHORTLIST = 5  # rate cards to fetch; each is one call


def get(path, **params):
    body = requests.get(API + path, headers=HEADERS, params=params, timeout=60).json()
    if body["code"] != "ok":
        raise RuntimeError(f"{body['code']}: {body['message']} (charged: {body['charged']})")
    return body["data"]


def per_1k_views(creator):
    price = next((r["price"] for r in creator["rates"] or [] if r["type"] == "integrated_video"), None)
    views = creator["median_views"]
    return price / views * 1000 if price and views else float("inf")


found = get("/v1/douyin/xingtu/creators/search", query="露营", followers_min=100000,
            followers_max=500000, engagement_min=3)["items"]
shortlist = sorted(found, key=per_1k_views)[:SHORTLIST]

with open("xingtu_rates.csv", "w", newline="", encoding="utf-8-sig") as f:
    out = csv.writer(f)
    out.writerow(["creator", "xingtu_id", "followers", "engagement_rate", "median_views",
                  "offering", "type", "price_cny", "open", "settlement"])
    for c in shortlist:
        card = get("/v1/douyin/xingtu/creators/rates/get", id=c["id"])["item"]
        for r in card["rates"]:
            out.writerow([c["name"], c["id"], c["followers"], c["engagement_rate"], c["median_views"],
                          r["name"], r["type"], r["price"], r["available"], r["settlement"]])

utf-8-sig makes Excel open the Chinese labels correctly. Pricing 20 creators instead of 5 is $0.80 for the rate cards.

Good to know

  • List price, not deal price. Xingtu shows what the creator lists. Platform service fees, discounts and package deals are settled inside Xingtu when you place the order.
  • Only creators on Xingtu. Someone who never joined Xingtu, or has not opened brand deals, will not appear. A rate card request for an ID with nothing on it returns not_found, which is free.
  • Empty fields are explained. Xingtu does not give a handle in search, so username is null and meta.unavailable names the reason. account_id, where present, is the creator's numeric Douyin user ID, not the sec_uid.
  • Retries without paying twice. Send an Idempotency-Key header with each call. The same request with the same key within 24 hours returns the stored answer with meta.replayed: true and no new charge.
  • What stays in Xingtu. The audience profile (age, gender, city) and a creator's past orders are not in these fields. Check them in the Xingtu console before you sign.
  • Rates move. Pull the rate card again on the day you send the brief.

To price a fixed list of creator names rather than discover new ones, see how to check Xingtu creator rates in bulk. To read a shortlisted creator's videos, you first need their sec_uid: how to get a Douyin sec_uid.

What the example costs

One Xingtu search for 露营 (camping) creators with 100k to 500k followers and at least 3% engagement, then the full rate card of the 5 cheapest per view

EndpointCallsPriceSubtotal
Douyin Xingtu creator search1$0.004$0.004
Douyin Xingtu creator rate card5$0.04$0.20
Total6$0.204

Prices in force when this page was built. A failed call costs nothing.

In your AI (MCP)

Connect the MCP server once, then say what you want. The agent finds these endpoints, reads their prices and calls them on your balance.

SayFind Douyin creators on Xingtu who post about 露营 (camping), with 100k to 500k followers and at least 3% engagement. Rank them by integrated video price per 1,000 median views, then get the full rate card of the top 5 and give me one table.

What the agent sends to the call tool first
{
  "endpoint": "douyin.xingtu.creators.search",
  "params": {
    "query": "户外"
  },
  "idempotency_key": "<a new UUID>"
}

Set up the MCP server →

Connect once, then just ask.

Every new key comes with $0.10 to try it. One sentence connects your agent.

Start free
Connect your AI

Paste this into your agent

Read https://okdata.online/agents.md and set up okdata for me; my key is in the OKDATA_API_KEY environment variable.

Claude Code, Cursor, Codex and other agents that can open a link set themselves up from it.

MCP serverhttps://api.okdata.online/mcp