Xiaohongshu (RedNote) comments API: the top comments and their replies from a note link — what you get, what you don't
Short answer: Xiaohongshu has no public comments endpoint, and the web page only expands comments after a login. The share link a note's author copies from the app (the one carrying xsec_token) opens a public page that embeds the note's top comments — at most 5, each with up to 3 replies. LinkDigest reads them in the same request as the note: no Xiaohongshu account, no cookies, no comments endpoint. That is also the limit: you get the top comments and reply excerpts, never the whole thread, and nothing about who wrote them.
Disclosure: LinkDigest is the author's own service. The numbers below are from a scan of the live digest cache on 2026-11-06 and one public note read on the author's own account.
What a read returns
Each entry in comments:
| field | content |
|---|---|
text |
the comment |
posted_at |
its date |
replies |
how many replies it has |
reply_texts |
up to 3 of those replies, verbatim |
likes |
the like count (the share page often reports 0 — do not sort by it) |
stats.comments is the total the note shows (207 on the example below); comments is the handful the share page embeds (5). The two differ by design.
Measured on 725 notes (2026-11-06)
- 404 of 725 Xiaohongshu notes (56%) carried comments; 321 carried none — no comments yet, comments closed, or the share page did not embed them.
- Of the notes with comments, 274 had exactly 5 — the share page's cap, not ours. The other 130 had 1–4, which is all those notes had.
- Douyin: 584 videos, 0 with comments. Douyin is read through its embed player, which serves no comments; a Douyin link returns the caption, transcript and on-screen text only (Douyin).
One note, one read
A note arguing that video generation will be overtaken by LLMs plus video understanding: 1,360 likes, 1,042 saves, 207 comments. One read (1 credit, a single-image note) returned 7 key points with quotes, 5 top comments with 22, 3, 14, 14 and 3 replies, and 3 reply texts under each — 20 pieces of comment text out of 207. Enough to see what the comment section argues about; not enough for a count.
The call
curl -s -X POST https://linkdigest.dev/api/v1/digest \
-H "Authorization: Bearer ld_live_..." \
-H "Content-Type: application/json" \
-d '{"url": "https://xhslink.com/o/...", "format": "json"}' \
| python3 -c 'import json,sys; d=json.load(sys.stdin); [print(c["replies"], c["text"][:60]) for c in d["comments"]]'
import requests
d = requests.post(
"https://linkdigest.dev/api/v1/digest",
headers={"Authorization": "Bearer ld_live_..."},
json={"url": share_link, "format": "json"},
timeout=300,
).json()
print(d["stats"]) # {'likes': '1360', 'collects': '1042', 'comments': '207', ...}
for c in d["comments"]: # at most 5
print(c["posted_at"], c["replies"], c["text"])
for t in c["reply_texts"]:
print(" ↳", t)
In MCP (Claude Code, Cursor) the same tool, digest_url, returns Markdown with a "Top comments" section. To read a set of notes together, send 10–20 links to /api/v1/digest/batch with synthesis for one comparison.
Conclusions instead of raw comments: insight
Add "insight": true (+1 credit) for a consumer-insight block: audience, selling points, objections and complaints, purchase intent, questions readers asked. Every item is a quote taken from the note or its top comments and checked against them word for word — a sentence with no source is dropped. comments_read says how many comments the insight drew on; 0 means it came from the note alone.
What you do not get
- Not the thread. 5 top comments with 3 replies each is the ceiling. All 207 means logging in and paging the official site, which this service does not do.
- No commenter identity. No nickname, ID, avatar or region — text, date and reply count only.
- No Douyin comments. See the numbers above.
- Bare links do not read.
/explore/<id>withoutxsec_tokenshows Xiaohongshu's "page not found", the same screen as a deleted note (why, with nine link forms measured); copy the link from the app's share sheet. Deleted, private or platform-refused notes come back as errors and are not charged.
Pricing: an image note is 1 credit (up to 6 images, +1 per further 6), a video 1 credit plus 1 per minute; comments are included. insight is +1. A link read once is free to read again. Sign-up gives 10 free credits; after that $5 buys 250 (one-time) or ¥9.9 via Alipay buys 50. Chinese version of this page: 小红书评论提取. Platform notes: Xiaohongshu.