Xiaohongshu (RedNote) Notes Scraper, No Login avatar

Xiaohongshu (RedNote) Notes Scraper, No Login

Pricing

from $1.74 / 1,000 notes

Go to Apify Store
Xiaohongshu (RedNote) Notes Scraper, No Login

Xiaohongshu (RedNote) Notes Scraper, No Login

Get public Xiaohongshu (RedNote) notes with title, text, hashtags, images, video, likes, saves, comments, author and date from note links, author profiles or the trending feed. No login, no cookies.

Pricing

from $1.74 / 1,000 notes

Rating

0.0

(0)

Developer

Cliqto Media

Cliqto Media

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Features

Limited permissions

Share

Get public Xiaohongshu (RedNote, 小红书) notes as clean data rows: title, text, hashtags, images, video, likes, saves, comments, shares, author and date. Start from note links, author profiles or the trending Explore feed.

It is for marketers, brand teams and researchers who track content on RedNote. The form opens ready to run: 20 full notes from the trending feed in under a minute, for about $0.06. No login and no cookies.

Xiaohongshu (RedNote) Notes Scraper: note links, profiles or trending feed in, one row per note out with likes, collects, comments, tags and author

Table of contents

What it does

The Actor reads public Xiaohongshu pages the same way a visitor sees them and saves one row per note. It has three modes:

  • Note links — full notes from your links: text, hashtags, all images, video link, counters, author, dates.
  • Author profiles — the notes a profile shows to visitors (about 30 latest per profile). Xiaohongshu hides note text and note IDs on profiles from visitors, so these rows are short "cards": title, cover, likes, author, date.
  • Trending feed — notes from the Explore feed or one of its channels (fashion, food, travel and more). Each note is opened and saved in full.

It does not log in and does not search by keyword: Xiaohongshu shows search only to signed-in users.

Good fit

  • Check likes, saves and comments of your own or competitor notes.
  • See what the Explore feed of a channel shows right now, on a schedule. The feed mixes new and older notes, so check createdAt if you need only recent ones.
  • Watch the latest posts of creators you work with.

👉 Try it now: open the input form

How it works

  1. The Actor opens each public note page, profile page or Explore feed page.
  2. It reads the note data from the page and cleans it: hashtags without the [话题] mark, empty counters as 0, dates in ISO format.
  3. It saves one Dataset row per note, and a short run report (RUN_SUMMARY) with a status for every link.

👉 Try it now: open the input form

Quick start

Input form with What to scrape, Feed channel and Max notes in boxes 1, 2 and 3

  1. Open the Input tab. What to scrape is already Trending feed (box 1). To use your own links, pick Note links or Author profiles and add them in Links.

  2. Keep Feed channel = Recommended, or pick another channel (box 2).

  3. Keep Max notes = 20 (box 3), then click Start at the bottom of the form.

  4. Open the Output tab and check the title, author, likes, saves and comments (box 4).

    Output table with 20 notes: title, author, likes, saves and comments in box 4

Expected result: 20 full notes in under a minute (our test runs took 15 and 33 seconds) for about $0.06.

👉 Try it now: open the input form

Use cases

Buyer jobInput pathOutput entityKey fieldsNext integration
Track counters of chosen notesmode: note, urlsfull notelikes, collects, comments, sharesschedule + export to Google Sheets
Find trending content in a nichemode: trending, channelfull notetitle, tags, likes, createdAtschedule + onlyNew
Watch creators' new postsmode: user, urlsnote cardtitle, likes, coverUrl, createdAt, author.followersschedule + onlyNew, webhook

👉 Try it now: open the input form

Input

Input fields

FieldPlain nameTypeRequiredDefault / prefillAllowed valuesEffectExampleRecommendation
modeWhat to scrapestringyesdefault note, prefill trendingnote, user, trendingpicks the sourcetrendingnote for exact notes, trending for discovery
urlsLinksarray of stringsin note and user modesnonenote links with xsec_token, xhslink.com share links, profile links, 24-character user IDswhat to openhttps://www.xiaohongshu.com/user/profile/5ff0e6410000000001008400up to 100 note links or 20 profiles; duplicates are removed
channelFeed channelstringnodefault and prefill recommendrecommend, fashion, food, cosmetics, movies, career, relationships, home, gaming, travel, fitness, videoExplore channelfoodonly for trending
maxItemsMax notesintegerno201–500most notes in the whole run100you pay per saved note, so set it to what you need
onlyNewOnly new notesbooleannofalsetrue / falseskips notes this account already got beforetruefor scheduled runs
stateNameMemory namestringnodefaultletters, digits, -which memory onlyNew usesfood-dailyone name per monitoring task
proxyConfigurationProxyobjectnoApify Proxy (datacenter)Apify Proxy settingshow pages are fetched—keep the default; it is included in the price. Residential and other paid proxy groups are not used; your own proxy URLs work
deliveryConnectorSend results to (optional)stringnononeone of your Apify MCP connectorsposts a short run summary to Slack or Notionyour Notion connectorleave empty if you do not need it
deliveryTargetNotion page or channel (optional)stringnononea Notion page link or a Slack channel IDwhere the summary goesa Slack channel IDneeded only with deliveryConnector

Note links must keep their xsec_token=… part. Xiaohongshu opens a note to visitors only with this token. Links copied from Share in the app or from the browser address bar have it. The token does not last forever: after some time the same link stops opening and gives a free not_found row. If that happens, copy a fresh link. Trending and profile runs do not need a token from you.

Interacting settings

WhenInput AInput BEffective behaviorExampleCost/result effect
Many linksurlsmaxItemsstops when maxItems notes are saved; links not opened get the status skipped20 profiles, maxItems: 25you pay for 25 notes only
MonitoringonlyNewstateNamenotes saved before under the same memory name are skippeddaily run, stateName: food-dailyonly new notes are charged
Trendingmode: trendingmaxItemsXiaohongshu shows visitors about 180–280 notes of a channel per runmaxItems: 500you get about 180–280 and a warning in RUN_SUMMARY

Input examples

{
"mode": "note",
"urls": [
"https://www.xiaohongshu.com/discovery/item/6adb353a000000002a028a34?xsec_token=YBd35GuM-QFDA-zWqoOCqGvfjH7N0cffdkKKWfjg2BVjs%3D&xsec_source=app_share"
],
"maxItems": 20
}

Expected behavior: opens the note and saves it. This example link can expire; use a fresh one if you get not_found. Expected output: one full note with title, desc, tags, likes, collects. Limit or cost note: one start fee and one Note event.

{
"mode": "trending",
"channel": "fashion",
"maxItems": 100,
"onlyNew": true,
"stateName": "fashion-daily"
}

Expected behavior: reads the fashion feed and opens new notes. Expected output: up to 100 full notes with channel: "fashion". Limit or cost note: about 180–280 notes per run at most; the next run pays only for new notes.

👉 Try it now: open the input form

Output

Output fields

FieldMeaningTypeCan be empty?Example / enumSource / notes
noteIdnote IDstringyes, on profile cards64abf31b00000000120125beXiaohongshu hides IDs on profiles from visitors
urlnote link that opensstringyes, on profile cardshttps://www.xiaohongshu.com/explore/…?xsec_token=…with a fresh token
titletitlestringyes大家要的短裙来咯some notes have no title
descnote textstringyes, on cardstext with #hashtags[话题] marks removed
typenote typestringyesimage, video
authorauthorobjectyes{userId, nickname, avatarUrl, profileUrl, redId, followers, following, likesAndCollects, location}public fields only. redId, followers, following, likesAndCollects and location come from the profile page, so they are filled in user mode and null in other modes. The site rounds the numbers: 10+ becomes 10, 1万+ becomes 10000
likeslikesintegeryes2526big numbers are rounded by the site: 8.7万 becomes 87000
collectssavesintegeryes, on cards646rounded like likes
commentscommentsintegeryes, on cards140the site shows an empty value for zero; we save 0
sharessharesintegeryes, on cards151
tagshashtagsarray of stringsno (can be [])["ootd穿搭"]
imagesimagesarray of objectsno (can be [])[{url, width, height}]all images of the note
coverUrlcover imagestringyesimage link
videoUrlvideo streamstringyes.mp4 linkvideo notes only
createdAtpublish timestring (ISO)yes2023-07-10T12:01:31.000Z
updatedAtlast edit timestring (ISO)yesnot on cards; can be earlier than createdAt, as the site shows it
ipLocationauthor region as the site shows itstringyes浙江often empty: the site does not show it on many notes
detailhow complete the row isstringnofull, cardcard = profile or feed card only
modemode that found the notestringnonote, user, trending
channelfeed channelstringyesfashiontrending only
inputUrlyour linkstringyesempty in trending
statusrow statusstringnocomplete, partialpartial = feed card saved, note page did not open
errorreason for partialstringyes
fetchedAtwhen it was collectedstring (ISO)no

Moving from another RedNote scraper? Common names: id → noteId, engagement.liked_count → likes, collected_count → collects, comments_count → comments, shared_count → shares, video → videoUrl, timestamp → createdAt.

Output entities and surfaces

SituationDataset/API/KVS/live viewResult shapeUser action
Normal itemDataset, view Notesone row per note, status: completeopen, export or use likes, tags
Domain-empty resultDataset holds only free not_found rows, RUN_SUMMARYstatus: not_found rows and inputs[] with the reasoncheck the link and its xsec_token
Partial resultDatasetstatus: partial, detail: card, no textrun the note link again in note mode
Source stopped answering partwayDataset, RUN_SUMMARYsaved rows stay, the run ends as Succeeded, status: partial, stopReason: SOURCE_ERROR, a warning in warningsrun again for the rest
Technical failure with nothing savedRUN_SUMMARYthe run ends as Failed, status: failed, stopReason, messagetry again later

Output example

{
"noteId": "64abf31b00000000120125be",
"url": "https://www.xiaohongshu.com/explore/64abf31b00000000120125be?xsec_token=ABtBwHcu7rrk2ZOH0uuALyQCzfi9sLXTZzr34IPsd2p6o%3D&xsec_source=pc_feed",
"title": "大家要的短裙来咯",
"desc": "姐妹们要的网红格子短裙来咯,这个颜色很赞!#公主的100条连衣裙 #无法拒绝温柔感小裙子 #ootd穿搭 #网红女装测评 #辣妹穿搭",
"type": "video",
"author": {
"userId": "6416ce0f0000000011020e22",
"nickname": "油克李李",
"avatarUrl": "https://sns-avatar-qc.xhscdn.com/avatar/642d445bc687b724391f6a2a.jpg",
"profileUrl": "https://www.xiaohongshu.com/user/profile/6416ce0f0000000011020e22",
"redId": null,
"followers": null,
"following": null,
"likesAndCollects": null,
"location": null
},
"likes": 2526,
"collects": 646,
"comments": 140,
"shares": 151,
"tags": ["公主的100条连衣裙", "无法拒绝温柔感小裙子", "ootd穿搭", "网红女装测评", "辣妹穿搭"],
"images": [
{ "url": "https://sns-webpic-qc.xhscdn.com/…!nd_dft_wlteh_jpg_3", "width": 1080, "height": 1920 }
],
"coverUrl": "https://sns-webpic-qc.xhscdn.com/…!nd_dft_wlteh_jpg_3",
"videoUrl": "https://sns-video-zl.xhscdn.com/stream/110/258/…_258.mp4?sign=…",
"createdAt": "2023-07-10T12:01:31.000Z",
"updatedAt": "2023-07-10T12:01:31.000Z",
"ipLocation": null,
"detail": "full",
"mode": "trending",
"channel": "fashion",
"inputUrl": null,
"fetchedAt": "2026-10-26T14:25:21.971Z",
"status": "complete",
"error": null
}

This is one real row from the fashion feed; image and video links are shortened. null means the site did not show this value to a visitor. A profile card has detail: "card", noteId: null, url: null, desc: null and only likes from the counters, and its author also has redId, followers, following, likesAndCollects and location.

Send results to Slack or Notion

Pick your connector in the optional deliveryConnector field. After the run saves its data, the Actor posts a short summary (up to 25 rows and a link to the full dataset) there. Put a Notion page link or a Slack channel ID in deliveryTarget: in Notion every run is added on top of that one page, so your workspace does not fill up with new pages. A delivery error never fails the run and costs nothing extra. Connect a service once in Apify Console → MCP connectors.

Use case → fields

Buyer jobInput pathOutput entityKey fieldsNext integration
Track counters of chosen notesmode: note, urlsfull notelikes, collects, comments, sharesschedule + export to Google Sheets
Find trending content in a nichemode: trending, channelfull notetitle, tags, likes, createdAtschedule + onlyNew
Watch creators' new postsmode: user, urlsnote cardtitle, likes, coverUrl, createdAt, author.followersschedule + onlyNew, webhook

👉 Try it now: open the input form

Pricing

Pricing unit

You pay per event:

  • Actor Start — $0.01 per run. It scales with run memory: one event per GB, at least one. The default memory is 256 MB, so it is one event.
  • Note — per saved note row: $2.49 per 1,000 notes on the free plan, lower on paid plans (down to $1.74 per 1,000 on Gold).

Every saved row is a Note event, also a partial row (feed card without text). Links that are not found, fail or are skipped are free. A run with no notes costs only the start fee. A monitoring run with onlyNew and no new notes costs only the start fee. A failed or stopped run is charged the start fee and the notes it saved. Platform usage and the proxy are included.

Cost examples

ScenarioInput scopeExpected item/event countBase chargeOptional chargeStop/cap behavior
One note1 note link1 note$0.0125none—
Default20 notes20 notes$0.06nonestops at maxItems
Trending runone channel, maxItems: 100100 notes$0.259noneabout 180–280 at most per run
Large runone channel, maxItems: 300280 notes, measured in our largest test$0.707nonethe feed ended at 280
Nothing found100 deleted note links0 notes$0.01nonestatuses in RUN_SUMMARY

Prices are for the free plan. On Gold, 100 notes cost $0.184.

👉 Try it now: open the input form

Limits

  • No keyword search: Xiaohongshu shows search only to signed-in users.
  • Note links need their xsec_token. A bare /explore/<id> link, or a link with an expired token, gives not_found.
  • Profiles show visitors about 30 latest notes, as short cards without text, hashtags or note IDs.
  • Xiaohongshu refuses profile pages more often than note pages. A run with many profiles can stop early with SOURCE_ERROR; rows saved before the stop stay in the Dataset, and the run still ends as Succeeded with a warning. For big lists, use several smaller runs.
  • The trending feed shows visitors about 180–280 notes per channel per run (280 in our largest test). For more, run it on a schedule with onlyNew.
  • Up to 100 note links or 20 profiles per run. In our tests 20 profiles gave 500 short cards in one run and stopped at 246 after a refusal in another; see the line above.
  • The Actor stops opening pages 240 seconds after the start (stopReason: TIMEOUT) and keeps the saved rows.
  • If you set a maximum charge per run, the run stops there (stopReason: CHARGE_LIMIT) and keeps the saved notes.
  • "Only new notes" remembers the last 50,000 notes per Memory name. Older ones can count as new again. Memory name (stateName) takes up to 40 characters: letters, digits and -.
  • The memory is kept in a store named xiaohongshu-seen-<name>. If that name is taken and not available to the Actor, it uses xiaohongshu-scraper-m-<name>.
  • A page larger than 5 MB is not read. Its note is not saved and not charged.
  • No comments text, no follower lists, no private profiles. Contacts from profile bios are not collected.
  • Counters change all the time; a row shows the value at fetchedAt.
  • Image and video links are signed by Xiaohongshu and can stop working after some time. Download the files soon if you need them.

👉 Try it now: open the input form

API, export and integrations

  • Source: public pages of xiaohongshu.com, opened as a visitor.
  • API: start the Actor with the same JSON input and read the Dataset items.
  • Export: JSON, CSV, Excel and other Dataset formats from the Output tab.
  • Scheduling: create a Task with onlyNew: true and a stateName, then add a schedule.
  • Webhooks / no-code: use Apify integrations to send new rows on run finish.

Use with AI agents (MCP)

  • MCP server with only this Actor: https://mcp.apify.com?tools=cliqtomedia/xiaohongshu-scraper.
  • Smallest useful input: {"mode": "trending", "channel": "recommend", "maxItems": 20}. It gives 20 full notes for about $0.06.
  • Key output fields: title and desc (note text), likes, collects and comments (engagement), tags (hashtags), author.nickname.
  • One note takes a few seconds; 50 note links took 19 seconds; 100 note links took 30 seconds; 20 trending notes took 15–33 seconds; a full trending run of 280 notes took about 3 minutes. Up to 100 note links or 20 profiles per run.

👉 Try it now: open the input form

Troubleshooting

The run saved 0 notes

Symptom: the Dataset has only free status: not_found rows and RUN_SUMMARY lists not_found with "note not available: deleted, private or the share token expired". Likely reason: the note was deleted or hidden, or the link has no xsec_token, or the token is old. Check: open the link in a private browser window. Action: copy a fresh link from Share in the app and run again.

The run failed with "Xiaohongshu did not answer"

Symptom: the platform run is Failed, RUN_SUMMARY.status is failed, stopReason is SOURCE_ERROR, and no notes were saved. Likely reason: Xiaohongshu refused many requests in a row. The Actor stops early so you do not pay for an empty long run. Check: RUN_SUMMARY.counts.blocked. Action: try again later.

The run succeeded with "Xiaohongshu stopped answering partway"

Symptom: the run is Succeeded, it has some notes, RUN_SUMMARY.status is partial and warnings has this message. Likely reason: Xiaohongshu began to refuse requests after a part of the run. You paid only for the saved notes. Action: keep the saved notes and run again for the rest, with fewer links per run.

A warning says "asked to slow down"

Symptom: warnings in RUN_SUMMARY says Xiaohongshu asked to slow down (HTTP 429). Likely reason: too many requests through too few proxy addresses. The Actor lowers its pace by itself and goes on, so the run only takes longer. Action: use fewer notes per run or more proxy addresses.

A warning says the "Only new notes" memory could not be opened or saved

Symptom: warnings in RUN_SUMMARY names the memory; the run is Succeeded and has its notes. Likely reason: a storage with the same name already exists on your account and the Actor has no access to it. Check: Apify Console → Storage → Key-value stores, a store named xiaohongshu-seen-<Memory name>. Action: use another Memory name. Notes from earlier runs may repeat once.

Symptom: a warning "The guest feed gave … new notes". Likely reason: Xiaohongshu shows visitors only part of a channel per run. Action: run it on a schedule with onlyNew.

A row has status: partial

Symptom: a feed row with title and likes but no text. Likely reason: the note page did not open in time. Action: run its url again in note mode.

👉 Try it now: open the input form

FAQ

Do I need a Xiaohongshu account or cookies?

No. The Actor reads only what any visitor sees.

Why are some ipLocation or title values empty?

The site does not show them on many notes. null means "not shown", not an error.

Why do profile rows have no text and no note ID?

Xiaohongshu shows visitors only note cards on a profile. To get the full note, open it in the app, copy its link and use note mode.

No. Only saved rows (also partial ones) and the start fee are charged.

👉 Try it now: open the input form

👉 Try it now: open the input form

Support

For a bug, question or feature request, open the Actor's Issues tab on Apify. Include the run ID, the mode and the error text from RUN_SUMMARY. Do not send tokens or cookies.

👉 Try it now: open the input form