Weibo(微博)リポスト API とリポスト連鎖の遡及

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

要点

Weiboの投稿の広がりは 2 種類のタスクで把握できます。POST /weibo/reposts/task は 1 件の投稿のリポストを収集し、各リポストレコードには転載元を指す parent_id と、投稿者、本文、時刻、エンゲージメント数、感情ラベルが含まれます(1 ページ最大 100 件)。POST /weibo/repost/parent/task は逆方向で、1 件のリポストから親へのリンクをたどって元投稿へ遡ります(既定 3 階層、最大 10)。未保存の親投稿は自動で取得し、DONE または PARTIAL になるとそれまでに取得できた連鎖を、起点の投稿から元投稿の順に返します。データはWeiboで公開されているコンテンツをウェブクローラーで収集したものです。

主な用途

  • 誰がいつ投稿を拡散し、どのリポストがさらに反応を集めたかを把握する。
  • 広く出回っているリポストを、引用する前に元投稿へ向けて遡って確認する。
  • 広報や研究のために、メッセージがアカウント間をどう移動したかを整理する。

エンドポイント

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

メソッドパス説明
POST /weibo/reposts/task 投稿 URL からリポスト収集タスクを作成します。
GET /weibo/reposts/task/{task_id} リポストタスクをポーリングします。DONE になると parent_id 付きのリポストを返します。
POST /weibo/repost/parent/task リポストから上位へ連鎖を遡ります。未保存の上位投稿は自動で取得します。
GET /weibo/repost/parent/task/{task_id} リポスト連鎖タスクをポーリングします。DONE または PARTIAL でその時点までの連鎖と投稿数を返します。

リクエストパラメータ

POST /weibo/reposts/task

パラメータ位置型必須既定値/指定可能な値説明
post_url body string はい リポストを収集したいWeiboの投稿 URL。

GET /weibo/reposts/task/{task_id}

パラメータ位置型必須既定値/指定可能な値説明
task_id path string はい タスク作成時に返されたタスク ID。
page query integer — 1 ページ番号(1 から)。
pageSize query integer — 100 1 ページあたりのリポスト数(最大 100)。

POST /weibo/repost/parent/task

パラメータ位置型必須既定値/指定可能な値説明
post_url body string はい 遡りを始めるリポストの URL。
depth body integer — 3 (max 10) リポスト連鎖を遡る階層数。

GET /weibo/repost/parent/task/{task_id}

パラメータ位置型必須既定値/指定可能な値説明
task_id path string はい タスク作成時に返されたタスク ID。

レスポンスのフィールド

データフィールドエンドポイント
リポスト id, parent_id, url, author, author_id, content, datetime, tm, like_count, comment_count, share_count, sentiment, region GET /weibo/reposts/task/{task_id}
リポスト連鎖(起点の投稿から元投稿へ) status, depth, post_url, task, data GET /weibo/repost/parent/task/{task_id}

コード例

curl:タスクを作成

curl -X POST https://api.infominer.io/api/v2/weibo/reposts/task \
  -H "auth-header: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"post_url": "https://m.weibo.cn/detail/0000000000000001"}'

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

curl "https://api.infominer.io/api/v2/weibo/reposts/task/$TASK_ID?page=1&pageSize=100" \
  -H "auth-header: YOUR_API_KEY"

curl:リポスト連鎖を遡る

curl -X POST https://api.infominer.io/api/v2/weibo/repost/parent/task \
  -H "auth-header: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"post_url": "https://m.weibo.cn/detail/0000000000000201", "depth": 5}'

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}/weibo/reposts/task",
    headers=HEADERS,
    json={
        "post_url": "https://m.weibo.cn/detail/0000000000000001",
    },
    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}/weibo/reposts/task/{task['id']}",
        headers=HEADERS,
        params={
            "page": 1,
            "pageSize": 100,
        },
        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["parent_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": 1,
  "data": [
    {
      "id": "0000000000000201",
      "parent_id": "0000000000000001",
      "url": "https://m.weibo.cn/detail/0000000000000201",
      "author": "sample_user_3",
      "author_id": "0000000000000003",
      "content": "收藏了,下次去的时候试试 //@sample_user_1: 周末在巷子里的咖啡店试了新豆子",
      "datetime": "2026-06-10 14:00:00",
      "tm": 1781071200,
      "like_count": 2,
      "comment_count": 0,
      "share_count": 0,
      "sentiment": "Positive"
    }
  ]
}

制限と注意点

  • リポストは 1 ページ最大 100 件で読み取ります。
  • リポスト連鎖の深さは既定 3、最大 10 です。親へのリンクがなくなるか深さの上限に達すると止まるため、元投稿に必ず到達するとは限りません。
  • 連鎖タスクは PARTIAL で終わることがあり、その場合はそれまでに取得できた投稿を返し、depth がその件数を示します。
  • リポスト連鎖のポーリングにはページングのパラメータはありません。
収集方法:各プラットフォームで公開されているコンテンツをウェブクローラーで収集しています。ご利用目的に適するかどうかは、用途と法域に応じて買い手側の法務部門でご判断ください。収集元と収集方法の説明はご提供できます。

ほかの Weibo(微博) API ページ

トライアルの申し込み

下の申込フォームに Weibo と明記し、追跡したいキーワード(中国語、または翻訳購読用の英語)、コメント・リポスト・リポスト連鎖の要否、想定データ量をお知らせください。範囲を確認し、トライアルと API キーの進め方についてご連絡します。

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

申込フォームに記入する

よくある質問

リポストタスクとリポスト連鎖タスクの違いは?
リポストタスクは下方向で、1 件の投稿に付いたリポストを収集します。リポスト連鎖タスクは上方向で、1 件のリポストから親へのリンクをたどって元投稿へ遡ります。
リポスト連鎖は必ず元投稿に到達しますか?
いいえ。親へのリンクがなくなるか深さの上限(既定 3、最大 10)に達すると止まり、PARTIAL のタスクはそれまでに取得できた投稿のみを返します。
リポストを英語で取得できますか?
英語翻訳の購読キーワードの範囲であれば、POST /weibo/translate/reposts で元投稿の post_id を指定して翻訳済みのリポストを取得できます。
データはどのように収集していますか?Weiboの公式 API ですか?
Weiboで公開されているコンテンツをウェブクローラーで収集しています。当社はWeiboと提携しておらず、Weibo自身が提供する API ではありません。ご利用目的に適するかどうかは、用途と法域に応じて買い手側の法務部門でご判断ください。収集元と収集方法の説明はご提供できます。