# Douyin trend-index creator top videos API

The Douyin trend-index creator top videos API returns 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. 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-account-top-videos-api/
- Last updated: 2026-10-17
- Last tested: 2026-10-17

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

## Request

```bash
curl https://api.socialtoai.com/v1/call/douyin.account_top_videos \
  -H "Authorization: Bearer $SOCIALTOAI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "66598046050",
    "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.account_top_videos",
    headers={"Authorization": f"Bearer {os.environ['SOCIALTOAI_KEY']}"},
    json={
        "id": "66598046050",
        "since": "2026-09-01T00:00:00Z",
        "until": "2026-09-30T00:00:00Z",
    },
)
print(response.json())
```

## Parameters

| 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 |
| `since` | datetime | Required | — | The first day counted: the China-time (UTC+8) calendar day this moment falls on |
| `until` | datetime | Required | — | The last day counted, read the same way; no more than 30 days after the first |

First page only: up to 20 items, with no cursor parameter and no next page.

## Where the values come from

- `id`: The 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.

## Response fields

| Field | Type | Meaning | Given |
| --- | --- | --- | --- |
| `items[].url` | string | A link that opens the item. | yes |
| `items[].format` | string | video, image, text or article. | always null: Douyin does not give it |
| `items[].title` | string | The title. | always null: Douyin does not give it |
| `items[].text` | string | The body text or caption. | yes |
| `items[].published_at` | string | When it was published, ISO 8601 in UTC. | yes |
| `items[].author.id` | string | The author's account ID. | yes |
| `items[].author.username` | string | The author's handle. | always null: Douyin does not give it |
| `items[].author.name` | string | The author's display name. | always null: Douyin does not give it |
| `items[].author.verified` | boolean | Whether the author is verified. | always null: Douyin does not give it |
| `items[].author.followers` | integer | The author's follower count. | always null: Douyin does not give it |
| `items[].metrics.likes` | integer | Likes. | yes |
| `items[].metrics.comments` | integer | Comments. | yes |
| `items[].metrics.shares` | integer | Shares. | yes |
| `items[].metrics.collects` | integer | Saves. | always null: Douyin does not give it |
| `items[].metrics.views` | integer | Views or plays. | always null: Douyin does not give it |
| `items[].metrics.reposts` | integer | Reposts. | always null: Douyin does not give it |
| `items[].images` | string[] | Image addresses. | always null: Douyin does not give it |
| `items[].hashtags` | string[] | Hashtags, without the #. | always null: Douyin does not give it |
| `items[].is_pinned` | boolean | Whether the author pinned it. | always null: Douyin does not give it |

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-13T03:25:10.000Z",
  "action": "call",
  "op": "douyin.account_top_videos",
  "platform": "douyin",
  "status": "ok",
  "items": [
    {
      "platform": "douyin",
      "id": "…",
      "ref": "…",
      "approx": [],
      "type": "content",
      "url": "https://example.com/…",
      "format": null,
      "title": null,
      "text": "…",
      "published_at": "2026-09-30T00:00:00Z",
      "author": {
        "id": "…",
        "username": null,
        "name": null,
        "verified": null,
        "followers": null
      },
      "metrics": {
        "likes": 21725,
        "comments": 1124,
        "shares": 145,
        "collects": null,
        "views": null,
        "reposts": null
      },
      "images": null,
      "hashtags": null,
      "is_pinned": null
    }
  ],
  "unavailable": ["format", "title", "author.username", "author.name", "author.verified", "author.followers", "metrics.collects", "metrics.views", "metrics.reposts", "images", "hashtags", "is_pinned"],
  "page": {
    "has_more": false
  },
  "warnings": [],
  "applied_params": {
    "id": "66598046050",
    "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 the first page only, up to 20 items, with no cursor, for 2 credits.
- A call that runs and finds nothing is a successful call: status is "empty", items is empty, and it costs 2 credits.
- On this call Douyin cannot tell a video that does not exist from one with no data: both come back as empty, and both are charged.
- 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 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 (id: 66598046050, since: 2026-09-01T00:00:00Z, until: 2026-09-30T00:00:00Z). → `call {"op":"douyin.account_top_videos","id":"66598046050","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 |
| --- | --- | --- | --- | --- |
| `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_audience` | Get who follows a Douyin creator, by Xingtu creator ID. | `douyin.kol_audience` | 3 | https://socialtoai.com/douyin-kol-audience-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_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.

**Can I get the next page?**

No. On Douyin this interface gives its first page only (up to 20 items): the response carries no cursor, and page.has_more is always false.
