# Douyin trend-index brand trends API

The Douyin trend-index brand trends API returns a brand's day-by-day search, content and spread indexes on Douyin over a date range, from the platform's own index tool. An index is the platform's score, not a count; days are calendar days in China time (UTC+8). 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.

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

| Request | Price key | Credits |
| --- | --- | --- |
| `POST /v1/call/douyin.brand_history` | `douyin.brand_history` | 2 |

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.brand_history \
  -H "Authorization: Bearer $SOCIALTOAI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "brand": "泡泡玛特",
    "since": "2026-09-01T00:00:00Z",
    "until": "2026-09-30T00:00:00Z"
  }'
```

```python
import os
import requests

response = requests.post(
    "https://api.socialtoai.com/v1/call/douyin.brand_history",
    headers={"Authorization": f"Bearer {os.environ['SOCIALTOAI_KEY']}"},
    json={
        "brand": "泡泡玛特",
        "since": "2026-09-01T00:00:00Z",
        "until": "2026-09-30T00:00:00Z",
    },
)
print(response.json())
```

## Parameters

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `brand` | string | Required | — | The brand's name, spelled as the index lists it |
| `since` | datetime | Required | — | The first day wanted: the China-time (UTC+8) calendar day this moment falls on |
| `until` | datetime | Required | — | The last day wanted, read the same way. The platform publishes a day or two late: a day it has no figure for yet has a null index |

## 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.category` | string | The industry the platform puts the brand in, in the platform's words. | yes |
| `items[].fields.points` | array | One entry per day, oldest first: date, search_index, content_index, spread_index. | 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

```json
{
  "request_id": "req_00000000-0000-4000-8000-000000000001",
  "schema_version": "v1",
  "fetched_at": "2026-10-12T21:56:40.000Z",
  "action": "call",
  "op": "douyin.brand_history",
  "platform": "douyin",
  "status": "ok",
  "items": [
    {
      "platform": "douyin",
      "id": "泡泡玛特",
      "ref": "泡泡玛特",
      "approx": [],
      "type": "entry",
      "entry_type": "brand_history",
      "title": "泡泡玛特",
      "url": null,
      "rank": null,
      "heat": null,
      "fields": {
        "category": "母婴",
        "points": [
          {
            "date": "2026-09-01T00:00:00Z",
            "search_index": 121864,
            "content_index": 41224,
            "spread_index": 75601
          },
          {
            "date": "2026-09-02T00:00:00Z",
            "search_index": 122413,
            "content_index": 46057,
            "spread_index": 77637
          },
          {
            "date": "2026-09-03T00:00:00Z",
            "search_index": 122213,
            "content_index": 45504,
            "spread_index": 77642
          },
          {
            "date": "2026-09-04T00:00:00Z",
            "search_index": 122205,
            "content_index": 54042,
            "spread_index": 78337
          },
          {
            "date": "2026-09-05T00:00:00Z",
            "search_index": 124682,
            "content_index": 42229,
            "spread_index": 77377
          },
          {
            "date": "2026-09-06T00:00:00Z",
            "search_index": 124155,
            "content_index": 42738,
            "spread_index": 76569
          },
          {
            "date": "2026-09-07T00:00:00Z",
            "search_index": 121751,
            "content_index": 41525,
            "spread_index": 76108
          }
        ]
      }
    }
  ],
  "unavailable": [],
  "warnings": [],
  "applied_params": {
    "brand": "泡泡玛特",
    "since": "2026-09-01T00:00:00Z",
    "until": "2026-09-30T00:00:00Z"
  },
  "cost_credits": 2,
  "billing": {
    "cost_credits": 2,
    "balance_credits": 98,
    "today_spend_credits": 2,
    "daily_limit_credits": null,
    "daily_remaining_credits": null,
    "display": "This call: 2 credits. Balance: 98 credits."
  },
  "replayed": false
}
```

## Paging and failures

- One call returns one object, with no pages, for 2 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 a brand's day-by-day search, content and spread indexes on Douyin over a date range, from the platform's own index tool (brand: 泡泡玛特, since: 2026-09-01T00:00:00Z, until: 2026-09-30T00:00:00Z). → `call {"op":"douyin.brand_history","brand":"泡泡玛特","since":"2026-09-01T00:00:00Z","until":"2026-09-30T00:00:00Z"}`, 2 credits

## More on Douyin

| Interface | What it does | Price key | Credits | Page |
| --- | --- | --- | --- | --- |
| `brand_radar` | Get the daily averages of a brand's search, content and spread indexes on Douyin over a date range, from the platform's own index tool, with the averages of every brand in its industry and of the industry's top 3, 5, 10, 15 and 30 to hold them against. | `douyin.brand_radar` | 2 | https://socialtoai.com/douyin-brand-radar-api.md |
| `keyword_audience` | Get who is behind a keyword on Douyin over a date range, from the platform's own keyword tool. | `douyin.keyword_audience` | 2 | https://socialtoai.com/douyin-keyword-audience-api.md |
| `keyword_history` | Get the day-by-day search index and composite index of a keyword on Douyin over a date range, from 巨量算数 (the Douyin index), with the daily averages of the period, of the one before and of a year earlier. | `douyin.keyword_history` | 4 | https://socialtoai.com/douyin-keyword-history-api.md |
| `keyword_related` | Get the keywords related to a keyword on Douyin in one week, from the platform's own keyword tool. | `douyin.keyword_related` | 2 | https://socialtoai.com/douyin-keyword-related-api.md |
| `keyword_videos` | Get the roughly 20 high-index videos Douyin's index tool puts forward for a keyword. | `douyin.keyword_videos` | 2 | https://socialtoai.com/douyin-keyword-videos-api.md |
| `index_topics` | Get the live topic board or the fastest-rising topic board of Douyin's index tool, about 30 entries each. | `douyin.index_topics` | 2 | https://socialtoai.com/douyin-index-topics-api.md |
| `search` | Find videos by keyword: text, author, likes, comment count and publish time. | `douyin.search` | 12 | https://socialtoai.com/douyin-search-api.md |
| `trending` | What is trending now: title, rank and heat. | `douyin.trending` | 2 | https://socialtoai.com/douyin-trending-api.md |
| `detail` | One video by ID or link: text, author, likes, comment count and publish time. | `douyin.detail` | 2 | https://socialtoai.com/douyin-detail-api.md |
| `comments` | The comments under one video: text, likes, reply count and time. | `douyin.comments` | 2 | https://socialtoai.com/douyin-comments-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.
