Weibo(微博)キーワード検索 API

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

要点

POST /weibo/search/task は、1 つのキーワードでWeiboの検索結果を収集する非同期タスクを作成します。start_date、end_date、max_pages で範囲を絞れます。GET /weibo/search/task/{task_id} でポーリングし、ステータスが DONE になると同じレスポンスに投稿(data)と total_count が含まれ、1 ページ最大 100 件で読み取れます。サンプルでは各投稿に URL、投稿者、本文、時刻、メタデータタグ、感情ラベル、いいね・コメント・シェア数が含まれます。データはWeiboで公開されているコンテンツをウェブクローラーで収集したものです。

主な用途

  • ブランド、製品カテゴリ、競合についてWeiboでどう語られているかを追い、話題が急増した背景の投稿を取り出す。
  • 市場調査や学術研究のために、テーマごとの投稿を日付付きで集め、エンゲージメント数で並べる。
  • 投稿 URL をコメント API・リポスト API に渡し、1 件の投稿がどう受け止められ、どう広がったかを見る。

エンドポイント

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

メソッドパス説明
POST /weibo/search/task キーワード検索タスクを作成します。期間と最大取得ページ数を指定できます。
GET /weibo/search/task/{task_id} 検索タスクをポーリングします。DONE になると投稿と total_count をページ単位で返します。

リクエストパラメータ

POST /weibo/search/task

パラメータ位置型必須既定値/指定可能な値説明
keyword body string はい 検索キーワード。
end_date body string — この日付より新しい投稿は収集しません(YYYY-MM-DD)。
max_pages body integer — クロールする検索結果ページ数の上限。
start_date body string — この日付より古い投稿に達した時点で収集を止めます(YYYY-MM-DD)。

GET /weibo/search/task/{task_id}

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

レスポンスのフィールド

データフィールドエンドポイント
投稿(サンプルより) url, author, author_id, content, tm, datetime, metadata_tags, sentiment, like_count, comment_count, share_count GET /weibo/search/task/{task_id}

コード例

curl:タスクを作成

curl -X POST https://api.infominer.io/api/v2/weibo/search/task \
  -H "auth-header: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"keyword": "手冲咖啡", "start_date": "2026-06-01", "end_date": "2026-06-30", "max_pages": 3}'

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

curl "https://api.infominer.io/api/v2/weibo/search/task/$TASK_ID?page=1&pageSize=100" \
  -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}/weibo/search/task",
    headers=HEADERS,
    json={
        "keyword": "手冲咖啡",
        "start_date": "2026-06-01",
        "end_date": "2026-06-30",
        "max_pages": 3,
    },
    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/search/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.get("url"), (row.get("content") or "")[:60])

レスポンス例

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

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

{
  "keyword": "手冲咖啡",
  "status": "DONE",
  "total_count": 2,
  "task": {
    "id": "00000000-0000-4000-8000-000000000001",
    "status": "DONE"
  },
  "data": [
    {
      "source": "weiboblog",
      "platform": "weibo",
      "url": "https://m.weibo.cn/detail/0000000000000001",
      "author": "sample_user_1",
      "author_id": "0000000000000001",
      "content": "周末在巷子里的咖啡店试了新豆子,酸度很柔和,推荐给喜欢浅焙的朋友 #手冲咖啡",
      "tm": 1781056800,
      "datetime": "2026-06-10 10:00:00",
      "type": [],
      "metadata_tags": [
        "手冲咖啡"
      ],
      "sentiment": "Positive",
      "like_count": 12,
      "comment_count": 3,
      "share_count": 1
    },
    {
      "source": "weiboblog",
      "platform": "weibo",
      "url": "https://m.weibo.cn/detail/0000000000000002",
      "author": "sample_user_2",
      "author_id": "0000000000000002",
      "content": "整理了三间适合下午工作的咖啡店,插座和座位都在文末清单",
      "tm": 1781060400,
      "datetime": "2026-06-10 11:00:00",
      "type": [],
      "metadata_tags": [
        "咖啡店",
        "下午茶"
      ],
      "sentiment": "Neutral",
      "like_count": 5,
      "comment_count": 0,
      "share_count": 0
    }
  ]
}

制限と注意点

  • 検索結果は 1 ページ最大 100 件で読み取ります。
  • start_date と end_date で収集範囲を区切ります。start_date より古い投稿に達すると収集を止め、end_date より新しい投稿は収集しません。
  • 遡れる期間、タスクあたりの件数、更新頻度はプロジェクトの範囲に応じて確認します。
収集方法:各プラットフォームで公開されているコンテンツをウェブクローラーで収集しています。ご利用目的に適するかどうかは、用途と法域に応じて買い手側の法務部門でご判断ください。収集元と収集方法の説明はご提供できます。

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

トライアルの申し込み

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

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

申込フォームに記入する

よくある質問

英語のキーワードでWeiboを検索できますか?
Weiboの投稿の多くは簡体字中国語で書かれているため、キーワードは通常中国語で指定します。英語で扱いたい場合は、Weibo英語翻訳の購読をご利用ください。英語キーワードを中国語の検索語に変換し、英語の機械翻訳付きで投稿を返します。
1 つの検索タスクで何件取得できますか?
max_pages でクロールするページ数の上限を指定できます。タスクあたりの件数はプロジェクトの範囲に応じて確認します。結果は page と pageSize で 1 ページ最大 100 件ずつ読み取ります。
タスクが失敗した場合は?
ステータスが INIT または RUNNING でなくなるまでポーリングします。DONE ならデータを読み取り、FAILED なら停止して、タスクを作り直すなどの対応をしてください。
データはどのように収集していますか?Weiboの公式 API ですか?
Weiboで公開されているコンテンツをウェブクローラーで収集しています。当社はWeiboと提携しておらず、Weibo自身が提供する API ではありません。ご利用目的に適するかどうかは、用途と法域に応じて買い手側の法務部門でご判断ください。収集元と収集方法の説明はご提供できます。