Xiaohongshu (RedNote) note search API

Based on the 2026-10-25 specification snapshot

Quick answer

POST /xhs/search/task starts an asynchronous crawl of Xiaohongshu (RedNote, 小红书) search results for one keyword, optionally bounded by start_date, end_date and max_pages. Poll GET /xhs/search/task/{task_id}; once DONE the same response carries the notes and total_count, up to 100 per page. In the illustrative sample each note has its URL, mblogid, author, content, timestamp, metadata tags and like, comment and share counts. Every Xiaohongshu endpoint uses the xhs abbreviation. Data is collected by web crawlers from content publicly published on Xiaohongshu.

What teams use it for

  • Research how users review and recommend products in beauty, fashion, travel, food and other lifestyle categories.
  • Collect the notes that mention a brand or competitor to see which products and claims come up.
  • Pick the notes worth reading closely and collect their comments with the comments API.

Endpoints

Base URL: https://api.infominer.io/api/v2. Send your API key in the auth-header request header.

MethodPathWhat it does
POST /xhs/search/task Creates a note keyword search task with an optional date range and page limit.
GET /xhs/search/task/{task_id} Polls a note search task; once DONE it returns notes and total_count, up to 100 per page.

Request parameters

POST /xhs/search/task

ParameterInTypeRequiredDefault / allowedDescription
keyword body string Yes Search keyword.
end_date body string No Posts newer than this date are not collected (YYYY-MM-DD).
max_pages body integer No Maximum number of result pages to crawl.
start_date body string No Collection stops at posts older than this date (YYYY-MM-DD).

GET /xhs/search/task/{task_id}

ParameterInTypeRequiredDefault / allowedDescription
task_id path string Yes Task ID returned when the task was created.
page query integer No 1 Page number, starting at 1.
pageSize query integer No 100 Notes per page, max 100.

Response fields

DataFieldsEndpoint
Notes (illustrative sample) url, mblogid, author, author_id, content, tm, metadata_tags, like_count, comment_count, share_count GET /xhs/search/task/{task_id}

Code examples

curl: create the task

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: poll the task by 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): create, poll, read

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 response

Illustrative data written by hand: accounts are sample_user_n and IDs are obviously fake. Fields follow the 2026-10-25 specification snapshot; the sample shows a subset, and the full list is in the table above.

Poll response once the task is DONE (illustrative data)

{
  "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
    }
  ]
}

Limits and notes

  • Search results are read up to 100 per page.
  • start_date and end_date (YYYY-MM-DD) bound the crawl.
  • How far back search can go, note volume and refresh frequency are confirmed per project scope.
Collection: web crawlers collect content publicly published on each platform. Whether this suits your use depends on the purpose and jurisdiction and is for the buyer's legal team to assess; we can provide a description of sources and collection methods.

More Xiaohongshu (RedNote) API pages

Request a trial

In the request form below, mention Xiaohongshu and tell us the keywords or categories to search, whether you need comments and second-layer replies, and the expected volume. We confirm the scope and reply with the arrangements for the trial and API key.

Fill in the form to request a trial. We confirm the scope and reply with trial and integration arrangements.

Fill in the request form

FAQ

Is RedNote the same as Xiaohongshu?
Yes. Xiaohongshu (小红书) is the Chinese name of the app that many international users call RedNote. This API covers notes publicly published on it and uses the xhs prefix in every path.
Can I search notes within a date range?
Pass start_date and end_date (YYYY-MM-DD) when you create the search task. How far back you can go is confirmed per project scope.
Can I get the comments under the notes I find?
Yes. Pass each note URL to POST /xhs/pushs/task; see the Xiaohongshu comments API.
How is the data collected? Is this the official Xiaohongshu API?
By web crawlers, from content publicly published on Xiaohongshu. LargitData is not affiliated with Xiaohongshu and this is not Xiaohongshu's own API. Whether this suits your use depends on the purpose and jurisdiction and is for your legal team to assess; we can provide a description of sources and collection methods.