Xiaohongshu (RedNot) Comments Scraper
Pricing
from $3.00 / 1,000 xiaohongshu comment scrapeds
Xiaohongshu (RedNot) Comments Scraper
Extract Xiaohongshu (RedNote / 小红书) comment threads and nested replies from public note URLs or note IDs. Returns one flat row per comment or reply with commenter identity, text, likes, IP location, and timestamps. Cookieless; no Xiaohongshu login required.
Pricing
from $3.00 / 1,000 xiaohongshu comment scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 hours ago
Last modified
Categories
Share
Xiaohongshu Comments Scraper
Extract comment threads and nested replies from public Xiaohongshu (RedNote / 小红书 / Little Red Book) notes. Paste a note URL or 24-character note ID and get one flat dataset row per comment or reply: commenter name, profile URL, text, likes, IP 属地, and the timestamp Xiaohongshu shows. No Xiaohongshu login or cookies.
This Actor is built for brand-monitoring teams, China-market researchers, and AI agents that already have a note URL and need the public conversation under it. Use it for comment threads on a known note. For keyword discovery, start with the search sibling linked below.
Best fit for this Actor
- You have public Xiaohongshu note URLs (explore, discovery/item, or profile/note) or
xhslink.comshare links and want the comment thread. - You need flat rows (one comment or reply per item) for spreadsheets, CRM, or an agent, including
parentCommentIdfor replies. - Start with Xiaohongshu Search Scraper when you only have a keyword, then pass each note URL here to collect the comments.
Brand-monitoring workflow: from one viral note to a comment export
A social-listening analyst tracking an official Xiaohongshu governance announcement pastes the public explore URL (with xsec_token) into noteUrls, leaves includeReplies on, and sets maxComments to 50. The run returns commenter names, profile URLs, comment text, like counts, IP cities such as 上海 / 北京, and reply threading. They then schedule the same note URL weekly, compare new commentId values, and export the dataset to CSV for sentiment tagging.
Quick start input
{"noteUrls": ["https://www.xiaohongshu.com/explore/69afda73000000002800b3f2?xsec_token=ABS294BN1RIZ1_yaXpYLmp_VZQ_na4j9mhGzLPMICzCIU="],"maxComments": 5,"includeReplies": true}
maxComments is a run-wide cap that counts top-level comments and nested replies together so an agent can bound spend before calling.
Input reference
| Field | Type | What it controls |
|---|---|---|
noteUrls | array (required) | Explore, discovery/item, user/profile/{user}/{note}, xhslink.com, or bare 24-character note IDs. Prefer URLs that include xsec_token. |
maxComments | integer | Cap on saved rows including replies. Default 50, automated-test prefill 5, max 2000. |
includeReplies | boolean | Save nested replies as their own rows. Default true. |
maxRepliesPerComment | integer | Cap replies under one parent. Default 20. 0 takes every reply currently expanded on the public page. |
What data you receive
Each dataset item is one public comment or nested reply.
| Field | Description |
|---|---|
noteId, noteUrl, resolvedNoteUrl, noteTitle | Source note |
noteCommentCount | Total comments Xiaohongshu reports on the note |
commentId, parentCommentId, isReply, threadDepth, replyToUser | Threading |
commentText | Public comment body |
commenterName, commenterUserId, commenterProfileUrl, commenterAvatar | Commenter identity |
likeCount, replyCount, ipLocation | Engagement and IP 属地 |
createdAt, commentPosition, scrapedAt, provider | Time, rank, provenance |
{"noteId": "69afda73000000002800b3f2","noteUrl": "https://www.xiaohongshu.com/explore/69afda73000000002800b3f2?xsec_token=ABS294BN1RIZ1_yaXpYLmp_VZQ_na4j9mhGzLPMICzCIU=","noteTitle": "关于打击AI托管运营账号的治理公告","commentId": "69b00725000000000c03176a","parentCommentId": null,"isReply": false,"threadDepth": 0,"commentText": "哈哈,终于出手了!","commenterName": "peace","commenterUserId": "5ff81b730000000001002e21","commenterProfileUrl": "https://www.xiaohongshu.com/user/profile/5ff81b730000000001002e21","likeCount": 1000,"ipLocation": "上海","createdAt": "03-10","commentPosition": 1,"provider": "scrapfly"}
You can download the dataset as JSON, CSV, Excel, or HTML from the run's Output tab.
Public-data contract
- Public comments. The Actor reads what Xiaohongshu renders on a public note page: commenter identity, text, likes, IP 属地, and nested replies that are already expanded.
- Share URLs work best. Prefer explore/discovery URLs that include
xsec_token, orxhslink.comshare links. Xiaohongshu often serves an anti-bot bounce for bare note IDs and token-less links. - Visible thread. Rows come from the public comment panel after a bounded scroll.
noteCommentCounttells you how large the thread is;maxCommentscaps what this run saves. - Timestamps stay as shown. Relative strings such as
4小时前or03-10are stored as Xiaohongshu displays them. Empty optional fields are omitted.
Pricing
Pay per event (PPE) plus platform usage. Confirm the live prices on the Actor Pricing tab before a large run — the Pricing tab is the current source of truth.
| Event | What it bills |
|---|---|
apify-actor-start | $0.00005 when the run starts |
comment-scraped | $0.003 per saved comment or reply row |
Example: 1 note, 20 comments (including replies) ≈ $0.00005 + (20 × $0.003) = $0.06005 in PPE, plus platform usage for the fetch. Set maxComments so an agent can forecast the ceiling.
How to run from the API
curl "https://api.apify.com/v2/acts/khadinakbar~xiaohongshu-comments-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"noteUrls":["https://www.xiaohongshu.com/explore/69afda73000000002800b3f2?xsec_token=ABS294BN1RIZ1_yaXpYLmp_VZQ_na4j9mhGzLPMICzCIU="],"maxComments":5,"includeReplies":true}'
Or with ApifyClient:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('khadinakbar/xiaohongshu-comments-scraper').call({noteUrls: ['https://www.xiaohongshu.com/explore/69afda73000000002800b3f2?xsec_token=ABS294BN1RIZ1_yaXpYLmp_VZQ_na4j9mhGzLPMICzCIU=',],maxComments: 5,includeReplies: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Agent prompt card
Scrape public Xiaohongshu (RedNote) comments for this note URL. Use
khadinakbar/xiaohongshu-comments-scraper. PassnoteUrlsas the full explore URL includingxsec_tokenwhen you have it. SetmaxCommentsto the spend ceiling (each row costs $0.003). ReadOUTPUT.outcomeanditemsPushedafter the run:COMPLETEmeans the visible thread was saved,VALID_EMPTYmeans the note has no public comments,INVALID_INPUTmeans the URL was not a note, andUPSTREAM_FAILEDmeans Xiaohongshu blocked the page. Return commenterName, commentText, ipLocation, isReply, parentCommentId, likeCount, and the source noteUrl. This is a read-only public-data scrape with no login side effects.
Best results
- Provide a specific public note URL with
xsec_token, or anxhslink.comshare link, rather than a profile URL or a keyword. - Pair this Actor with Xiaohongshu Search Scraper when you need to discover notes first, then collect comments.
- For TikTok comment threads instead of Xiaohongshu, use TikTok Comments Scraper.
- Validate
OUTPUT/RUN_SUMMARYplus dataset rows so you can confirm comments landed. - Keep
maxCommentstight on first runs so you can confirm the note is public before scaling.
This Actor is designed as a focused standalone workflow when you already have Xiaohongshu note URLs.
Builder's note
I built this as a comments-only sibling to the existing Xiaohongshu search Actor after I found that ScrapeCreators and SociaVault still have no Xiaohongshu comment routes (live OpenAPI probe) and that raw HTTP to xiaohongshu.com bounces with an anti-bot interstitial. In my testing, the public comment panel is in the rendered DOM (id="comment-…", data-user-id, IP 属地) even when __INITIAL_STATE__.comments.list stays empty. My goal was an MCP-ready flat row with parent/reply fields, matching the comment text people actually see on the note.
Legal / responsible use
Use this Actor only on content you are authorized to collect. Respect Xiaohongshu's terms of service, applicable laws (including privacy rules in your jurisdiction), and the rights of commenters. This tool collects public page data and is not affiliated with, endorsed by, or connected to Xiaohongshu / Xingyin Information Technology (Shanghai) Co., Ltd. You are responsible for how you store and use the export.