RedNote Scraper - Xiaohongshu Notes & Engagement avatar

RedNote Scraper - Xiaohongshu Notes & Engagement

Pricing

from $0.87 / 1,000 notes

Go to Apify Store
RedNote Scraper - Xiaohongshu Notes & Engagement

RedNote Scraper - Xiaohongshu Notes & Engagement

Scrape public RedNote (Xiaohongshu) notes from note links, share text from the app, or the explore feed. One row per note: text, author, likes, collects, comments, shares, hashtags, images, video link and publish time. Counts come back as real numbers. No keyword search. $0.90 per 1,000 notes.

Pricing

from $0.87 / 1,000 notes

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

3

Monthly active users

4 days ago

Last modified

Share

Scrape RedNote (Xiaohongshu) notes with real like and collect counts: paste RedNote note links, share links or share text and get one row per note, with the title, the description, the author and their profile link, likes, collects, comments, shares, publish time, hashtags and images, plus the video link and length on video notes. Leave the links empty and it reads the public explore feed instead.

The catch is the link itself. A RedNote URL only resolves with the xsec_token it was shared with, so paste the whole thing, query string and all. Those tokens go stale, and share links with them, which is why a list saved last month comes back empty.

InputNote URLs with their share token, share links or share text, or nothing at all
OutputOne row per note: title, description, author and profile link, likes, collects, comments, shares, publish time, hashtags, images, note type, video link
Ceiling200 notes per run
Account neededNone, no login and no cookies
Price$0.90 per 1,000 notes on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 5,500

🔍 What RedNote Scraper does

Two ways in.

Note URLs. Paste the full link, including ?xsec_token=.... Copy it from the share sheet or straight out of the address bar; a link stripped back to the note id will not open. A share link from the app (xhslink.com/...) works as well, and so does the whole share text: the run follows the link to its note.

The explore feed. Leave Note URLs empty and it reads RedNote's public explore feed and returns what is on it. This is switched on by default. The feed is different every time you look at it, so two runs an hour apart will not agree.

Counts come back as numbers. RedNote writes 13,000 as 1.3万, because 万 means ten thousand, and 250 million as 2.5亿. Rows here carry 13000 and 250000000. Where RedNote only publishes a bucket like 1千+, you get the floor of that bucket, 1000.

📋 What data you get from each RedNote note

What you getField
The note's id and the exact link that was fetchednoteId, url
The headline and the caption, hashtags includedtitle, description
Who posted it, their profile link and avatarauthorName, authorId, authorProfileUrl, authorAvatar
Likes, collects, comments and shares, as real numberslikedCount, collectedCount, commentCount, shareCount
When it was published and last editedpublishedAt, lastUpdateTime
Image note or video notenoteType
On video notes, the length in seconds and one playback linkvideoDurationSec, videoUrl
The cover and up to 20 image linkscoverImageUrl, images
The hashtags as a list, and the accounts tagged with @hashtags, mentions
The location label RedNote shows on the noteipLocation
What kind of row it isrecordType
Where it came from and when it was readsource, scrapedAt

▶️ How to scrape RedNote notes

  1. Open RedNote Scraper and click Try for free.
  2. Paste your note links, share links or share text into Note URLs. A full link needs its ?xsec_token= part.
  3. Set Maximum notes to what you actually want.
  4. Click Start.
  5. Download the dataset as JSON, CSV or Excel, or read it from the Apify API.

To see what the feed is showing right now, skip step 2 and leave Include explore feed on.

💰 How much does it cost to scrape RedNote notes?

$0.90 per 1,000 notes on the Free plan. Paid plans pay a little less: $0.89 on Starter, $0.88 on Scale and $0.87 on Business. On the free plan, the $5 Apify gives you each month covers about 5,500 notes.

One row is one note. The sample row and every diagnostic row are not charged, so a link that will not open produces no note row to pay for.

Worth knowing: with Include explore feed left on, a run with no URLs is not an idle run. It reads the feed and returns real notes, and those are charged like any other.

📥 What you give it

{
"noteUrls": [
"https://www.xiaohongshu.com/explore/6a72ba26000000003302db55?xsec_token=ABgKYGq72MJJJWO8OVQh3Mtv79Mx-v2eHs6IaBJtUp2Ow=&xsec_source=pc_feed"
],
"maxItems": 50
}
FieldDefaultWhat it is
noteUrlsemptyOne per line: full note links, each with its own xsec_token, share links from the app, or share text.
includeExploreFeedtrueRead the public explore feed. Leave it on when you have no links.
maxItems20How many notes to return, 1 to 200. You are charged per note returned, so this is your spend cap.
proxyConfigurationleave it aloneOptional. Only fill this in if you want the run to go out through your own servers.

Run it with the URL box empty and Include explore feed left on, and it reads the feed and returns notes from it. Switch that off with no URLs and you get one labelled sample row instead.

📤 What you get back

A real note row, a news account's video note read on 17 October 2026. The text and the links are trimmed here.

{
"ok": true,
"noteId": "6aaf5789000000002800001d",
"url": "https://www.xiaohongshu.com/explore/6aaf5789000000002800001d?xsec_token=ABQ77lS4WJjr...&xsec_source=pc_feed",
"title": "上海居民家窗台惊现巨型白蛇,长度超过3米!...",
"description": "上海居民家窗台惊现巨型白蛇,长度超过3米!消防部门回应:已经移交给林业局...",
"authorName": "上观新闻",
"likedCount": 31000,
"collectedCount": 1672,
"commentCount": 2144,
"shareCount": 10000,
"publishedAt": "2026-09-20T03:48:25.000Z",
"images": ["http://sns-webpic-qc.xhscdn.com/202610171133/c8632782.../spectrum/1040g0k0325atligeka0g5oajrhk0kbsa41leg90!nd_dft_wlteh_webp_3"],
"source": "xiaohongshu.com",
"scrapedAt": "2026-10-17T03:48:57.402Z",
"recordType": "note",
"authorId": "6153dc680000000002022f8a",
"authorProfileUrl": "https://www.xiaohongshu.com/user/profile/6153dc680000000002022f8a",
"authorAvatar": "https://sns-avatar-qc.xhscdn.com/avatar/618b8944a2d28269eb72245f.jpg",
"noteType": "video",
"videoDurationSec": 10.1,
"videoUrl": "http://sns-video-zl.xhscdn.com/stream/1/110/258/01eaaf5760...683_258.mp4?sign=...",
"coverImageUrl": "http://sns-webpic-qc.xhscdn.com/202610171133/c8632782.../spectrum/1040g0k0325atligeka0g5oajrhk0kbsa41leg90!nd_dft_wlteh_webp_3",
"hashtags": [],
"mentions": [],
"ipLocation": "上海",
"lastUpdateTime": "2026-09-20T03:48:26.000Z"
}

hashtags is empty on that row although the caption has #上海: those were typed as plain text, and RedNote did not link them as topics.

FieldHow to read it
noteIdRedNote's own id. It is the key to join on between runs.
title, descriptionThe headline and the caption, exactly as posted, hashtags included.
likedCount, collectedCountLikes and saves as real integers. A collect is RedNote's save-for-later, and on this platform it often runs ahead of likes.
commentCount, shareCountThe counters on the note. null when RedNote does not publish one.
publishedAt, lastUpdateTimeISO timestamps. null when the note does not carry a usable one.
images, coverImageUrlUp to 20 image URLs, and the first of them, which RedNote uses as the cover. The files stay on RedNote's servers.
noteTypeimage or video.
videoUrl, videoDurationSecOne normal playback link and the length in seconds, on video notes only; null on image notes. A link, not a file.
hashtagsThe topic tags RedNote links on the note, as a list.
mentionsThe accounts tagged with @, each with userId and nickname. Empty when nobody is tagged.
ipLocationThe location label RedNote prints on the note, such as a province. null when it shows none.
authorProfileUrlThe author's profile page. It goes straight into RedNote Profile Scraper.
urlThe exact link that was fetched, token included, so you can reopen it. For a share link, the share link.

🧾 Reading the output

Three kinds of row can land in your dataset.

RowHow to spot itCharged
A noterecordType is noteyes
The sample rowIt carries _sampleno
A diagnosticIt carries _diagnostic and an errorCodeno

Keep the rows where recordType is note and you have your notes. Each note is charged once a run, even when a share link and the feed both lead to it.

CodeWhat it means
NOT_FOUNDThat note is gone, private, or the link arrived without a working token. An old share link lands here too. The row carries a hint saying which.
NOT_A_NOTEThe entry held no note: a profile link, a share link that opens something else, or text with no RedNote link in it.
NO_RESULTSThe page came back without that note in it.
NOT_SERVEDThis note was not served this run. Re-run it later. Until 12 October 2026 this code was called BLOCKED.
NETWORKRedNote was unreachable.
TIME_LIMITThe run got close to its time limit and stopped on its own. The notes delivered before that are complete and charged. Give the run more time, or ask for fewer notes, to get the rest.

A diagnostic never fails the run, except one: when the time limit stopped the run before any note came back, the run ends as failed, with a TIME_LIMIT row saying so.

💡 What people use it for

  • Tracking how a product or a brand is being talked about on RedNote, with real numbers instead of 1.3万.
  • Watching what the explore feed pushes over a week, on a schedule, joining runs on noteId.
  • Counting which tags a niche actually uses, straight from hashtags.
  • Comparing collects against likes, which on RedNote says more about saving intent than a like does.

🚧 What it does not do

  • No keyword search and no topic pages. You give it links, or you take what the explore feed offers. There is no search box to query.
  • No comment text. You get commentCount, not what anyone wrote underneath.
  • No video files. videoUrl is a link to the video where RedNote keeps it. Nothing is downloaded.
  • No follower lists, no shop products and no product reviews.
  • Links go stale. The xsec_token on a shared URL expires, and an expired link comes back as NOT_FOUND. Share links too. Re-copy the link rather than re-running the old one.
  • Public notes only. A private or deleted note returns a diagnostic row.
  • A profile is not a note. A profile link gets a free NOT_A_NOTE row. Accounts are read by RedNote Profile Scraper.
  • The explore feed is not a search result. It is whatever RedNote is showing, and it changes between runs. Do not expect two runs to overlap.
  • 200 notes per run. Split a bigger job across runs.
  • Bucket counts lose precision. 1千+ becomes 1000, which is the floor of the bucket, not the real figure.
  • It is not an official RedNote (Xiaohongshu) tool. Dami's Studio is independent and is not affiliated with or endorsed by RedNote (Xiaohongshu), or by any other company named on this page.

🧭 Which Chinese platform scraper do you need?

If you wantUse
Individual RedNote notes and their engagementThis one
RedNote accounts, with followers and recent notesRedNote Profile Scraper
What China is searching and posting about on Douyin right nowDouyin Hot Search Scraper
Bilibili videos, leaderboards, uploaders and commentsBilibili Scraper
The same job on TikTok: videos with plays, likes and savesTikTok Scraper

❓ Questions people ask

No. Nothing to log into and nothing to paste.

Yes. Paste the xhslink.com link or the whole block of share text, and the run follows the link to the note. A share link that no longer opens comes back as a free NOT_FOUND row.

The token in the URL expired. Copy the links again from RedNote and re-run.

Leave the URL box empty. The explore feed returns notes with their links, and you can feed those back in.

What is a collect on RedNote?

RedNote's save-for-later. It is a stronger signal than a like on this platform, and collectedCount often runs higher than likedCount.

Can I call it from code or connect it to an AI assistant?

Yes. The API tab has ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/rednote-scraper. Either way the run happens on your Apify account at the same price.

These are public notes. Author names are personal data under GDPR and similar laws, so have a reason for collecting them. Apify's write-up on the legality of web scraping is a good place to start, and we are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page. Send one of the note links and the run ID. The errorCode and its hint on the diagnostic row usually name the problem on their own.