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 ではありません。ご利用目的に適するかどうかは、用途と法域に応じて買い手側の法務部門でご判断ください。収集元と収集方法の説明はご提供できます。