Xiaohongshu (RedNote) Scraper — Public Notes
Pricing
from $2.99 / 1,000 scraped items
Xiaohongshu (RedNote) Scraper — Public Notes
Scrape public Xiaohongshu (RedNote) explore notes and full note pages with no login. Get titles, body text, likes, collects, comment counts, image URLs, video URLs, and hashtags. Export JSON via API, Python, Node.js, or MCP.
Pricing
from $2.99 / 1,000 scraped items
Rating
0.0
(0)
Developer
Andrej Kiva
Maintained by CommunityActor stats
0
Bookmarked
20
Total users
2
Monthly active users
8 days ago
Last modified
Categories
Share
Disclaimer: Unofficial tool — not affiliated with, sponsored by, or endorsed by Xiaohongshu / RedNote or its affiliates. Data is read from publicly accessible pages only. No login. You are responsible for complying with applicable law (including GDPR where personal data appears) and the site’s terms. No warranty on accuracy or availability. Provided for informational and research use.
| Social discovery | Website traffic |
|---|---|
| Xiaohongshu (RedNote) Scraper ◄── you are here | Similarweb Scraper |
| TikTok Trending Hashtags Scraper | |
| Bluesky Scraper | |
| YouTube Comments Scraper |
Xiaohongshu scraper and RedNote API alternative — extract publicly accessible image and video notes from Xiaohongshu (小红书 / XHS / Little Red Book) as structured JSON. The recommend explore feed returns note cards with a title, like count, cover, author, and xsecToken. note_detail opens that URL and adds the body, full image gallery, video URL, hashtags, and collect / comment / share counts.
Scrape Xiaohongshu / RedNote with Python, Node.js, cURL, or MCP / AI assistants. Export JSON, CSV, or Excel from the dataset. No login and no cookies. Keyword search, comment text, and creator profile pages are login-gated and are not part of this Actor.
When to use
- China consumer research and 种草 / haul monitoring from notes that are already on the public recommend feed
- Pull a note's body, image gallery, video stream, hashtags, and numeric engagement without the app
- Build a research corpus from public notes you have the right to process
- Chain explore → note_detail: every explore row already carries
urlandxsecToken
When not to use
- Private accounts, chats, inboxes, or gated content — public pages only; the Actor does not log in.
- Keyword search, comment text, or creator profile stats (bio, fans, Red ID, a creator's note grid) — those pages load empty without a login. This Actor does not accept cookies.
- You paste a bare note ID or an old
xsec_token— Xiaohongshu serves a removed-page response. Run explore and reuse theurlfrom that dataset. - You want 蒲公英 (PGY) rate cards or mall checkout SKUs — not in this version.
Key features
- Two public modes — explore and note detail
- No login or cookies — recommend explore (about 30 notes per reload) and note HTML only
- Numeric twins for Chinese counts —
"1.5万"→15000,"1千+"→1000 - Video notes —
h264master URL, duration, quality, backup CDNs, subtitle URLs when Xiaohongshu publishes them - Share links —
xhslink.comredirects that land on a note page - Residential proxy recommended — datacenter IPs hit Xiaohongshu's 安全限制 / 300011 wall
Input
| Parameter | Description |
|---|---|
mode | explore (default) or note_detail |
startUrls | note_detail only. Paste url values from an explore run, including ?xsec_token= |
channel | Public recommend SSR feed only |
fullDetail | Hydrate each public explore card to full note HTML |
maxItems | Dataset cap (default 50) |
maxPages | How many times to reload explore (feed rotates) |
proxyConfiguration | Apify RESIDENTIAL recommended |
Public recommend feed (first run, no cookie):
{"mode": "explore","channel": "recommend","maxItems": 30,"maxPages": 1,"fullDetail": false,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Full note from an explore row. Copy url from that dataset. Do not reuse an old token.
{"mode": "note_detail","startUrls": [{"url": "https://www.xiaohongshu.com/explore/NOTE_ID?xsec_token=TOKEN_FROM_EXPLORE&xsec_source=pc_feed"}]}
Output
One dataset row per public note.
| Field | Description |
|---|---|
type | note |
noteId / userId | Xiaohongshu identifiers |
title / desc | Note title and body |
likedCountNum / collectedCountNum / commentCountNum / shareCountNum | Parsed engagement |
imageUrls / coverUrl / videoUrl | HTTPS media |
hashtags | Topic names from tagList |
xsecToken | Token to reuse in note_detail |
url | Note URL, including xsec_token, for a follow-up note_detail run |
userNickname | Author name from the note card |
scrapedAt | UTC timestamp |
Note row (abridged):
{"type": "note","source": "note_detail","noteId": "NOTE_ID","noteType": "normal","title": "Note title","likedCount": "5301","likedCountNum": 5301,"collectedCountNum": 2199,"commentCountNum": 269,"shareCountNum": 277,"hashtags": ["topic"],"userNickname": "author","url": "https://www.xiaohongshu.com/explore/NOTE_ID?xsec_token=TOKEN&xsec_source=pc_feed","xsecToken": "TOKEN"}
Use cases
- Track which notes are surfacing on the public recommend feed
- Collect image URLs and video streams for a note you already have from explore
- Compare like, collect, comment, and share counts on those public notes
- Feed RedNote JSON into an MCP / agent workflow instead of screenshotting the app
Integration examples
Replace YOUR_TOKEN with your Apify API token. Actor name: crawloop/xiaohongshu-scraper.
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('crawloop/xiaohongshu-scraper').call({mode: 'explore',maxItems: 20,proxyConfiguration: { useApifyProxy: true, apifyProxyGroups: ['RESIDENTIAL'] },});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("crawloop/xiaohongshu-scraper").call(run_input={"mode": "explore","maxItems": 20,"proxyConfiguration": {"useApifyProxy": True, "apifyProxyGroups": ["RESIDENTIAL"]},})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items[0]["title"], items[0]["likedCountNum"], items[0]["url"])
cURL
curl "https://api.apify.com/v2/acts/crawloop~xiaohongshu-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"mode":"explore","maxItems":10}'
MCP and AI assistants
Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call this Actor by its Store ID / name.
Example prompts:
- "Run Xiaohongshu (RedNote) Scraper in explore mode for 20 notes and return title, likes, hashtags, and author as JSON"
- "Scrape this Xiaohongshu note URL with crawloop/xiaohongshu-scraper and summarize engagement, images, and video URL"
- "Take urls from a Xiaohongshu explore run and call crawloop/xiaohongshu-scraper in note_detail mode, then summarize body, images, and video URL"
Suite next step
After explore, run note_detail with each row's url. For Western trend context on the same brief, use TikTok Trending Hashtags Scraper.
FAQ
Is this a Little Red Book / XHS / 小红书 scraper?
Yes. Xiaohongshu, RedNote, Little Red Book, XHS, and 小红书 are the same platform. This Actor reads the public web app.
Do I need a Xiaohongshu account?
No. Explore and note detail read public HTML. The Actor rejects cookie input. Keyword search, comment text, and profile stats need a login, so they are not offered.
Where does xsec_token come from?
Every explore row includes url and xsecToken. Paste that url into note_detail. Tokens expire; a link copied weeks ago often returns an empty page.
Can I get fans, bio, or a creator's posts?
Not from the public profile page. It renders without those fields unless you are logged in.
Is this an official Xiaohongshu API?
No. It is a Xiaohongshu API alternative that reads publicly accessible web pages (window.__INITIAL_STATE__) without credentials or authenticated cookies.
Can I scrape Xiaohongshu with Python or Node.js?
Yes. Use the Apify client examples above, or call the Actor from MCP / an AI assistant and export the dataset as JSON.