Answers

Why does Xiaohongshu search stop after about 200 notes per keyword, and how do I get more?

Short answer

The ceiling is on Xiaohongshu's side: its search only serves a limited number of pages per query, so every scraper and API hits it, okdata included. To cover more, split the topic into narrower keywords and run each with more than one sort order, deduplicating by note ID; at $0.02 a page, 20 keyword and sort combinations of 5 pages each cost $2.00.

You search "sunscreen" expecting thousands of notes, and the tool stops at roughly 200 to 220. Switching scrapers does not help; people report the same number with every open-source client. That is because Xiaohongshu itself stops handing out pages for a query after a certain depth. No API can make it return results it does not serve, and we will not pretend otherwise: when Xiaohongshu stops, page.has_more turns false.

What you can change is how many different queries you ask.

Widen the net

With Xiaohongshu note search:

  • Narrower keywords. "sunscreen" becomes "sunscreen oily skin", "sunscreen for kids", "sunscreen 50ml review", brand names, ingredients. Each is a fresh query with its own result depth.
  • Several sort orders. general, latest and popular return overlapping but different sets.
  • Note type. type=video and type=image split the pool again.
  • Deduplicate by id. Overlap is normal; count unique notes, not rows.
  • Repeat over time. With sort=latest, running daily collects new notes as they appear, so a month of daily runs builds a far larger set than one big crawl.

Budget it

Plan Calls Cost
1 keyword, pages until it stops (about 10) 10 $0.20
10 keywords × 2 sorts × 5 pages 100 $2.00
10 keywords, latest, 1 page daily for 30 days 300 $6.00

Example

for kw in "防晒 油皮" "防晒 儿童" "防晒霜 测评"; do
  for s in general latest popular; do
    curl -s -G "https://api.okdata.online/v1/xiaohongshu/notes/search" \
      -H "Authorization: Bearer $OKDATA_API_KEY" \
      --data-urlencode "query=$kw" -d "sort=$s" -d "fields=id,title,metrics.likes" >> notes.jsonl
    echo >> notes.jsonl
  done
done

Then deduplicate on id in your notebook or sheet.

Also worth knowing

  • Results can differ from what you see in the app, which personalizes search for each logged-in user.
  • Each page is a separate charge, so cap pages per query; the last pages of a query tend to add the fewest new notes.
  • Engagement counts in search results are enough for ranking. Fetch note detail only for notes you will read.

Is a bigger dataset available anywhere?

Not from public search. Xiaohongshu's official channels, such as its open platform and the PGY creator marketplace, serve merchants and advertisers and do not offer bulk keyword exports. For academic or market research needing a large sample, the keyword-splitting approach above is the honest path. The content research page shows how to plan keyword sets.

Updated