RedNote Xiaohongshu Scraper — Posts, Comments, Profiles, Video
Pricing
from $60.00 / 1,000 post scrapeds
RedNote Xiaohongshu Scraper — Posts, Comments, Profiles, Video
Scrape RedNote (Xiaohongshu) posts, comments, profiles and video — six modes in one Actor. Chinese social media and user generated content at the source: Chinese reviews, China consumer opinion, china market research and the creator data behind influencer marketing. No login for posts and profiles.
Pricing
from $60.00 / 1,000 post scrapeds
Rating
5.0
(2)
Developer
Sami
Maintained by CommunityActor stats
7
Bookmarked
1.3K
Total users
267
Monthly active users
19 hours ago
Last modified
Categories
Share
RedNote (Xiaohongshu) Scraper -- All-in-One
Extract Chinese consumer opinion, brand sentiment, and lifestyle signal from RedNote (Xiaohongshu / Little Red Book) — the platform where 300M+ Chinese users post the most authentic first-person product reviews and purchase decisions in China. Built for AI training corpora, Chinese consumer equity research, brand intelligence, and influencer analytics teams. No API key, no VPN. Creator posts and profiles run with no login at all. Post details and video URLs need no login either, as long as the link keeps its xsec_token (copy it from the browser bar or the app's share sheet) — the Actor reads the post page itself, no browser session involved. Comments are best-effort without a cookie, and keyword search always needs one. The mode picker says which is which before you spend a run.
🏢 Sourcing a Chinese-language LLM training corpus — or running RedNote at production scale?
This Actor pulls RedNote at corpus scale: hundreds of thousands to millions of clean, structured records — first-person product reviews, sentiment, and influencer data — on a schedule. Drop-in for AI-training pipelines, hedge-fund alt-data, and brand-intelligence warehouses. Pay-per-result, no contract.
For high-volume / enterprise I offer bulk & volume pricing, custom output schemas, dedicated proxy throughput for sustained million-row pulls, scheduled managed feeds, and a schema-stability SLA (no breaking changes without 30-day notice).
→ DM me on Apify, open an Issue titled "Enterprise inquiry", or email samimassis2002@gmail.com (subject "RedNote enterprise").
💡 Tracking a brand, not just scraping one platform? Pair this with two recurring monitors that watch the whole picture for you: Chinese Brand Monitor — Weibo + RedNote + Bilibili + Douban + Xueqiu mentions in one scheduled, deduped, sentiment-tagged feed — and AI Brand Visibility Monitor — how the AI engines (DeepSeek, Qwen, Kimi, GLM + ChatGPT/Gemini/Claude) answer about your brand.
How to scrape RedNote (Xiaohongshu) in 3 easy steps
- Go to RedNote Scraper on Apify Store and click "Try for free"
- Click Run. The form arrives prefilled on
user_postswith a live creator profile, which is the mode that works with no cookies and no setup — so your first run returns real posts. - Then aim it at your own targets — swap in the profile URLs you track, paste post URLs into
post_details/comments/video, or switch tosearchonce you have added acookieString(RedNote reserves keyword search for logged-in sessions; see Cookies (Advanced) below).
No coding required. Works with Apify's free plan. Download results as JSON, CSV, or Excel.
📚 Tracking more than one creator? Paste a whole watchlist into More profile URLs (bulk) and one run sweeps every creator in it — one Actor-start fee for the batch, so it costs less per post than one run each. → Bulk profiles.
⏰ Want alerts rather than the data itself? Delta mode returns ONLY posts it has not seen before — read the trade-off there first.
Table of contents
- ⏰ Recurring monitoring (delta mode) — alerts on NEW posts only; returns nothing on a quiet day
- What you can scrape — 6 modes overview and reliability
- What's new in v2.1 — 5× faster post details
- Data fields you get — per-post and per-profile output
- Input examples — copy-paste configs for every mode
- Output examples — sample JSON for each mode
- Cookies (Advanced) — unlock comments and full profile data
- Use cases by buyer — who buys and why
- Pricing — pay-per-event breakdown
- FAQ — common questions about Xiaohongshu / RedNote scraping
- Integrations — Sheets, Zapier, Make, n8n, REST API
Part of the Chinese Digital Intelligence Suite by Zhorex
Built by Zhorex, who maintains a suite of Chinese-platform scrapers — built specifically for AI training data buyers, equity research analysts covering Chinese consumer brands, and brand monitoring teams:
| Platform | Users | Use Case | Link |
|---|---|---|---|
| 🆕 Chinese Brand Monitor | All 5 | Cross-platform brand aggregator — sentiment + dedup + reach-weighted brand-health rollup ($0.045/mention) | Chinese Brand Monitor |
| RedNote (Xiaohongshu) | 300M+ | Consumer reviews, lifestyle signal, brand sentiment | You are here |
| 580M+ | Public opinion, hot search, trending topics | Weibo Scraper | |
| Bilibili | 300M+ | Video content, danmaku, Gen-Z creator sentiment | Bilibili Scraper |
| Douban | 200M+ | Long-form reviews (movies/books/music), group discussions | Douban Scraper |
| Xueqiu | 20M+ | Stock-discussion sentiment, cashtag indexing | Xueqiu Scraper |
| RedNote Shop | 300M+ | RedShop e-commerce: products, vendors, prices | RedNote Shop Scraper |
| 🆕 Chinese AI Training Corpus Engine | All 5 | AI-training-ready documents — MinHash dedup, quality scoring, PII scrub, EU AI Act provenance ($0.025/doc) | Chinese Corpus Engine |
Why use the suite? Teams covering Chinese markets need cross-platform signal — RedNote for first-person consumer reviews, Weibo for public sentiment, Bilibili / Douban for trend opinion, Xueqiu for finance dialogue. Building a cross-platform brand monitoring pipeline? Use the new Chinese Brand Monitor aggregator — it orchestrates all 5 platforms in one call with normalized output, sentiment tagging, and cross-platform deduplication. Saves 4-6 hours vs. orchestrating individual scrapers.
Who buys this scraper
| Buyer profile | Use case | Typical spend |
|---|---|---|
| AI/LLM training data teams | Chinese-language consumer text corpus for SFT fine-tuning | $200-1,000+/mo |
| Hedge fund / equity research desks | Chinese consumer brand sentiment as alt-data signal for retail-investor stocks (POP MART, Anta, BYD, etc.) | $100-500/mo |
| Brand monitoring agencies | Track product mentions, sentiment, and viral content for Western brands entering China | $50-300/mo |
| Influencer research / KOL agencies | Vet creators by engagement metrics, niche, audience overlap | $50-200/mo |
| Academic NLP researchers | Chinese consumer-domain text for sentiment classifiers, cross-cultural studies | $30-100/mo |
What is RedNote?
RedNote (Xiaohongshu) is China's #1 lifestyle social platform, booming globally after TikTok's ban uncertainty in the US. It's where brands, influencers, and consumers share product reviews, travel tips, fashion inspiration, beauty routines, and more. This scraper gives you structured access to all that public data — perfect for Xiaohongshu brand monitoring, RedNote influencer research, and Little Red Book trend discovery.
Xiaohongshu API alternative — no login required
There is no official Xiaohongshu/RedNote API for extracting public data. This Actor is the best RedNote API alternative in 2026 and the best free Xiaohongshu API for developers — it extracts posts, profiles, comments, and videos from the public interface. No API key and no account of ours to sign up for. Creator posts and profiles need no login. Post details and video URLs work anonymously too when the URL keeps its xsec_token (copy it from the browser bar or the app's share sheet). Comments are best-effort without a cookie, and keyword search is reserved for logged-in sessions and always takes your cookie.
Whether you call it Xiaohongshu, RedNote, Little Red Book, RED, or XHS — this scraper handles all of it in one unified tool.
Common use cases
- Chinese AI training corpus — extract first-person consumer reviews, product opinions, and lifestyle content as labeled text data for LLM fine-tuning and sentiment classifiers
- Equity research alt-data — Chinese consumer brand sentiment as a leading indicator for retail-investor-relevant tickers (POP MART, Anta, BYD, Yum China, etc.)
- Xiaohongshu brand monitoring — track product mentions, reviews, sentiment in real time for Western brands entering China
- RedNote influencer / KOL data — find creators by niche, vet engagement metrics, build influencer databases
- RedNote competitor intelligence — monitor competitor content strategy and audience reception
- Scrape Little Red Book trends — discover emerging products, aesthetics, and viral content before they go mainstream
- RedNote ecommerce signal — track product mentions, tagged products, shopping-intent posts (pair with RedNote Shop Scraper for full e-commerce coverage)
What Can You Scrape?
| Mode | What you get | Best for | Reliability |
|---|---|---|---|
| Search | Posts matching any keyword | Trend research, brand monitoring, AI training corpus seed | 🟡 Add a cookieString for reliable keyword results — cookieless search runs return 0 items and are never charged |
| User Posts | A user's posts — title, like count, cover image, type. Accepts many profiles per run (userUrls) | Influencer analysis, competitor research, content cadence | 🟡 RedNote gates anonymous access to profile feeds; the Actor retries automatically, so most runs return the feed (retry after ~2 h or add a cookieString — a cookieless re-run within 2 h of an empty result is skipped and bills only the start fee). For guaranteed results on every run — plus per-post IDs / URLs — add a cookieString (see Cookies (Advanced) below) |
| Post Details | Full post data (title, content, likes, comments count, images, author) | Deep-dive on viral content, sentiment context | ✅ No login when the URL keeps its xsec_token (copy it from the browser/app) — read straight from the post page. Bare URLs without the token need a cookieString |
| Comments | Comments on a post (text, author, likes, publishedAt) | Sentiment analysis, brand monitoring, conversation mining | 🟡 Best-effort without login: needs a URL with xsec_token; add a cookieString for reliable results (see Cookies (Advanced) below) |
| User Profile | Bio, followers, location, verification, tags | Influencer vetting, audience research | 🟡 Anonymous access returns limited fields — provide cookieString for full profile data (see Cookies (Advanced) below) |
| Video URL extraction | Direct video URLs + post metadata | Content archival, video sentiment analysis | ✅ No login when the URL keeps its xsec_token; returns the direct .mp4 stream URL (signed, so download it soon). Image notes are detected and never charged |
💡 Where the
xsec_tokencomes from — read this before choosing a mode.post_details,commentsandvideoneed a URL that still carries its?xsec_token=…. There are two ways to get one, and only two:
- Copy it yourself from your browser's address bar, or the app's Share → Copy Link. Works with no cookie, no account.
- Run this Actor with a
cookieString. Thensearchanduser_postsemit token-bearing URLs you can pipe straight in.What does not work is chaining these modes off a cookieless run: measured 2026-08-06, cookieless
user_postsreturned 756 rows with zero tokens (RedNote gates the per-post note ID on anonymous profile feeds), and cookielesssearchreturns RedNote's recommendation feed rather than matches. So if you plan to automate post-level extraction end-to-end, budget for acookieString— it is the difference between a pipeline and a manual copy-paste.
⚠️ App-shared URLs need cookies. URLs copied from the RedNote mobile app's share menu (or pasted bare into the browser) come without the
xsec_tokenquery parameter that RedNote requires to serve detail pages anonymously. Forpost_details/comments/videomodes, prefer:
- URLs from
search/user_postsoutput when those runs had acookieString(anonymous runs return rows without post URLs), OR- Provide a session cookie via
cookieString(see Cookies (Advanced) below).Pasting bare app-share URLs without either path stops with a
login_requiredreason in the run status and log; nothing is charged except the Actor start fee.
🆕 Sentiment + language tagging. Every record now includes a
languagetag (zh-CN/en/mixed) — handy for filtering Chinese vs the fast-growing global/English RedNote content. SetsentimentAnalysis: trueto also tag each post & comment with Chinese sentiment (polarity + a −1.0…+1.0 score; SnowNLP for Chinese text, keyword fallback for English). RedNote is first-person product reviews — exactly where sentiment scoring is most useful for brand-monitoring & alt-data buyers. Off by default → zero overhead unless you enable it.
Profile mode runs without a browser
profile mode is now served over plain HTTP. The profile page server-renders everything
the mode returns — nickname, RedID, bio, IP location, follower / following / like counts —
so no headless browser is launched at all.
Measured on Apify, 2026-08-15: a two-profile run finished in 33 s using $0.011 of platform compute (paid by the developer; the buyer paid 2 × $0.12 + $0.05 start fee), with $0.0000 of residential-proxy transfer and Chromium never started. The browser path for the same work costs several times that.
Every profile row carries fetchPath, either http or browser, so you can see which
path served it instead of taking the claim on trust. Anything HTTP cannot resolve still
falls back to the browser exactly as before — nothing is lost, it is simply not paid for
unless it is needed.
This applies to profile only. Creator feeds (user_posts) still need the browser:
the note list is not in the page HTML and the API that serves it rejects unsigned
requests, so a real browser has to run Xiaohongshu's own JavaScript to get it.
What's new in v2.1 (LIVE in production)
Headline: multi-URL workloads (post_details, comments, video) are now 5× faster. Zero pipeline changes required — the speedup is on by default and your existing inputs work unchanged.
Compound performance gains (v1.0.28 → v2.1)
| Workload | v1.0.28 | v2.0 | v2.1 | Total Δ |
|---|---|---|---|---|
post_details per URL (concurrency=3) | 60s | 28.7s | 5.7s | −90% time |
search 10 items (wall-clock) | 39.1s | 58.9s | 24-32s | −40% time |
| Memory peak per run | 1,215 MB | 562 MB | 562 MB | −54% |
| Memory avg per run | 891 MB | 281 MB | 281 MB | −68% |
| Bandwidth per run | 6.5 MB | 4.4 MB | 4.4 MB | −32% |
New optional inputs (additive, backward-compatible)
| Input | Default | What it does |
|---|---|---|
networkCapture | true | New fast extraction path that completes earlier in the page-load lifecycle. Falls back to the v2.0 extraction method automatically when the fast path is unavailable. Disable only for debugging. |
Bonus upgrade (not originally planned)
profile mode now returns real data on URLs that previously returned only login_required diagnostics. The v2.1 extraction path covers cases v2.0 couldn't. Profile-mode buyers (influencer agencies, KOL researchers) get richer responses with no input changes.
Reliability
- All 6 modes have parity with v2.0 — no regression in any mode
- Dual fast-path / slow-path design — if Xiaohongshu changes their internal API, the scraper automatically falls back to v2.0 DOM parsing. No buyer-visible breakage, just temporary speed regression until the fast path is updated.
What's new in v2.0
v2.0 is a performance-focused release. All existing fields are unchanged — three new optional inputs let you tune cost / throughput.
| Input | Default | What it does |
|---|---|---|
concurrency | 4 (max 10) | Process multiple post URLs in parallel for the post_details / comments / video modes. Cuts wall-clock time roughly linearly up to the proxy/rate-limit ceiling. |
blockResources | true | Block image / font / tracker bytes at the network layer. Halves bandwidth per page; no impact on extracted data (URLs are still emitted in the output — only the bytes are skipped). |
liteMode | false | Return only metadata: postId, postUrl (with token), xsecToken, type, title, likes, scrapedAt. Skips body content, full image lists, comment expansion. Same scrape time and same price per row — use it only when you want a smaller output. |
Existing buyers get faster + cheaper runs automatically — concurrency / resource-blocking are on by default. No input changes required for v1.x pipelines.
Output shape
- Full mode (
liteMode: false, default): identical field set to v1.0.28. Every field your pipeline already reads is still emitted. - Lite mode (
liteMode: true): minimal field set per item, butpostUrlstill carries thexsec_tokenquery parameter (when the run had acookieString), so a downstreampost_detailsrun on lite output works the same way it does on full-mode output.
Data You Get
Posts from search and user_posts (feed cards)
title,type(normal / video),likes, cover image inimages[0],author/authorName,mode,scrapedAt,language;comments/saves/shareswhen the feed carries them, otherwisenullpostId,postUrl(with token) andxsecTokenonly with acookieString— anonymous creator feeds hide note IDs- Body
content,tags,publishedAt,locationand the full image list are not in feed cards (with or without a cookie) — usepost_detailsfor them
Posts from post_details
- Identifiers:
postId,postUrl,xsecToken,type - Content:
title, full bodycontent, hashtagtags[],publishedAt,location - Media:
images[](all post images),videoUrl(video posts) - Engagement:
likes,comments,shares,saves(万 / 千 parsed to integers;nullwhen RedNote does not report a count) - Author:
author.userId,author.nickname,author.avatar, flatauthorName - Sentiment (only with
sentimentAnalysis: true):sentiment.polarity,sentiment.score,sentiment.method
Profiles (profile mode)
- Identifiers:
userId,profileUrl,redId(Xiaohongshu's public ID) - Identity:
nickname,avatar,description(bio),gender,location - Social proof:
followers,following,totalLikes— each isnullwhen RedNote does not report that count - Browser-path only:
notesCountandisVerifiedare populated when the row was served by the browser fallback (fetchPath: "browser"); on the default no-browser HTTP path (fetchPath: "http") the profile page does not carry them, so both come backnull - Categorization:
tags[](profession, interests)
Comments (comments mode)
- Content:
content(comment text),publishedAt - Author:
authorName,avatar - Engagement:
likes - Context:
postId,postUrllinking back to the parent post - Enrichment:
language, plus asentimentobject (polarity + score) whensentimentAnalysis: true
Videos (video mode)
- Identifiers:
postId,postUrl,xsecToken,title,authorName - Media:
videoUrl(direct download URL),hasVideoflag - Posts without video or needing authentication are skipped and not charged; the run log says why
Input Examples
Search posts by keyword
{"mode": "search","searchQuery": "skincare routine","maxResults": 50,"sortBy": "general","filterByType": "all","filterByMinLikes": 100,"sentimentAnalysis": true}
Get all posts from a user
{"mode": "user_posts","userUrl": "https://www.xiaohongshu.com/user/profile/USER_ID","maxResults": 100}
Get a user's profile info
{"mode": "profile","userUrl": "https://www.xiaohongshu.com/user/profile/USER_ID"}
⏰ Set up daily monitoring in 2 minutes
Most of this Actor's value is in RECURRING runs. A one-off pull is a snapshot; a daily or hourly schedule turns it into a living first-person product-review / brand-sentiment feed — a continuously refreshed stream of what RedNote users are actually saying about a product. That's where pay-per-result compounds: each run adds a little, and over weeks you own a dataset nobody else has.
- Run it once with your input. Use
searchmode with a brand keyword (see Input Examples above), click Run, and confirm the output looks right. - Apify Console → Schedules → Create. Pick this Actor and your saved input. (Shortcut: open any finished run and click Schedule to pre-fill the input for you.)
- Set a cron expression and save. For example
0 8 * * *= daily at 8am, or0 * * * *= hourly. While you're there, enable the email notification on failed runs option so you know if a run ever needs attention.
Each scheduled run appends fresh results to the same dataset, so you build a continuously-updated history with zero manual work — no babysitting, no re-running by hand.
💡 Ideal for brand teams tracking how a product is reviewed on Xiaohongshu day to day. Set a daily keyword search and let the dataset grow into a timestamped sentiment trail you can chart, alert on, or pipe into your warehouse.
💸 Only pay for what's new — Delta mode
Read this before switching it on. Delta mode changes what the Actor is for. A full run returns a creator's recent feed — typically 16-61 posts — and bills for them. A delta run returns only what has appeared since the last run, so on a quiet day it returns nothing and bills only the Actor start fee (streams that stay quiet are checked less often — holds grow up to ~50 h). Creators post a few times a week, so a daily delta monitor is a small trickle by design, not a broken run. Pick delta when you want to be told what is NEW; leave it off when you want the data itself.
When you run on a schedule, you don't want to pay again for posts you already pulled yesterday. Turn on deltaMode and the Actor returns — and charges for — only posts it hasn't seen in previous runs of the same stream. Already-seen posts are skipped: not returned, not billed.
deltaMode: true— enable only-new-since-last-run filtering (applies tosearchanduser_postsmodes).deltaStateKey— names an independent stream so multiple monitors don't collide. Use a distinct key per brand/query, e.g."nike-daily"vs"adidas-daily". Seen-post history persists across runs under this key.
Get the most out of it:
- For
user_posts, delta works out of the box — a creator's post list is stable, so each run returns just their genuinely-new posts. - For
search, setsortBy: "time_descending"(Most Recent) so consecutive runs overlap on recent posts and only the new ones surface. The default Most Relevant sort reshuffles results every run, so there's little to deduplicate.
⚠️ Scheduling a
searchmonitor? Include acookieString. RedNote gates anonymous keyword search, so a cookieless scheduled search returns 0 items at $0 on every run — a monitor that silently produces nothing. Add acookieString(see Cookies (Advanced)) so your recurring feed actually fills.user_postsmonitors work without a cookie.
Example — a daily Nike monitor that only bills for new reviews:
{"mode": "search","searchQuery": "Nike","cookieString": "web_session=YOUR_SESSION_COOKIE","sortBy": "time_descending","maxResults": 200,"deltaMode": true,"deltaStateKey": "nike-daily"}
Pair this with a daily cron (above) and your dataset grows with only fresh reviews each day — no duplicate pulls, no duplicate cost.
🧠 Need this at AI-training-corpus scale?
If you're pulling RedNote's first-person product reviews and lifestyle posts to train or fine-tune models, the Chinese AI Training Corpus Engine assembles all 5 suite platforms — Weibo, Bilibili, Xueqiu, Douban, and RedNote — into AI-ready documents in one run: deduplicated (MinHash), quality-scored, PII-scrubbed, and provenance-stamped (source URL, license hint, content hash) for EU AI Act documentation. From $0.025/doc, and rejects and duplicates are never charged.
📦 Want the full China feed? — China Monitoring Packages
RedNote is one platform. If you're monitoring a brand, three pre-configured bundles combine this Actor with the Chinese Brand Monitor (Weibo + RedNote + Bilibili + Douban + Xueqiu in one normalized feed), the AI Brand Visibility Monitor and the Xueqiu Scraper into set-and-forget recurring monitors — entirely self-serve on your own Apify account:
- Brand Starter (~$155/mo) — 1 brand, daily 5-platform mention delta + weekly AI-answer visibility.
- Competitive Intel (~$620/mo) — you + 3 competitors, daily share-of-voice, viral-breakout flags, weekly AI gap table.
- Fund Signal Desk (~$905/mo) — 10 tickers, daily sentiment-velocity feed + hourly Xueqiu quotes.
For context: enterprise listening suites charge $36K–$50K+/year for Chinese platform coverage — these land 85–95% below that, pay-per-event only, no contract. Each package is just saved Tasks + Schedules: copy the preset, Save as task, attach a schedule, done. Questions: the Issues tab (text support).
Track a whole creator set in ONE run
user_posts and profile accept a list of profiles, so one run — and one Schedule —
covers your entire watchlist instead of one run per creator:
{"mode": "user_posts","userUrls": ["https://www.xiaohongshu.com/user/profile/5d5a56c10000000001000813","https://www.xiaohongshu.com/user/profile/5df070e0000000000100076e","https://www.xiaohongshu.com/user/profile/YOUR_THIRD_CREATOR"],"maxResults": 20,"deltaMode": true}
maxResultsapplies per profile. 20 posts × 50 creators returns up to 1,000 rows.- Every row carries
profileUrl, so a 50-creator dataset stays attributable. - Profiles are scraped one after another, each with its own fresh IP — that rotation is what gets past RedNote's profile gate, and hammering 50 profiles at once is the pattern RedNote throttles.
- It is cheaper per post than 50 separate runs: the Actor-start fee ($0.05 at 4 GB) is charged once per run, so a batch pays it once.
- Pairs with
deltaMode: a daily Schedule then returns only the posts your watchlist published since yesterday, and already-seen posts are never charged. - If a profile is gated on a cookieless run, that profile is skipped with a warning (and not charged) while the rest of the batch continues.
Cookies (Advanced)
🤔 Do you actually need cookies?
Most buyers don't. Use this decision tree:
| Your mode | Do you need cookies? |
|---|---|
search (find posts by keyword) | ✅ Yes — RedNote now gates anonymous keyword search. Without a cookie the run safely returns 0 items at $0 charge (with a status message explaining why) instead of billing you for an irrelevant feed. Add a cookieString to get real keyword-matched results |
user_posts (list a user's posts) | ⚠️ Recommended — anonymous works on most runs (the Actor retries automatically), but RedNote gates profile feeds, so a cookieString is the only way to guarantee every run (and the only way to also get per-post note IDs / URLs) |
post_details with URL containing ?xsec_token=... | ❌ No — works anonymously |
post_details with bare URL from app share or copy-paste | ✅ Yes — RedNote gates anonymous detail-page access |
comments | ✅ Yes — comments are login-gated at scale |
profile (full bio, follower count, tags) | ✅ Yes — anonymous returns limited fields |
video with URL containing ?xsec_token=... | ❌ No — works anonymously |
video with bare URL from app share or copy-paste | ✅ Yes — RedNote gates anonymous detail-page access |
Rule of thumb — two tiers, and it is worth knowing which one you are buying:
- No cookie needed:
user_postsandprofileon creator URLs, andpost_details/videoon post URLs that keep theirxsec_token. The default mode isuser_posts, which is what most monitoring use cases need. - Needs a cookie:
comments(best-effort without one),search(RedNote serves anonymous keyword queries its recommendation feed instead of matches — cookieless search runs return 0 items and are never charged), and the post-level modes on bare URLs that lost their token.
If you want an unattended pipeline that goes from keyword or creator all the way down to post bodies and comment threads, you need a cookieString. Without one you can still get there, but the post URLs have to come from your browser.
⚡ Get your cookieString in 30 seconds
Step 1 (10s) — Log in
Open https://www.xiaohongshu.com in Chrome / Firefox / Edge and log into your RedNote account (use a throwaway account, see safety note below).
Step 2 (10s) — Open DevTools
Press F12 (or right-click → Inspect) → click the Application tab (Chrome / Edge) or Storage tab (Firefox) → in the left sidebar expand Cookies → click https://www.xiaohongshu.com.
Step 3 (10s) — Copy and paste
Find the cookie named web_session and copy its Value column. Paste it into the cookieString input like this:
web_session=PASTE_YOUR_VALUE_HERE
That's it. One cookie. The rest is automatic.
🚀 Pro tip — copy the whole Cookie: header (5 seconds)
If you're already in DevTools, an even faster path: open the Network tab → reload the page → click any request to xiaohongshu.com → scroll to Request Headers → right-click the Cookie: line → Copy value. Paste the whole thing into cookieString. Done — no field-picking, no copy-by-name.
Example input with cookies
{"mode": "comments","postUrls": ["https://www.xiaohongshu.com/explore/POST_ID"],"cookieString": "web_session=abc123def456...; webId=xyz...; a1=789..."}
The scraper auto-parses the cookie string regardless of whether you paste one cookie, three cookies, or the entire Cookie: header.
🛟 Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
login_required in the run log after providing cookies | Session expired (typical lifetime: 7-14 days) | Re-login to xiaohongshu.com and copy fresh web_session value |
| Comments mode returns 0 results | Cookie missing or for wrong domain | Confirm you copied from xiaohongshu.com, not xhslink.com or another mirror |
| Profile mode returns sparse fields | Anonymous access fallback (cookie not detected) | Check cookieString is on the input, not nested under another field |
| Sudden 403 / login-wall after working fine | Account got rate-limited or soft-banned | Rotate to a different throwaway account |
⚠️ Account safety — please read
Using your own Xiaohongshu account cookies with any scraper may violate the platform's Terms of Service and can lead to temporary or permanent suspension of the account whose cookies you paste. To stay safe:
- Use a throwaway account. Create a fresh RedNote account just for scraping. Never use a personal or business account you care about.
- Rotate cookies every few days. Sessions don't last forever, and rotating reduces the "fingerprint" risk.
- Don't push the volume. Cookie-tier mode triggers per-account rate limits. Start small, scale carefully.
- You assume all risk. This Actor and its author accept no liability for account actions taken by RedNote in response to your usage.
💡 Don't have a Chinese phone number for signup? Many buyers use a non-Chinese phone (RedNote accepts most international numbers as of 2026) or pick up a virtual SMS service. The account doesn't need a verified payment method to grab cookies.
Output Examples
Post output (search, user_posts)
{"mode": "search","postId": "69d269310000000023017e07","postUrl": "https://www.xiaohongshu.com/explore/69d269310000000023017e07","type": "normal","title": "Morning skincare routine for dry skin","images": ["https://sns-webpic-qc.xhscdn.com/..."],"likes": 15234,"author": {"userId": "575d32285e87e733f0162c0a","nickname": "BeautyQueen","avatar": "https://sns-avatar-qc.xhscdn.com/..."},"scrapedAt": "2026-04-10T21:14:30Z"}
ℹ️
user_postswithout acookieString: RedNote gates the per-post note ID on cookieless profile feeds, sopostIdandpostUrlcome back empty for those records — every other field (title,likes,images/cover,type,author) is still populated. Supply acookieStringto fill inpostId+postUrlas well.
Profile output
Default (no-browser HTTP) path — notesCount and isVerified are not on the
server-rendered profile page, so they come back null:
{"mode": "profile","userId": "5cfbc3f10000000018023ebb","profileUrl": "https://www.xiaohongshu.com/user/profile/5cfbc3f10000000018023ebb","nickname": "FoodBlogger","avatar": "https://sns-avatar-qc.xhscdn.com/avatar/...","description": "Food & travel content creator. 10 years, 40+ countries, 6000+ restaurants.","redId": "358997720","gender": 0,"location": "Shanghai","followers": 10000,"following": 320,"totalLikes": 10000,"notesCount": null,"isVerified": null,"tags": ["Food Blogger", "China"],"scrapedAt": "2026-04-10T21:15:03Z","fetchPath": "http","desc": "Food & travel content creator. 10 years, 40+ countries, 6000+ restaurants.","ipLocation": "Shanghai","likes": 10000}
ℹ️ Which fields depend on the path.
followers/following/totalLikesarenullwhenever RedNote does not report that count (never a made-up0), andnotesCount/isVerifiedare filled in only on rows with"fetchPath": "browser"— the fallback used when HTTP cannot resolve the profile, where an absent value is reported as0/false. On this HTTP row,desc,ipLocationandlikesare legacy aliases ofdescription,locationandtotalLikes, kept for pipelines built before September 2026.
Sentiment + language (when sentimentAnalysis: true)
Every record carries a language tag; with sentimentAnalysis: true each post & comment also gains a sentiment object:
{"language": "zh-CN","sentiment": {"polarity": "positive","score": 0.68,"method": "snownlp"}}
language ∈ zh-CN / en / mixed · sentiment.method is snownlp for Chinese text, keyword for the English fallback.
Use Cases by buyer
| Who | Why they use it |
|---|---|
| AI / LLM training data teams | Dense first-person Chinese consumer opinion text — high-quality SFT corpus for Chinese-language LLMs and sentiment classifiers |
| Equity research / hedge funds | Chinese consumer brand sentiment as alt-data leading indicator on retail-investor-relevant stocks (3-10× cheaper than Bloomberg Chinese consumer feeds) |
| Brand monitoring teams | Track product mentions, reviews, sentiment for Western brands launching in China |
| Influencer research / KOL agencies | Find creators by niche, analyze engagement, vet potential partners |
| Competitive intelligence | Monitor competitor content strategy and audience reception |
| Trend discovery / cultural analysts | Identify trending topics, products, and aesthetics before they go mainstream |
| Academic researchers | Chinese consumer-domain text for NLP, sentiment, cross-cultural studies |
Scrape RedNote with Python, JavaScript, or no code
Use this Actor directly from the Apify platform (no coding required), or call it via the Apify API from Python, JavaScript, or any language:
Python example:
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("zhorex/rednote-xiaohongshu-scraper").call(run_input={"mode": "search","searchQuery": "skincare routine","maxResults": 50})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
JavaScript example:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('zhorex/rednote-xiaohongshu-scraper').call({mode: 'search',searchQuery: 'skincare routine',maxResults: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Using the raw REST API (Postman / curl)
⚠️ The run endpoint is asynchronous — its response is the run object (IDs + status), NOT your scraped data. If you
POSTto/acts/.../runsyou get back something like{ "data": { "status": "READY", "defaultDatasetId": "…" } }with no posts in it — that's expected, the run hasn't finished yet. The scraped records land in the run's dataset, not in that response. (Likewise, thecontainerUrllink is the live container; once a run finishes it just shows "run has already finished with status SUCCEEDED" — that message means success, it is not where the data lives.)
Easiest — one call that waits for the run and returns the records directly:
curl -X POST "https://api.apify.com/v2/acts/zhorex~rednote-xiaohongshu-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"mode":"post_details","postUrls":["https://www.xiaohongshu.com/explore/POST_ID?xsec_token=TOKEN"]}'
The response body is the JSON array of scraped records — no second call needed.
Or async — start the run, then fetch the dataset once it finishes:
# 1) start the run — note the "defaultDatasetId" in the responsecurl -X POST "https://api.apify.com/v2/acts/zhorex~rednote-xiaohongshu-scraper/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"mode":"search","searchQuery":"skincare routine","maxResults":50}'# 2) when the run status is SUCCEEDED, fetch the records from its datasetcurl "https://api.apify.com/v2/datasets/DEFAULT_DATASET_ID/items?token=YOUR_API_TOKEN"
💡 In the Apify Console you can also open any run and click the Output / Storage → Dataset tab to view and download the same data as JSON / CSV / Excel.
Pricing
This Actor uses Pay-Per-Event pricing — you only pay for the records you receive, billed by mode. The new tiered pricing reflects the actual extraction cost per record type.
| Mode | Event | Price |
|---|---|---|
search / user_posts / post_details | post-scraped | $0.06 / post |
comments | comment-scraped | $0.03 / comment |
profile | profile-scraped | $0.12 / profile |
video | video-extracted | $0.15 / video |
| Actor start | apify-actor-start | $0.0125 per GB of run memory = $0.05 per run at the default 4 GB |
Note: you pay the per-mode event price only for records actually returned — empty/gated results are never charged.
apify-actor-startis billed once per run, so a few large runs cost less in start fees than many tiny ones. Theapify-default-dataset-itemevent is $0.00001.
Typical costs (small-scale):
- Search 100 posts: ~$6.00
- Scrape a user's profile: ~$0.12
- Extract 30 user posts: ~$1.80
- 200 comments: ~$6.00
- 10 video extractions: ~$1.50
B2B / bulk-scale examples (post-cutover):
- AI training corpus seed (5,000 posts): ~$300
- Daily brand sentiment monitor (200 posts/day for a month): ~$360/month
- Equity research signal (10 tickers × 100 posts daily): ~$1,800/month
- Influencer database (1,000 profiles + 20K posts): ~$120 profiles + $1,200 posts
- Crisis monitoring (1,000 posts + 5,000 comments per month): ~$210/month
Bulk run patterns — how power users actually use this
Most one-off testers run maxResults: 20-50 and stop. Power users run scheduled cron jobs at maxResults: 500-5,000 with liteMode: true for metadata pulls. Below is the volume-cost map so you know which lane fits your workflow:
| Scale tier | Volume / month | Monthly cost (post-cutover) | Typical buyer | Best mode + flags |
|---|---|---|---|---|
| Test / one-off lookup | < 500 items | < $30 | Researcher, journalist | maxResults: 20-50, defaults |
| Daily small monitor | 5K-15K items | $300-900 | DTC brand on own keyword | maxResults: 200, daily cron |
| Brand sentiment agency | 30K-100K items | $1,800-6,000 | Agency monitoring 5-20 client brands | maxResults: 500-1000, hourly/daily cron, liteMode: true for metadata-only feeds |
| KOL discovery / influencer DB | 5K-50K profiles | $600-6,000 | Influencer marketing platform | mode: profile, maxResults: 1000, scheduled refresh |
| AI training corpus | 50K-1M items over many runs | $3,000-60,000 | LLM fine-tuners, RLHF corpora | mode: search with a cookieString, one query per run (~1,800 results max), many scheduled Tasks |
| Equity research alt-data | 30K-100K items | $1,800-6,000 | China-watcher hedge fund | Multi-keyword cron, paired with zhorex/xueqiu-scraper |
| Crisis monitoring | 50K+ items + comments | $3,000+ for the posts, plus $0.03 per comment | Comms / PR team for global brand | Hourly cron, includeComments: true, sentiment downstream |
| Enterprise volume | > 1M items | Custom — DM author | KOL DB SaaS, Chinese-data licensors | Volume pricing + dedicated proxy pool |
Speed tip for bulk metadata pulls: enable liteMode: true. Returns only postId, postUrl, title, likes, type, scrapedAt — a smaller payload (same scrape time, same price per row). With a cookieString the xsec_token is preserved in postUrl, so you can two-stage: lite-pull thousands → cherry-pick the highest-engagement ones → run post_details on just those for full body content.
Speed tip for bulk profile / comment / video pulls: bump concurrency: 4 → 10 (max). RedNote rate-limits become the bottleneck above that, but a single bulk run completes 2.5× faster.
Volume pricing available above 50K items/month (see Enterprise section above).
No separate compute or proxy charges — you pay only the events above.
Proxy Configuration
Leave the default (Apify Proxy, automatic datacenter): measured 2026-08-26 it returned more posts than residential for less. Switch to the RESIDENTIAL group only if a public profile comes back empty — it is slower. You can also plug in your own proxy.
How It Works
This Actor handles all the tricky parts of accessing RedNote so you don't have to:
- No login for creator posts and profiles — works against publicly accessible content only. The optional
cookieStringinput uses your own session to unlock the modes RedNote gates against anonymous callers: keywordsearch, and the post-level modes (post_details,comments,video) when you do not want to copy tokenised URLs by hand. - Popups, cookie consent, and login walls are dismissed automatically.
- Smart pacing and retry built in — multiple URLs are processed in parallel (configurable
concurrency, default 4) and the scraper recovers gracefully from transient errors. - Tokens propagated through the pipeline (with a cookieString) — URLs emitted by cookie-backed
searchanduser_postsruns include the auth token RedNote needs, sosearch → post_detailschains work without manual URL fixup. - Honest failure reporting — gated or deleted posts are skipped and never charged; the run status says how many and the log says why.
- Clean structured JSON ready for analysis or downstream pipelines. Export to CSV, Excel, XML, or stream via webhooks.
You provide the input (search query, user URL, or post URL); the Actor returns the data. That's it.
Performance defaults (v2.1)
| Default | What it does | When to change it |
|---|---|---|
concurrency: 4 | Process 4 URLs in parallel for post_details / comments / video | Increase up to 10 for max throughput; decrease to 1 to reduce memory footprint |
blockResources: true | Skip downloading images, fonts, ad / tracker bytes — halves bandwidth, no impact on extracted data | Disable only for debugging |
networkCapture: true | Use the v2.1 fast extraction path that completes earlier in the page-load lifecycle | Disable only for debugging |
liteMode: false | Return the full data schema (19 fields per post) | Set true to get only metadata (8 fields) (same price per row) |
What works best (mode reliability)
This Actor is built for the use cases users actually care about — brand monitoring, influencer research, trend discovery — not edge cases. Here's an honest breakdown:
| Mode | Reliability | Best for |
|---|---|---|
search | 🟡 Requires cookieString | Keyword search — RedNote gates anonymous search; cookieless runs return 0 items at $0 charge. With a cookieString you get real keyword-matched results |
user_posts | 🟡 Anonymous access is gated at times (retries built in) | Influencer analysis, competitor research |
profile | 🟡 Anonymous returns limited fields | Influencer vetting, audience research |
post_details | ✅ With a tokened URL (no login) | Deep-dives on specific posts: full text, images, counts |
comments | 🟡 Best-effort | Sentiment analysis on accessible posts |
video | ✅ With a tokened URL (no login) | Video archival: direct .mp4 URLs |
Notes:
- Smart rate limiting: built-in pacing keeps the scraper reliable. Plan a few hundred results in a single run; for very large extractions split into multiple runs.
- Content language: most RedNote content is in Chinese. Data returns as-is — pair with your translation pipeline of choice.
- Engagement metrics (followers, likes) use approximate values when RedNote shows "1万+" (10k+) format.
- Search results: reliable keyword search requires a
cookieString(RedNote gates anonymous search). Cookieless search runs return 0 items and are never charged.
FAQ
Q: Why did my search run return 0 items?
A: RedNote now gates anonymous keyword search — without a cookieString, RedNote serves a generic recommendation feed instead of your keyword's results. Rather than charging you for irrelevant data, the Actor detects this and returns 0 items at $0 cost, with a status message explaining the fix. Add a cookieString (takes 30 seconds — see Cookies section) and search returns real keyword-matched posts reliably.
Q: Can I scrape English content?
A: Yes. RedNote has a growing global user base, especially after the TikTok situation. Search in any language. Tip for Chinese brand/market monitoring: the Chinese brand name (e.g. 耐克 for Nike, 阿迪达斯 for Adidas) returns far more native consumer content than the Latin spelling — search both for full coverage. Few results on a brand usually means the keyword language, not an error.
Q: How fast is it?
A: As of v2.1 (May 2026): a 10-item search completes in 25-35 seconds. Multi-URL post_details workloads with the default concurrency: 4 process roughly 5-12 seconds per URL depending on RedNote response time — a 100-URL batch typically finishes in 4-8 minutes. Larger extractions (1,000+ items) are best split across runs for resilience.
Q: How does it compare to building your own RedNote scraper? A: Saves weeks of work. Handling RedNote's auth tokens, rate limits, popups, login walls, frontend changes, and Chinese encoding correctly is a substantial project — and the platform updates its frontend frequently. This Actor abstracts all of that and is actively maintained; bugs typically get patched within 48 hours.
Q: Does it work with short links (xhslink.com)?
A: The Actor follows the short link before it does anything else, including before the no-token stop. An app share link redirects to the full post URL with its xsec_token attached, so if the link still resolves to a post the run continues with no cookieString. Share codes do expire: an expired one redirects to the RedNote homepage, and the run then stops before the browser (start fee only) and says so — re-share the post from the app for a fresh link, or paste the full xiaohongshu.com URL. Profile short links are not accepted in user_posts / profile: paste https://www.xiaohongshu.com/user/profile/<id>.
Q: Can I scrape in bulk?
A: postUrls and userUrls accept many URLs per run; search takes one query per run (use several Tasks for several queries). maxResults goes up to 5,000 per target.
Q: What's the difference between this and other RedNote scrapers?
A: This is a single unified Actor that handles search, profiles, user posts, comments, videos, and post details — 6 modes in one tool. Other options require 5-6 separate actors for the same functionality. Plus, with a cookieString, we propagate the auth tokens RedNote requires for detail-page access, so chaining search → post_details works out of the box without manual URL fixup.
Q: Is there a RedNote/Xiaohongshu API? A: There is no official public API for RedNote (Xiaohongshu). This Actor serves as the best Xiaohongshu API alternative — it extracts structured data from the public web interface without requiring login or API keys.
Q: How much does it cost to scrape RedNote?
A: Pricing is tiered by record type — $0.06 per post (search / user_posts / post_details), $0.03 per comment, $0.12 per profile, $0.15 per video. So 100 posts ≈ $6.00 and a profile ≈ $0.12. Start with Apify's free plan, which includes $5 of monthly credits — enough to pull about 80 posts (or ~165 comments) to try it out. Note that maxResults is a cap PER TARGET, so two profiles at 20 can return up to 40 rows.
Q: Can I scrape RedNote in Python?
A: Yes. Use the Apify Python client (pip install apify-client) to call this Actor programmatically. See the Python example above.
Q: What is Xiaohongshu (Little Red Book)? A: Xiaohongshu (小红书), also known as RedNote or Little Red Book, is China's leading lifestyle social commerce platform with 300M+ monthly active users. It combines social media and e-commerce, popular for product reviews, beauty, travel, fashion, and food content.
Q: Is scraping RedNote legal? A: This Actor accesses only publicly visible content on RedNote's website — the same content any browser user can see. No login or authentication is used. Always consult legal counsel for your specific use case and jurisdiction.
Integrations & data export
Export your RedNote data in JSON, CSV, Excel, or XML. Integrate directly with:
- Google Sheets — automatic data sync for brand monitoring dashboards
- Zapier / Make / n8n — workflow automation and alerts
- REST API — programmatic access from Python, JavaScript, or any language
- Webhooks — real-time notifications when scrapes complete
Other scrapers by Zhorex
Chinese Digital Intelligence Suite:
- 🆕 Chinese Brand Monitor — Cross-platform brand mention aggregator across all 5 platforms ($0.045/mention)
- Weibo Scraper — Posts, hot search, trending topics (580M+ users)
- Bilibili Scraper — Video, danmaku, Gen-Z creator analytics (300M+ users)
- Douban Scraper — Long-form reviews, ratings, group discussions (movies/books/music)
- Xueqiu Scraper — Chinese stock-discussion sentiment, cashtag indexing
- RedNote Shop Scraper — Xiaohongshu e-commerce products, vendors, prices
Reviews & alt-data:
- Letterboxd Scraper — Western film reviews and ratings
- G2 Reviews Scraper — B2B software reviews via public API
- Capterra Reviews Scraper — Software reviews with sub-ratings
- Booking.com Reviews Scraper — Hotel reviews and ratings
- Review Intelligence Aggregator — Multi-source review aggregation
Markets & alt-data:
- TradingView Scraper — Stocks, forex, crypto data
- Hyperliquid Pro Scraper — DeFi top traders, vaults, perpetual markets
Price & availability monitors — same delta pattern as this actor's deltaMode: run them on a schedule and only what CHANGED is returned and billed.
- 🆕 Hostelworld Rate & Availability Monitor — forward-dated accommodation rates, promo stack, commission split
- 🆕 Resy Availability & Scarcity Monitor — restaurant slots by date and party size, prime-window scarcity
- 🆕 DE/AT Pharmacy Price & Stock Monitor — OTC prices, RRP breaches, stock status
- 🆕 UK Tyre Price & Fitment Monitor — tyre prices by size and postcode
- 🆕 UK PPE Shelf Monitor — 14K+ SKUs, price moves, new listings and delistings
Streaming Analytics:
- Twitch Scraper — Streamer profiles, live streams, clips
- Kick.com Scraper — Kick streamer analytics
- YouTube Shorts Scraper Pro — YouTube Shorts data
Other Tools:
- Perplexity AI Search Scraper — AI search results
- Telegram Channel Scraper — Telegram messages
- Tech Stack Detector — Detect technologies used by websites
- LinkedIn Company Enrichment — Enrich company records
- Domain Authority Checker — Bulk SEO domain analysis
- Phone Number Validator — Phone validation
- Sneaker Price Tracker — Track sneaker prices across platforms
Your Review Matters ⭐
This Actor is part of Zhorex's Chinese Digital Intelligence Suite. If it delivered the data you needed, a 30-second review helps a lot:
- Go to the RedNote Scraper page
- Click the star rating (top of the page)
- Optionally leave a one-line note (e.g. "extracted 200 skincare posts in 5 minutes")
Why it matters: reviews are the #1 signal Apify users check before trying a scraper. A high rating means more users find this Actor instead of broken or abandoned alternatives — which means faster updates, more features, and better support for everyone.
Found a bug or missing feature? Open an issue on the Actor page and it'll typically be fixed within 48 hours.
Last updated: September 2026 · Actively maintained · Trusted by AI training data teams, equity research desks, brand monitors, and influencer-research analysts.