Find RedNote (Xiaohongshu) posts by keyword and collect comments from selected posts. This RedNote search and comments scraper produces an Apify dataset for content research, engagement comparison, and product feedback.
- π Discover posts by keyword, publication window, and post type.
- πΌοΈ Collect post data: titles, authors, engagement, and optional full details.
- π¬ Read conversations: collect comments and optional replies from supplied posts.
- π€ Export and repeat: download CSV, Excel, or JSON and schedule runs on Apify.
Keyword searches return posts. Comments are collected only from the post URLs or IDs you provide; finding a post does not automatically collect its comments. Both operations can run independently in the same run. The Actor does not search creator profiles, download media files, or fetch full post details from a link alone.
- Open Input and replace the sample keyword with your topic.
- Set Max results, Search order, Note type, and Published within as needed.
- Enable Include full note details for more post content.
- Click Start, then open Output when finished.
Search starts with your selected order and may supplement results from other orders if more results are needed. Each post's sortSource identifies its discovery order; the combined results are not guaranteed to be globally sorted by popularity or date.
- Paste post links or IDs into Post URLs.
- Set Max comments per post, Comment order, and reply options.
- For a comments-only run, clear the sample keyword (
keywords: []in JSON input). - Click Start, then select the Comments output.
To collect comments from discovered posts: run a keyword search β select posts β start another run with their IDs in Post URLs. Keeping keywords also runs a separate search.
Limits are maximums, not guaranteed result counts.
| Input field | Default | Options and limits |
|---|---|---|
keywords |
Form prefill: ζ
θ‘ (travel) |
Up to 20 keywords. Clear for comments-only runs. |
maxResults |
20 |
1β500 unique posts per keyword, not per run. |
sortType |
general |
Most relevant (general), most popular (popularity_descending), or newest (time_descending). Other orders may supplement results. |
noteType |
all |
all, video, image, or live. |
timeFilter |
all |
Any time (all), past day (1d), past week (1w), or past six months (6mo). |
includeNoteDetails |
false |
Add available full text, dates, tags, and media information; enriched, delivered posts incur a separate detail charge. |
noteUrls |
Empty | Up to 20 post URLs or IDs for comment collection. |
maxCommentsPerNote |
20 |
1β1,000 top-level comments per post; excludes nested replies. |
sortBy |
recommended |
recommended, latest, or most_liked. Sorting applies to accessible comments. |
includeReplies |
true |
Include replies beneath each top-level comment. Set false to omit replies. |
maxRepliesPerComment |
5 |
1β100 replies per comment; 0 requests all accessible replies, subject to collection limits. Applies when replies are enabled. |
| Result | What you can expect |
|---|---|
| π Search result | Post ID, link, keyword, title, type, author, cover, and available engagement counts. |
| πΌοΈ Full note details | Available full text, publication/update dates, tags, gallery links, and video information. |
| π¬ Comment | Text, comment/post IDs, author, time, likes, post link, and nested replies. |
Choose an output, then a view:
| Output | Views | Best for |
|---|---|---|
| All results | All results | Every delivered post and comment, with text previews, authors, dates, and likes. This is the default dataset. |
| Posts | Notes overview / Note details | Scan search results or read full text, tags, and media when available. Contains posts only. |
| Comments | Comments / Comment details | Scan comments, image attachments, and reply counts, or inspect complete text and nested replies. Contains comments only. |
Posts found under multiple keywords retain each context but are charged once per run. Copies in separate outputs add no result charges. previewText gives untitled posts and image-only comments a readable preview without changing their original text.
For a comments-only export, open Storage, select the comments dataset, then export JSON with all fields to preserve nested replies. The Run page's general Export button uses the default dataset, which includes both types in mixed runs. CSV/Excel can use flat author, date, and count fields; replies require a separate transformation for one reply per row.
recordType identifies search_note or comment. Match a comment's noteId (also note_id) to a post's id; its own id identifies the comment. Comments include flat authorName, likesCount, and UTC publishedAt, while preserving user, like_count, and Unix-seconds time for existing integrations. repliesCount is the reported total; collectedRepliesCount counts distinct delivered replies across both reply arrays.
These are shortened, fictional rows; actual fields depend on availability. Post links are omitted, and gallery links use example.com placeholders.
With Include full note details off, a search for ζ θ‘ might return:
{
"recordType": "search_note",
"id": "6a44e9d00000000000000001",
"keyword": "ζ
θ‘",
"sortSource": "general",
"title": "Weekend travel ideas",
"previewText": "Weekend travel ideas",
"noteType": "normal",
"authorName": "Travel Notes",
"likesCount": 124,
"commentsCount": 8,
"savesCount": 23,
"detailStatus": "card_only"
}Turn Include full note details on to add available text, dates, tags, and media information to the same post:
{
"recordType": "search_note",
"id": "6a44e9d00000000000000001",
"keyword": "ζ
θ‘",
"title": "Weekend travel ideas",
"previewText": "Weekend travel ideas",
"description": "Three quiet places to visit this weekend...",
"noteType": "normal",
"authorName": "Travel Notes",
"likesCount": 124,
"publishedAt": "2026-07-01T10:20:00+00:00",
"tagNames": ["ζ
θ‘", "weekend trips"],
"imageCount": 2,
"imageUrls": [
"https://example.com/gallery-1.jpg",
"https://example.com/gallery-2.jpg"
],
"detailStatus": "complete"
}For a post link, each top-level comment is one row. Requested replies are nested inside it:
{
"recordType": "comment",
"id": "comment-001",
"note_id": "6a44e9d00000000000000001",
"noteId": "6a44e9d00000000000000001",
"content": "This looks lovely! Which trail is it?",
"previewText": "This looks lovely! Which trail is it?",
"authorName": "Weekend Explorer",
"likesCount": 12,
"publishedAt": "2026-07-01T11:20:00+00:00",
"repliesCount": 1,
"collectedRepliesCount": 1,
"like_count": 12,
"time": 1782904800,
"user": {
"userid": "reader-001",
"nickname": "Weekend Explorer"
},
"sort_by": "recommended",
"sub_comment_count": 1,
"sub_comments": [],
"replies": [
{
"id": "reply-001",
"note_id": "6a44e9d00000000000000001",
"content": "It's near the lake!",
"like_count": 2,
"time": 1782908400,
"user": {
"userid": "creator-001",
"nickname": "Travel Notes"
}
}
]
}sub_comments is an inline preview; replies contains requested replies. They can overlap, or the preview can be empty. Deduplicate by reply id if combining them.
| User job | Recommended setup | What to use |
|---|---|---|
| Content research | Topic keywords + full note details | Post text, tags, authors, and media links for content examples. |
| Engagement comparison | Topic keywords; full details off | Available likes, comments, saves, and shares for per-post comparison. |
| Product feedback | Selected product or campaign post URLs + replies | Comment conversations for feedback analysis. |
| Recurring topic research | Recent time window + newest-first search + scheduled runs | Compare post IDs, dates, and engagement across runs; check the search order and whether dates are approximate. |
| Creator discovery | Topic keywords | Review authors appearing in results and their posts' visible engagement. |
Perform comparisons, sentiment analysis, engagement-rate calculations, and trend scoring separately. Scheduling repeats collection without adding these analyses.
Result charges apply when records are delivered. Prices below are in USD per 1,000 results:
| Delivered result | Free | Starter | Scale | Business |
|---|---|---|---|---|
| π Search result | $5.00 | $4.50 | $4.00 | $3.50 |
| πΌοΈ Full note details, added to a search result | +$5.00 | +$4.33 | +$3.67 | +$3.00 |
| π¬ Top-level comment | $3.50 | $3.00 | $2.50 | $2.00 |
| β©οΈ Reply | $1.50 | $1.33 | $1.17 | $1.00 |
For example, on Starter, 20 distinct search results cost $0.09. If all 20 also have full note details, the total is $0.1766 (about $0.18), plus the Actor Start charge. At the default setup, the Actor Start charge is $0.00005, and platform usage is included. Comments and replies are charged separately only when delivered. The same distinct post, comment, or reply ID is not charged twice within a run. A run with no results can still incur the start charge. Check the Actor's Pricing tab for the current rates before you start.
No. You don't enter a RedNote password in the Actor's form. Access still depends on what RedNote makes available; if it requires verification or limits requests, collection stops rather than promising missing results.
Not necessarily. A topic or post may have fewer accessible results, and collection limits can reduce the total. Some publication dates are approximate, which can affect date filtering.
A post link starts comment collection. Full note details are available for posts found through search keywords. Combining both inputs does not link the operations automatically. Content and availability can change, so review the dataset before using it for a decision.
This repository contains documentation for the hosted Actor; it does not contain the Actor source code.