Answers
How do I export every note from a Xiaohongshu creator's profile?
Short answer
Give the okdata Xiaohongshu account notes endpoint the creator's user ID and follow the cursor; each page of about 20 notes costs $0.02. A creator with 300 notes takes 15 calls, $0.30, and you can stop early once you reach notes you already have.
You want to study a competitor's Xiaohongshu account: which notes took off, how often they post, which topics they repeat. That means every note on the profile in one sheet, with its numbers. Download tools save images but not a clean table, and scrapers often stop after the first screen or collect fewer notes than the profile shows. The account notes endpoint lists them all, page by page, and a short script turns that into a sheet.
The calls
- If you have a share link rather than an ID, call account profile once with
url=; the response gives the useridand the total note count inposts. Axiaohongshu.com/user/profile/<id>link already contains the ID. - Call Xiaohongshu account notes with
id. Each page holds about 20 notes, newest first, with title, type (image or video), cover images, publish time, likes, saves and comment counts. - Pass
page.next_cursorback ascursoruntilpage.has_moreis false.
Cost per creator
| Notes on the profile | Calls | Cost |
|---|---|---|
| 60 | 3 | $0.06 |
| 300 | 15 | $0.30 |
| 1,000 | 50 | $1.00 |
For a weekly refresh, fetch page one only and stop as soon as you see a note ID you already stored: usually $0.02 per creator per week.
Script
import os, requests
URL = "https://api.okdata.online/v1/xiaohongshu/users/notes/list"
HEAD = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
params, rows = {"id": "5f1234567890abcdef123456"}, []
while True:
body = requests.get(URL, headers=HEAD, params=params, timeout=60).json()
rows += [(n["id"], n["title"], n["published_at"], n["metrics"]["likes"], n["metrics"]["favorites"]) for n in body["data"]["items"]]
if not body["page"]["has_more"]:
break
params["cursor"] = body["page"]["next_cursor"]
print(len(rows), "notes")
Gotchas
- The list leaves the author's name out of each note; it is the account you asked for.
meta.unavailablelists those fields. - View counts do not exist publicly on Xiaohongshu, so
metrics.viewsis null. - For the full body text and every image of a note, note detail ($0.02 per note) is the complete source. Use it for the notes you will actually read.
- The public list can end a little short of the profile counter if the creator has hidden or restricted notes.
Alternatives
XHS-Downloader is the better tool if you want the image and video files on disk from a few profiles. MediaCrawler's creator mode works with a logged-in account. For tracking several competitor accounts every week, see competitor monitoring.
Updated