小紅書(RED)ノート検索 API
2026-10-25 時点の仕様スナップショットに基づく
要点
POST /xhs/search/task は、1 つのキーワードで小紅書(RED)の検索結果を収集する非同期タスクを作成します。start_date、end_date、max_pages で範囲を絞れます。GET /xhs/search/task/{task_id} でポーリングし、DONE になると同じレスポンスにノート(data)と total_count が含まれ、1 ページ最大 100 件で読み取れます。サンプルでは各ノートに URL、mblogid、投稿者、本文、時刻、メタデータタグ、いいね・コメント・シェア数が含まれます。小紅書のエンドポイントはすべて xhs の略称を使います。データは小紅書で公開されているコンテンツをウェブクローラーで収集したものです。
主な用途
- 美容、ファッション、旅行、グルメなどのライフスタイル分野で、ユーザーが製品をどう評価・推薦しているかを調べる。
- ブランドや競合に触れたノートを集め、どの製品や訴求が話題になっているかを見る。
- 詳しく読むべきノートを選び、コメント API でそのコメントを収集する。
エンドポイント
Base URL は https://api.infominer.io/api/v2 です。API キーは auth-header リクエストヘッダーで送信します。
| メソッド | パス | 説明 |
|---|---|---|
| POST | /xhs/search/task |
ノートのキーワード検索タスクを作成します。期間と最大取得ページ数を指定できます。 |
| GET | /xhs/search/task/{task_id} |
ノート検索タスクをポーリングします。DONE になるとノートと total_count を 1 ページ最大 100 件で返します。 |
リクエストパラメータ
POST /xhs/search/task
| パラメータ | 位置 | 型 | 必須 | 既定値/指定可能な値 | 説明 |
|---|---|---|---|---|---|
keyword |
body | string | はい | 検索キーワード。 | |
end_date |
body | string | — | この日付より新しい投稿は収集しません(YYYY-MM-DD)。 | |
max_pages |
body | integer | — | クロールする検索結果ページ数の上限。 | |
start_date |
body | string | — | この日付より古い投稿に達した時点で収集を止めます(YYYY-MM-DD)。 |
GET /xhs/search/task/{task_id}
| パラメータ | 位置 | 型 | 必須 | 既定値/指定可能な値 | 説明 |
|---|---|---|---|---|---|
task_id |
path | string | はい | タスク作成時に返されたタスク ID。 | |
page |
query | integer | — | 1 |
ページ番号(1 から)。 |
pageSize |
query | integer | — | 100 |
1 ページあたりのノート数(最大 100)。 |
レスポンスのフィールド
| データ | フィールド | エンドポイント |
|---|---|---|
| ノート(サンプルより) | url, mblogid, author, author_id, content, tm, metadata_tags, like_count, comment_count, share_count | GET /xhs/search/task/{task_id} |
コード例
curl:タスクを作成
curl -X POST https://api.infominer.io/api/v2/xhs/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/xhs/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}/xhs/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}/xhs/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": "xhs_note",
"platform": "rednote",
"url": "https://www.xiaohongshu.com/explore/000000000000000000000001",
"mblogid": "000000000000000000000001",
"content": "换季之后我把早晚的护肤步骤简化成四步,记录一下这个月的肤况 #护肤日常",
"author": "sample_user_1",
"author_id": "0000000000000001",
"tm": 1781056800,
"metadata_tags": [
"护肤日常",
"换季保养"
],
"like_count": 120,
"comment_count": 14,
"share_count": 6
},
{
"source": "xhs_note",
"platform": "rednote",
"url": "https://www.xiaohongshu.com/explore/000000000000000000000002",
"mblogid": "000000000000000000000002",
"content": "夜间保湿面膜的使用心得,敏感肌可以先小范围试用",
"author": "sample_user_2",
"author_id": "0000000000000002",
"tm": 1781060400,
"metadata_tags": [
"保湿",
"敏感肌"
],
"like_count": 48,
"comment_count": 5,
"share_count": 2
}
]
}
制限と注意点
- 検索結果は 1 ページ最大 100 件で読み取ります。
- start_date と end_date(YYYY-MM-DD)で収集範囲を区切ります。
- 遡れる期間、ノート数、更新頻度はプロジェクトの範囲に応じて確認します。
ほかの 小紅書(RED) API ページ
- ノート検索
- コメントと返信
- ユーザータイムライン
トライアルの申し込み
下の申込フォームに小紅書と明記し、検索したいキーワードやカテゴリー、コメントと第 2 階層の返信の要否、想定データ量をお知らせください。範囲を確認し、トライアルと API キーの進め方についてご連絡します。
フォームにご記入のうえ、トライアルをお申し込みください。担当者が範囲を確認のうえ、トライアルと連携の進め方をご返信します。
申込フォームに記入するよくある質問
- RED、RedNote と小紅書は同じものですか?
- はい。小紅書(シャオホンシュー)はアプリの中国語名で、RED や RedNote とも呼ばれます。この API は小紅書で公開されているノートを対象とし、パスにはすべて xhs を使います。
- 期間を指定してノートを検索できますか?
- 検索タスクの作成時に start_date と end_date(YYYY-MM-DD)を指定してください。遡れる期間はプロジェクトの範囲に応じて確認します。
- 見つけたノートのコメントも取得できますか?
- はい。各ノートの URL を POST /xhs/pushs/task に渡します。小紅書コメント API をご覧ください。
- データはどのように収集していますか?小紅書の公式 API ですか?
- 小紅書で公開されているコンテンツをウェブクローラーで収集しています。当社は小紅書と提携しておらず、小紅書自身が提供する API ではありません。ご利用目的に適するかどうかは、用途と法域に応じて買い手側の法務部門でご判断ください。収集元と収集方法の説明はご提供できます。