Xiaohongshu (RedNote) Comments Scraper - Reply Threads
Pricing
from $4.99 / 1,000 comments
Xiaohongshu (RedNote) Comments Scraper - Reply Threads
Extract every Xiaohongshu (RedNote) comment with nested reply threads, author profile, avatar URL, IP city, like counts, attached pictures, and @-mentions. Paste note URLs or 24-character note IDs. 30+ fields per comment, export to JSON, CSV, or Excel.
Pricing
from $4.99 / 1,000 comments
Rating
0.0
(0)
Developer
Zen Studio
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
3 hours ago
Last modified
Categories
Share
RedNote (Xiaohongshu) Comments Scraper | Nested Replies, Author Profiles, IP City (2026)
30+ fields per comment, every upstream field preserved — author profile with avatar URL, IP city, like counts, attached pictures, @-mentions, and the full nested reply tree under every comment on any Xiaohongshu (小红书) note.

| Zen Studio · Chinese-platform suite • RedNote (小红书), Douyin (抖音), Xigua (西瓜视频) | ||||
|
➤ You are here |
500 notes / 30s, 24 fields |
Keyword + filters, 60+ fields |
50+ languages, .srt + MP4 |
Keyword + comments + MP4 |
Copy to your AI assistant
zen-studio/rednote-comments-scraper on Apify. Pulls every top-level comment + nested reply on any Xiaohongshu (小红书) note with author profile, avatar URL, IP city, and full target_comment refs. Call ApifyClient("TOKEN").actor("zen-studio/rednote-comments-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. noteUrls accepts share URLs or bare 24-char hex note IDs. Full spec: GET https://api.apify.com/v2/acts/zen-studio~rednote-comments-scraper/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Token: https://console.apify.com/account/integrations
Key Features
- 30+ fields per comment — author profile, avatar URL, public
red_idhandle, IP city, like counts, @-mentions, attached pictures, pinned tags, the entiretarget_commentreference for every reply - Nested reply threads — every top-level comment carries a
replies[]array; cap thread depth withmaxRepliesPerComment(set to0for the entire tree) - No headless browser, no proxy needed — paste note URLs or 24-character note IDs, hit Start
- Three sort orders —
latest,recommended,most_liked - Free tier — 5 lifetime runs, ~20 comments from the first note, no credit card
How to Scrape Xiaohongshu Comments
Basic — single note, default settings
{"noteUrls": ["https://www.xiaohongshu.com/discovery/item/69db721a00000000220290a8"]}
Multiple notes, capped budget
{"noteUrls": ["https://www.xiaohongshu.com/discovery/item/69db721a00000000220290a8","69dc63550000000015004853"],"maxCommentsPerNote": 200,"maxRepliesPerComment": 10}
Top-voted threads only, no replies
{"noteUrls": ["69db721a00000000220290a8"],"sortBy": "most_liked","includeReplies": false,"maxCommentsPerNote": 50}
Full thread tree for one viral comment
{"noteUrls": ["69db721a00000000220290a8"],"maxCommentsPerNote": 1,"maxRepliesPerComment": 0}
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
noteUrls | array | required | One or more Xiaohongshu note links or bare 24-character note IDs. Each note runs independently. |
sortBy | enum | latest | latest, recommended, or most_liked |
includeReplies | boolean | true | When true, every comment carries a nested replies[] array |
maxRepliesPerComment | integer | 5 | Replies to fetch under each top-level comment. 0 = unlimited |
maxCommentsPerNote | integer | 0 | Top-level comments per note. 0 = all |
What Data Can You Extract from Xiaohongshu Comments?
Every dataset row is one top-level comment with its full reply thread nested inside.
Comment fields:
id,note_id,url_to_note,content,timelike_count,sub_comment_count,liked,ip_locationpictures(when the comment has attached images)show_tags,show_tags_v2(includesPinned,Author likedlabels)at_users,hash_tags,media_source_typesort_by,comment_index_in_note
Author profile (user):
userid,red_id(public XHS handle),nicknameimages(avatar URL),ai_agent,level
Each nested reply (replies[]):
- All the comment fields above (where applicable)
target_commentwith the parent'sid,status, and fulluserprofile
Output Example
{"id": "69dc63550000000015004853","note_id": "69db721a00000000220290a8","url_to_note": "https://www.xiaohongshu.com/discovery/item/69db721a00000000220290a8","content": "千万不要点进作者的主页,不然就出不来了[捂脸R][捂脸R]","time": 1776051029,"ip_location": "Shanghai","like_count": 119,"sub_comment_count": 11,"liked": false,"collected": false,"user": {"userid": "ae72f2a6105526a05fb17d369ee6e","red_id": "27209397831","nickname": "晚风轻吟","images": "https://sns-avatar-qc.xhscdn.com/avatar/1040g2jo31uu4q7413q005qca0u389c1cvfo51i0?imageView2/2/w/120/format/jpg","ai_agent": false,"level": { "image": "" },"current_user": "false","additional_tags": {}},"at_users": [],"show_tags": [],"show_tags_v2": [{ "text": "Pinned", "type": "user_top", "pos": "cmt_bottom", "style_id": "red" }],"pictures": null,"hash_tags": null,"media_source_type": null,"sub_comment_cursor": "{\"cursor\":\"69dc6a7d000000001500ab19\",\"index\":1}","replies": [{"id": "69dc6a7d000000001500ab19","content": "不信你的话,点进去第一反应就是咽了几口口水[暗中观察R]","time": 1776052862,"ip_location": "Guangdong","like_count": 93,"liked": false,"user": {"userid": "a651518b161bd8d20adb86abd4798","red_id": "4646143817","nickname": "八方来财","images": "https://sns-avatar-qc.xhscdn.com/avatar/1040g2jo31q83819h7u005pdi1p9kpa9hcpnh30g?imageView2/2/w/120/format/jpg","ai_agent": false},"target_comment": {"id": "69dc63550000000015004853","status": 4,"user": {"userid": "ae72f2a6105526a05fb17d369ee6e","red_id": "27209397831","nickname": "晚风轻吟","images": "https://sns-avatar-qc.xhscdn.com/avatar/1040g2jo31uu4q7413q005qca0u389c1cvfo51i0?imageView2/2/w/120/format/jpg"}},"at_users": [],"show_tags": [],"show_tags_v2": [{ "text": "Author liked", "type": "author_liked" }]},{"id": "69dc736a000000001500a5a1","content": "果然 不关注都出不来[笑哭R]","time": 1776055146,"ip_location": "Beijing","like_count": 2,"user": {"userid": "6539e3ce000000000d006d07","red_id": "4583774467","nickname": "熙熙大王","images": "https://sns-avatar-qc.xhscdn.com/avatar/1040g2jo31iojfqsd1a605p9psf738r870uj84a8?imageView2/2/w/120/format/jpg"},"target_comment": {"id": "69dc63550000000015004853","user": { "userid": "698a0786000000002100b02c", "nickname": "晚风轻吟" }},"show_tags": ["author_liked"]}// ... 3 more replies],"sort_by": "latest","comment_index_in_note": 0,"status": 4,"score": 10000000,"hidden": false,"downvoted": false,"share_strategy": 0,"comment_type": 0,"translation_strategy": 9,"show_type": "common","relatable_to_note": false,"biz_label": { "product_review": false, "group_invite": "false", "rich_text": "unknown" },"track_id": "interaction-service.local","friend_liked_msg": "","sub_comments": [// raw upstream `sub_comments` inline (mirrors the first entry of `replies`)]}
Advanced Usage
Cap cost on a viral note
{ "noteUrls": ["69db721a00000000220290a8"], "maxCommentsPerNote": 100, "maxRepliesPerComment": 3 }
Bulk-collect comments from a known set of notes
{"noteUrls": ["69db721a00000000220290a8","69dc63550000000015004853","69dcf76e000000003501618e"],"sortBy": "most_liked","maxCommentsPerNote": 50}
IP-city sentiment study — top comments only
{ "noteUrls": ["69db721a00000000220290a8"], "sortBy": "most_liked", "includeReplies": false, "maxCommentsPerNote": 500 }
Pricing — Pay Per Event (PPE)
$5.99 per 1,000 comments. Each comment counts as one billable result — both top-level comments and nested replies.
| Event | Per call | Per 1,000 |
|---|---|---|
| Comment result (top-level or nested reply) | $0.00599 | $5.99 |
Free tier: 5 lifetime runs, ~20 comments from the first note, replies off.
FAQ
Which note URL formats are accepted?
Full share URLs (/discovery/item/<id> or /explore/<id>, with or without xsec_token query params) and bare 24-character hex IDs.
Why does my dataset have fewer rows than I expected?
Each row is one top-level comment, with the full reply tree embedded inside its replies[] array. If you ran with maxCommentsPerNote: 50, you get up to 50 rows — but the total billed comments include every nested reply too.
What's IP location?
Xiaohongshu attaches a coarse geographic label to each comment (province or city, e.g. Beijing, Shanghai, Guangdong). Roughly 70% of top-level comments and 50% of replies carry it.
Are author avatars included?
Yes — user.images on every comment and reply is a direct CDN URL to the author's avatar.
Can I get the full reply tree under one comment?
Yes. Set maxRepliesPerComment: 0 and target the comment by pinning its note (maxCommentsPerNote: 1) — the scraper paginates all replies until the upstream cursor exhausts.
What sort orders are supported?
latest (newest first, the Xiaohongshu app default), recommended (curated relevance), most_liked (by like count).
Can I detect pinned comments?
Yes — show_tags_v2 carries a { "type": "user_top", "text": "Pinned" } entry on the pinned comment.
Does the actor follow @-mentions?
The at_users array on each comment lists the mentioned users with user_id and nickname. The scraper does not recursively fetch their profiles.
What happens if a note has comments disabled or is removed? You'll get zero comments for that note ID and the run continues with the next note.
How fresh is the data? Live from Xiaohongshu at run time — no cache.
Support
- Bugs: Issues tab
- Features: Issues tab
Legal Compliance
Extracts publicly available data. Users must comply with Xiaohongshu's terms and data protection regulations (GDPR, CCPA).
Pull every top-level comment and nested reply on any Xiaohongshu (小红书) note with author profile, avatar URL, IP city, like counts, and the full target_comment reference for each reply.