RedNote (Xiaohongshu) User Profile Scraper
Pricing
from $2.90 / 1,000 profile returneds
RedNote (Xiaohongshu) User Profile Scraper
Scrape RedNote (Xiaohongshu) user profiles. Each row has the nickname, RedNote ID, follower and following counts. Also likes, collects and the verified badge. You get the province the account posts from, plus up to 30 recent notes. No login. $2.90 per 1,000.
Pricing
from $2.90 / 1,000 profile returneds
Rating
5.0
(1)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
13
Total users
6
Monthly active users
3 days ago
Last modified
Categories
Share
RedNote Profile Scraper: Xiaohongshu profiles, followers and recent notes
Paste RedNote profile links or bare user ids and get one row per account: nickname, RedNote ID, bio, avatar, follower and following counts, total likes and collects, the verified badge, the province RedNote shows next to the account, and up to 30 recent notes with their own engagement numbers.
The counts need one caveat. RedNote publishes some figures exactly and rounds others on the page, so
followerCount can be a real integer or a reading of 94.3K. Every row carries
followerCountIsExact and countsAreApproximate so you always know which you got.
| Input | Profile URLs or 24-character user ids |
| Output | One row per profile, with up to 30 recent notes |
| Ceiling | 1,000 profiles per run, 30 notes on each |
| Account needed | None, no login and no cookies |
| Price | $2.90 per 1,000 profiles, flat on every plan |
👤 What RedNote Profile Scraper does
Give it the accounts you want. A profile link, or just the 24-character id from the end of one, and
you get one row back per entry. If your links still carry the ?xsec_token= they were shared with,
leave it on: it saves a request.
Recent notes come with the profile. Up to 30 of them, newest first, each with its title, type,
likes, collects, comment count, whether it is pinned, and a cover image. Set Recent notes per
profile to 0 if you only want the account itself.
Discovery, if you do not have a list yet. Switch on Also seed profiles from the explore feed
and it takes the authors of whatever is on RedNote's public explore feed. It is off by default. One
thing to watch: if you also paste URLs, raise maxItems above the number you pasted, or the run
stops at your own list and the feed adds nothing.
📥 What you give it
{"profileUrls": ["https://www.xiaohongshu.com/user/profile/5b723a65c756070001d43c6c","620f2fbd000000001000e44c"],"maxNotesPerProfile": 10,"maxItems": 0}
| Field | Default | What it is |
|---|---|---|
profileUrls | box holds two example profiles | Profile links or bare 24-character user ids, one per line. One row comes back per entry. |
maxNotesPerProfile | 10 | How many recent notes to attach, 0 to 30. |
maxItems | 0 | Cap on profiles returned. 0 means one row for every URL you supply. You are charged per profile returned. |
includeExploreFeed | false | Top the list up with authors from the public explore feed. Use it when you do not already know whose profiles you want. |
xsecToken | empty | Leave it empty. Only fill it in if a run reports TOKEN_UNAVAILABLE, and then one value covers the whole run. |
proxyConfiguration | leave it alone | Optional. Only change this if you want the run to go out through your own servers. |
Run it with nothing in the box and the feed switched off, and you get one labelled sample row.
📤 What you get back
A real profile row from a recent run, with one recent note attached.
{"ok": true,"userId": "5b723a65c756070001d43c6c","url": "https://www.xiaohongshu.com/user/profile/5b723a65c756070001d43c6c","nickname": "无糖小馒头","redId": "607277765","avatar": "https://sns-avatar-qc.xhscdn.com/avatar/1040g2jo321mc2hj8no2g...format/jpg","bannerImage": "http://sns-avatar-qc.xhscdn.com/user_banner/1040g2k031tjje5h1ne60...format/jpg","description": "十年美食无人问,一朝绑匪天下知。","followerCount": 1295,"followerCountText": "1295","followerCountIsExact": true,"followingCount": 69,"followingCountText": "69","likesAndCollectsCount": 94300,"likesAndCollectsCountText": "94.3K","countsAreApproximate": true,"ipLocation": "江苏","gender": null,"location": null,"profession": null,"isVerified": false,"verifiedType": null,"verifiedReason": null,"tags": [],"recentNoteCount": 1,"recentNotes": [{"title": "刷牙教程","type": "normal","likedCount": 8003,"collectedCount": 855,"commentCount": 285,"pinned": true,"coverImage": "https://sns-na-i2.xhscdn.com/c4d52afd-cc13-9234-6e10-6965baa3935b?imageView2..."}],"source": "xiaohongshu.com","scrapedAt": "2026-09-18T13:02:46.237Z"}
| Field | What it is |
|---|---|
userId, redId | The id in the URL, and the RedNote ID the creator shows publicly. redId is null when the account has not set one. |
followerCount, followerCountText | The number, and the string RedNote printed. Compare them with followerCountIsExact. |
likesAndCollectsCount | RedNote's combined likes-and-collects total for the account. It is one figure on their side, not two. |
countsAreApproximate | true when any of the counts on this row came from a rounded label. |
ipLocation | The province or region RedNote displays next to the account. |
isVerified, verifiedType, verifiedReason | The badge, what kind it is, and the line RedNote prints to explain it. |
recentNotes | Up to 30 recent posts with likes, collects, comments and a cover image. Pinned posts are flagged. |
description | The bio. null when the account left RedNote's placeholder in place. |
🧾 Reading the output
Three kinds of row can land in your dataset.
| Row | How to spot it |
|---|---|
| A profile | ok is true and it has a userId |
| The sample row | It carries _sample |
| A diagnostic | It carries _diagnostic and an errorCode |
Diagnostic rows and the sample row are never charged.
| Code | What it means |
|---|---|
NO_RESULTS, BLOCKED | RedNote did not return that profile. The hint names both possibilities, because a deleted account and a refused page look identical from outside. |
RATE_LIMITED | Too many profiles in a row came back empty, so the run stopped early. The row carries notAttemptedUrls, the list it never reached, ready to re-run. |
TOKEN_UNAVAILABLE | The run could not get a working token by itself. Open xiaohongshu.com, click any creator, and paste the xsec_token from the address bar into xsec_token. |
FEED_UNAVAILABLE | The explore feed would not answer, so no extra profiles were seeded. Your own URLs still run. |
NETWORK | RedNote was unreachable. |
▶️ How to run it
- Open RedNote Profile Scraper and click Try for free.
- Paste your links or ids into Profile URLs or user IDs, one per line.
- Set Recent notes per profile, or
0to skip them. - Click Start.
- Download the dataset as JSON, CSV or Excel, or read it from the Apify API.
💰 How much does it cost?
$2.90 per 1,000 profiles. Flat on every Apify plan, no volume tiers.
One row is one profile, whether you asked for 30 recent notes on it or none. The sample row and
every diagnostic row are not charged, so a profile RedNote will not serve produces no row to pay
for, and neither do the URLs listed on a RATE_LIMITED row.
💡 What people use it for
- Vetting creators before an outreach campaign, with followers and recent engagement side by side.
- Checking whether a creator's audience is real by comparing follower count against likes on recent notes.
- Building a shortlist by province, using
ipLocation. - Watching a set of accounts week by week and diffing the counts.
- Finding new creators in a niche through the explore feed, then reading their profiles properly.
🚧 What it does not do
- No email and no phone. RedNote does not publish contact details on a profile, so there are none to return.
- Some counts are rounded. RedNote prints
94.3Kon plenty of pages, and that is what you get.countsAreApproximatetells you when it happened. - A missing account and a refused page look the same. Both produce a row explaining that it could be either. Check the profile in a browser before assuming it is gone.
- At most 30 recent notes, and no lifetime post total. RedNote does not publish the total, and the recent list is as deep as the profile page goes.
- No note permalinks in the recent list. You get the title, the numbers and a cover image, not a link to each note.
- Some fields can arrive
null. RedNote does not always serve the full profile page; when it serves the lighter one,bannerImage,verifiedReasonand the collect and comment counts insiderecentNotescome back empty. - Explore-feed seeding is a helper, not a search. It takes whoever happens to be on the feed, and the feed changes between runs.
- Rows are a snapshot. Followers move, bios change, notes get deleted.
🧭 Which Chinese platform scraper do you need?
| If you want | Use |
|---|---|
| RedNote accounts, followers and recent notes | This one |
| Individual RedNote notes and their engagement | RedNote Scraper |
| What is trending on Douyin right now | Douyin Hot Search Scraper |
| Videos, creators and stats on Bilibili | Bilibili Scraper |
❓ Questions people ask
Do I need a RedNote account or a cookie? No. Nothing to log into and nothing to paste, in the normal case.
What is the xsec_token box for then? A fallback. The run gets its own token, and only if that fails does it ask you for one. One token covers every profile in the run and stays good for at least an hour.
Can I search RedNote for creators by keyword? Not here. Give it profiles you already know, or switch the explore feed on and take what it offers.
Why is followerCount exact on one row and rounded on another? Because RedNote itself prints it
that way. followerCountIsExact is the field to trust.
Can I run it on a schedule? Yes. userId is stable, so a weekly run plus a join on that field
gives you a growth curve per creator.
Is scraping RedNote profiles legal? These are public profiles. Apify's write-up on scraping and the law 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 profile links and the run ID. The
errorCode and its hint on the diagnostic row usually name the problem on their own.