# How to export Douyin video comments in bulk

3 endpoints do it: Douyin video search → Douyin video comments → Douyin comment replies. The worked example below is 12 calls and costs $0.0420 in all; a failed call is not charged.

Search Douyin for videos on a keyword, take the comments under each video page by page, then open the replies of the busiest comments. You end up with one table of comments: text, commenter, likes, replies and time posted.

## Step by step

### Step 1: Douyin video search

Get a page of videos for your search terms. `sort` orders them by newest or most liked, and `published_within` keeps only those of the last day, week or half year. Each item's `id` is the video ID the next step takes; `metrics.comments` is its comment count, so you can start with the busiest. ([Douyin video search](https://dataxapi.com/apis/douyin/videos/search/), $0.0200 / a call)

cURL

```bash
curl -G "https://api.dataxapi.com/v1/douyin/videos/search" \
  --data-urlencode "query=露营" \
  -H "Authorization: Bearer $DATAXAPI_API_KEY"
```

Python

```python
from dataxapi import DataXAPI

dx = DataXAPI()  # reads DATAXAPI_API_KEY
result = dx.douyin.videos.search(query="露营")
print(result["data"]["items"])
```

TypeScript

```typescript
import { DataXAPI } from "@dataxapi/sdk";

const dx = new DataXAPI(); // reads DATAXAPI_API_KEY
const result = await dx.douyin.videos.search({ query: "露营" });
console.log(result.data.items);
```

CLI

```bash
dataxapi call douyin.videos.search 'query=露营'
```

Recorded response: From a response recorded 2026-10-12 19:01 UTC. Names, text and IDs are examples, and so are the links: none is the recorded one (the page shows no one's personal data); the figures are as recorded. Long lists are cut. The request ID, cursor and balance are made up.

```jsonc
{
  "code": "ok",
  "request_id": "c4c779e7-8730-415a-ab8b-2439d70fb51a",
  "data": {
    "items": [
      {
        "id": "7732320280216651754",
        "url": "https://www.douyin.com/video/7732320280216651754",
        "type": "video",
        "title": null,
        "text": "周末的露营日常，随手记录一下",
        "lang": "zh",
        "published_at": "2026-09-11T01:32:11.000Z",
        "author": {
          "id": "MS4wLjABAAAAWo9vAvyTzp3sb2-krZmkriyZuGbWt-p4togQvkClUpj",
          "username": "weekend_lin",
          "name": "小林的周末",
          "avatar_url": "https://p3-pc.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-avt-0015_ec931a72ca043f30fa7e.jpeg",
          "followers": 2525
        },
        "metrics": {
          "likes": 96505,
          "comments": 2219,
          "shares": 60467,
          "favorites": 7038
        },
        "images": null,
        "hashtags": ["户外生活", "好物分享"]
      },
      // … 6 more
    ]
  },
  "page": {
    "next_cursor": "c1.ts-YHxldZuVXCxH6Gev5iQGlxtlGILU8V8n9tjjp",
    "cursor_expires_at": "2026-10-12T20:01:55.000Z",
    "has_more": true,
    "returned": 7
  },
  "warnings": [],
  "meta": {
    "capability": "douyin.videos.search",
    "result_status": "complete",
    "fetched_at": "2026-10-12T19:01:55.000Z",
    "cached": false,
    "replayed": false,
    "unavailable": {
      "metrics.views": "capability",
      "metrics.reposts": "platform",
      "author.verified": "capability",
      "mentions": "capability",
      "post_id": "platform",
      "parent_id": "platform",
      "root_id": "platform",
      "is_pinned": "capability"
    },
    "billing": {
      "amount": "0.02",
      "currency": "USD",
      "balance_after": "9.98"
    }
  }
}
```

### Step 2: Douyin video comments

Put the video ID into `id` and get up to 20 comments a page. For the next page, call again with the answer's `page.next_cursor` as `cursor`. Each comment's `id` and `post_id`, with its reply count in `metrics.comments`, go into the next step. ([Douyin video comments](https://dataxapi.com/apis/douyin/videos/comments/list/), $0.0020 / a call)

cURL

```bash
curl -G "https://api.dataxapi.com/v1/douyin/videos/comments/list" \
  --data-urlencode "id=7694940173372575014" \
  -H "Authorization: Bearer $DATAXAPI_API_KEY"
```

Python

```python
from dataxapi import DataXAPI

dx = DataXAPI()  # reads DATAXAPI_API_KEY
result = dx.douyin.videos.comments.list(id="7694940173372575014")
print(result["data"]["items"])
```

TypeScript

```typescript
import { DataXAPI } from "@dataxapi/sdk";

const dx = new DataXAPI(); // reads DATAXAPI_API_KEY
const result = await dx.douyin.videos.comments.list({ id: "7694940173372575014" });
console.log(result.data.items);
```

CLI

```bash
dataxapi call douyin.videos.comments.list id=7694940173372575014
```

Recorded response: From a response recorded 2026-10-10 13:56 UTC. Names, text and IDs are examples, and so are the links: none is the recorded one (the page shows no one's personal data); the figures are as recorded. Long lists are cut. The request ID, cursor and balance are made up.

```jsonc
{
  "code": "ok",
  "request_id": "d42da88d-b7ed-4b0d-9190-4b171bfc73ad",
  "data": {
    "items": [
      {
        "id": "7544703737319021316",
        "text": "拍得好舒服，看了好几遍",
        "published_at": "2026-10-10T07:45:43.000Z",
        "author": {
          "id": "MS4wLjABAAAASYaIbhAX0MPyFQ_-aWJ7QWUFF8a5fMOppwdnFl0eOFd",
          "username": "nanfeng_0721",
          "name": "南边的风",
          "avatar_url": "https://p3-pc.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-avt-0015_ec3a5fcd08ca5afb5397.jpeg"
        },
        "metrics": { "likes": 8622, "comments": 1 },
        "post_id": "7654977487690830406",
        "parent_id": null,
        "root_id": null
      },
      // … 19 more
    ]
  },
  "page": {
    "next_cursor": "c1.WJBi7NXZjb_3e9vNCUTP2jkcLJBy9Nk7njwbaUrK",
    "cursor_expires_at": "2026-10-10T14:56:58.000Z",
    "has_more": true,
    "returned": 20
  },
  "warnings": [],
  "meta": {
    "capability": "douyin.videos.comments.list",
    "result_status": "complete",
    "fetched_at": "2026-10-10T13:56:58.000Z",
    "cached": false,
    "replayed": false,
    "unavailable": { "url": "platform" },
    "billing": {
      "amount": "0.002",
      "currency": "USD",
      "balance_after": "9.998"
    }
  }
}
```

### Step 3: Douyin comment replies

For a comment with many replies, put its `id` into `id` and its `post_id` into `post_id` to get the replies under it, up to 20 a page, paged the same way as the comments. ([Douyin comment replies](https://dataxapi.com/apis/douyin/comments/replies/list/), $0.0020 / a call)

cURL

```bash
curl -G "https://api.dataxapi.com/v1/douyin/comments/replies/list" \
  --data-urlencode "id=7655660369926603557" \
  --data-urlencode "post_id=7655283400210664719" \
  -H "Authorization: Bearer $DATAXAPI_API_KEY"
```

Python

```python
from dataxapi import DataXAPI

dx = DataXAPI()  # reads DATAXAPI_API_KEY
result = dx.douyin.comments.replies.list(id="7655660369926603557", post_id="7655283400210664719")
print(result["data"]["items"])
```

TypeScript

```typescript
import { DataXAPI } from "@dataxapi/sdk";

const dx = new DataXAPI(); // reads DATAXAPI_API_KEY
const result = await dx.douyin.comments.replies.list({ id: "7655660369926603557", post_id: "7655283400210664719" });
console.log(result.data.items);
```

CLI

```bash
dataxapi call douyin.comments.replies.list id=7655660369926603557 post_id=7655283400210664719
```

Recorded response: From a response recorded 2026-10-12 18:59 UTC. Names, text and IDs are examples, and so are the links: none is the recorded one (the page shows no one's personal data); the figures are as recorded. Long lists are cut. The request ID, cursor and balance are made up.

```jsonc
{
  "code": "ok",
  "request_id": "c6f871dc-f926-49f9-b383-d8541be44b5f",
  "data": {
    "items": [
      {
        "id": "7281542808761380598",
        "text": "第三个建议太实用了！",
        "published_at": "2026-06-26T11:50:22.000Z",
        "author": {
          "id": "MS4wLjABAAAA_p_ZcarAlfQSUXheWfou6Urggj6nSw5RWztBuPbTGeE",
          "username": "nanfeng_0721",
          "name": "南边的风",
          "avatar_url": "https://p3-pc.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-avt-0015_40a6ed26a1d5485803fe.jpeg"
        },
        "metrics": { "likes": 2308 },
        "post_id": "7235042234252823683",
        "parent_id": "7808984148800124107",
        "root_id": "7288185174927937448"
      },
      // … 19 more
    ]
  },
  "page": {
    "next_cursor": "c1.p2cQ0s_d9x_R4AqMMpd5I1gJ1SR4-Ep_ZmuWuU3t",
    "cursor_expires_at": "2026-10-12T19:59:36.000Z",
    "has_more": true,
    "returned": 20
  },
  "warnings": [],
  "meta": {
    "capability": "douyin.comments.replies.list",
    "result_status": "complete",
    "fetched_at": "2026-10-12T18:59:36.000Z",
    "cached": false,
    "replayed": false,
    "unavailable": { "url": "platform", "metrics.comments": "platform" },
    "billing": {
      "amount": "0.002",
      "currency": "USD",
      "balance_after": "9.998"
    }
  }
}
```

## What the example costs

One page of search results (8 videos), the first page of comments under each, then the replies under 3 of those comments

| Endpoint | Calls | Price | Subtotal |
| --- | --- | --- | --- |
| [Douyin video search](https://dataxapi.com/apis/douyin/videos/search/) | 1 | $0.0200 | $0.0200 |
| [Douyin video comments](https://dataxapi.com/apis/douyin/videos/comments/list/) | 8 | $0.0020 | $0.0160 |
| [Douyin comment replies](https://dataxapi.com/apis/douyin/comments/replies/list/) | 3 | $0.0020 | $0.0060 |
| Total | 12 |  | $0.0420 |

Prices are the prices in force when this page was built. A failed call, and an object that does not exist, cost nothing.

## In your AI (MCP)

Connect DataXAPI to your AI client once. Then say what you want; the agent finds these endpoints, checks the price and calls them on your balance.

Say: Search Douyin for 露营 (camping), get the first page of comments under the top 8 videos, then the replies under the 3 comments with the most replies, as one table.

What the agent sends to the call tool: 

```json
{
  "capability": "douyin.videos.search",
  "query": "露营",
  "idempotency_key": "<a new UUID>"
}
```

[About the MCP server](https://dataxapi.com/mcp/)

## With a Skill

The Comments and word of mouth Skill does this job as a ready-made task, under a spending cap. “What are people praising and complaining about under this post?” Its example run: 3 calls, at most $0.0060. [Comments and word of mouth](https://dataxapi.com/skills/comments/)

## Good to know

- Comments and replies come up to 20 a page. A `page.next_cursor` is good for an hour: use it within that time to go on.
- A video that does not exist cannot be told from a video without comments: both return an empty result, and an empty result is charged like a page with data. The replies endpoint works the same way.
- Search results carry no view count (`metrics.views`) and comments have no link of their own (`url`); `meta.unavailable` lists them. For the commenter's IP location, add `view=full` and read `ext.ip_location`.

## Endpoints

- [Douyin video search](https://dataxapi.com/apis/douyin/videos/search/)
- [Douyin video comments](https://dataxapi.com/apis/douyin/videos/comments/list/)
- [Douyin comment replies](https://dataxapi.com/apis/douyin/comments/replies/list/)

## More about Douyin

- [Douyin API](https://dataxapi.com/apis/douyin/)
- [How to get Douyin keyword trends in bulk](https://dataxapi.com/guides/douyin-keyword-trends/)
- [How to look up a Douyin creator's Xingtu rate card](https://dataxapi.com/guides/douyin-xingtu-creator-rates/)
- [How do I export Douyin data?](https://dataxapi.com/answers/export-douyin-data/)

---

Catalog revision c48ce454ae6c4c65. [HTML version](https://dataxapi.com/guides/douyin-video-comments/)
