抖音(Douyin)コメント API

2026-10-25 時点の仕様スナップショットに基づく

要点

POST /douyin/pushs/task に動画 URL を指定すると、その動画のコメントを収集する非同期タスクが作成されます。既定は 50 件で、max_items で上限を指定でき(0 または負の値で件数の上限なし)、get_all=true で既定の上限をなくせます。GET /douyin/pushs/task/{task_id} でポーリングし、タスクが完了すると、その動画の保存済みコメント(以前のクロール分を含む場合があります)を 1 ページ最大 1000 件で返します。ポーリング時の order_type=hot または time で読み取り順を指定できます。各コメントは post_id で動画にひも付きます。第 2 階層の返信は取得できません。データは抖音で公開されているコンテンツをウェブクローラーで収集したものです。

主な用途

  • 製品動画、広告、クリエイターとのコラボ動画に視聴者がどう反応したかを読む。
  • 製品カテゴリに関する視聴者の質問や懸念を集める。
  • キーワード検索の上位動画について、コメントの感情を比較する。

エンドポイント

Base URL は https://api.infominer.io/api/v2 です。API キーは auth-header リクエストヘッダーで送信します。

メソッドパス説明
POST /douyin/pushs/task 動画 URL からコメントタスクを作成します。既定 50 件で、max_items または get_all で調整できます。
GET /douyin/pushs/task/{task_id} 動画の保存済みコメントを 1 ページ最大 1000 件で返します。hot または time の並び順を指定できます。

リクエストパラメータ

POST /douyin/pushs/task

パラメータ位置型必須既定値/指定可能な値説明
post_url body string はい 抖音の動画 URL。
crawl_second_layer body boolean — false false のみ対応。第 2 階層の返信は取得できません。
get_all body boolean — false 既定の 50 件の上限をなくします。max_items を明示した場合はそちらが優先されます。
max_items body integer — 50 収集するコメント数の上限。0 または負の値で件数の上限なし。
order_type body string — 既定 hot; 指定可 hot hot のみ指定できます。読み取り時に保存済みコメントをいいね数順に並べるもので、収集内容は変わりません。

GET /douyin/pushs/task/{task_id}

パラメータ位置型必須既定値/指定可能な値説明
task_id path string はい タスク作成時に返されたタスク ID。
order_type query string — 指定可 hot | time 読み取り時の並び順(任意):hot(いいね数の多い順)または time(新しい順)。省略すると作成時の指定に従います。
page query integer — 1 ページ番号(1 から)。
pageSize query integer — 1000 1 ページあたりのコメント数(最大 1000)。

レスポンスのフィールド

データフィールドエンドポイント
コメント id, post_id, author, author_id, content, push_type, sentiment, tm, tm_crawler, region GET /douyin/pushs/task/{task_id}

コード例

curl:タスクを作成

curl -X POST https://api.infominer.io/api/v2/douyin/pushs/task \
  -H "auth-header: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"post_url": "https://www.douyin.com/video/0000000000000001", "max_items": 500}'

curl:タスク ID でポーリング

curl "https://api.infominer.io/api/v2/douyin/pushs/task/$TASK_ID?page=1&pageSize=1000&order_type=time" \
  -H "auth-header: YOUR_API_KEY"

Python(requests):作成・ポーリング・読み取り

import time
import requests

BASE_URL = "https://api.infominer.io/api/v2"
HEADERS = {"auth-header": "YOUR_API_KEY"}

# 1. Create the task
resp = requests.post(
    f"{BASE_URL}/douyin/pushs/task",
    headers=HEADERS,
    json={
        "post_url": "https://www.douyin.com/video/0000000000000001",
        "max_items": 500,
    },
    timeout=30,
)
resp.raise_for_status()
task = resp.json()

# 2. Poll until the task leaves INIT / RUNNING
for _ in range(120):
    resp = requests.get(
        f"{BASE_URL}/douyin/pushs/task/{task['id']}",
        headers=HEADERS,
        params={
            "page": 1,
            "pageSize": 1000,
            "order_type": "time",
        },
        timeout=30,
    )
    resp.raise_for_status()
    result = resp.json()
    status = result.get("status") or result.get("task", {}).get("status")
    if status not in ("INIT", "RUNNING"):
        break
    time.sleep(15)
else:
    raise SystemExit("task still running; poll it again later")

if status == "FAILED":
    raise SystemExit("task failed")
if status != "DONE":
    print("task ended with status", status, "- results may be incomplete")

# 3. Read the records (use page / pageSize to fetch further pages)
for row in result.get("data", []):
    print(row["post_id"], row["author"], row["content"][:60])

レスポンス例

手作業で作成したサンプルデータです。アカウントは sample_user_n、ID は明らかなダミー値です。フィールドは 2026-10-25 の仕様スナップショットに基づき、サンプルはその一部のみを示しています(全項目は上の表を参照)。

タスクが DONE になった後のポーリングレスポンス(サンプルデータ)

{
  "task": {
    "id": "00000000-0000-4000-8000-000000000001",
    "status": "DONE"
  },
  "total_count": 2,
  "data": [
    {
      "id": "0000000000000101",
      "post_id": "0000000000000001",
      "author": "sample_user_3",
      "author_id": "0000000000000003",
      "tm": 1781065800,
      "tm_crawler": 1781150400,
      "content": "这个做法简单,明天就试",
      "sentiment": "Positive"
    },
    {
      "id": "0000000000000102",
      "post_id": "0000000000000001",
      "author": "sample_user_4",
      "author_id": "0000000000000004",
      "tm": 1781067600,
      "tm_crawler": 1781150400,
      "content": "视频里用的是什么锅?",
      "sentiment": "Neutral"
    }
  ]
}

制限と注意点

  • コメントは動画あたり既定 50 件です。max_items の明示指定が優先され、get_all=true で既定の上限がなくなりますが、ページの安全上限と取得元の状況による制限は残ります。収集が完了しなかった場合は partial=true が付きます。
  • order_type=hot は読み取り時に保存済みコメントをいいね数の多い順に並べるもので、収集したコメントがプラットフォーム上で最もいいねの多いものであることは保証しません。
  • total_count には同じ動画の以前のクロール分が含まれる場合があります。
  • crawl_second_layer は false のみ対応で、第 2 階層の返信は取得できません。
  • コメントは 1 ページ最大 1000 件で読み取ります。
収集方法:各プラットフォームで公開されているコンテンツをウェブクローラーで収集しています。ご利用目的に適するかどうかは、用途と法域に応じて買い手側の法務部門でご判断ください。収集元と収集方法の説明はご提供できます。

ほかの 抖音(Douyin) API ページ

トライアルの申し込み

下の申込フォームに抖音と明記し、キーワードやアカウント、動画あたりに必要なコメント数、動画のダウンロード URL の要否をお知らせください。範囲を確認し、トライアルと API キーの進め方についてご連絡します。

フォームにご記入のうえ、トライアルをお申し込みください。担当者が範囲を確認のうえ、トライアルと連携の進め方をご返信します。

申込フォームに記入する

よくある質問

抖音の動画 1 本あたり何件のコメントを収集できますか?
既定は 50 件です。max_items で上限を変えるか、get_all を true にして既定の上限をなくせますが、ページの安全上限と取得元の状況による制限は残ります。
抖音のコメントへの返信は取得できますか?
現在はできません。crawl_second_layer は false のみ対応です。
post_url にはどの形式の URL を指定しますか?
完全な動画 URL(例:https://www.douyin.com/video/{id})です。仕様の例と同じ形式です。なお動画 URL の解決(POST /douyin/videos)は v.douyin.com の短縮リンクに対応していません。
データはどのように収集していますか?抖音の公式 API ですか?
抖音で公開されているコンテンツをウェブクローラーで収集しています。当社は抖音と提携しておらず、抖音自身が提供する API ではありません。ご利用目的に適するかどうかは、用途と法域に応じて買い手側の法務部門でご判断ください。収集元と収集方法の説明はご提供できます。