Social media · Live on Apify

Xiaohongshu (RedNote) Notes Scraper

Get public Xiaohongshu notes without login. Start from note links, author profiles or the trending Explore feed. Each note is one clean row.

About $2.50 for 1,000 results$0.00249 per result + $0.01 per run. Apify bills you, not us.One result in a run of its own: about $0.01.Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Run it on Apify Opens apify.com, the website where our tools run. Sign up free with Google or email, no card needed.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure

What you get, for example

noteId64abf31b00000000120125be
urlhttps://www.xiaohongshu.com/explore/64abf31b00000000120125be?xsec_toke…
title大家要的短裙来咯

How to use it: 3 steps

  1. Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: trending in What to scrape. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

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.

  • 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.

Good for

  • 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.

Who uses it

Brand teams

Track likes and saves of chosen notes.

Trend researchers

Find popular notes in a niche from the Explore feed.

Social analysts

Watch new posts of creators on a schedule.

Price

Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.

What you pay forPriceWhen
Start fee$0.01Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more.
Note$0.00249 (from $0.00174 on paid Apify plans)Charged for each saved note row. Links that are not found or fail are free.

Examples

  • One result: about $0.01.
  • 1,000 results: about $2.50.
  • Every day 100 results, for 30 days: about $7.77 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 2,000 results.

Prices checked on 8 November 2026. See the current price on Apify.

Questions

Do I need a Xiaohongshu account or cookies?

No. The tool reads only what any visitor sees.

Can I search by keyword?

No. Xiaohongshu shows search only to signed-in users.

Why do profile rows have no text?

Xiaohongshu shows visitors only note cards on a profile. Open the note links for full text.

Why are some ipLocation or title values empty?

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

Do I pay for links that do not work?

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

Details

Step by step on Apify
  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).
Use cases
TaskInputYou getKey fieldsNext step
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
Tips for better results
  • Copy note links with Share, then Copy link. Links need their xsec_token.
  • Profiles show about 30 latest notes, as short cards without text.
  • Use onlyNew with a schedule to get only new notes.
Limits and good to know
  • 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

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "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
}

Use it from code

Actor ID: cliqtomedia/xiaohongshu-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.

Python · apify-client
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/xiaohongshu-scraper").call(run_input={
    "mode": "trending",
    "channel": "recommend"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
cURL
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~xiaohongshu-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode": "trending", "channel": "recommend"}'
LangChain · langchain-apify
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/xiaohongshu-scraper")
result = tool.invoke({"run_input": {"mode": "trending", "channel": "recommend"}})
print(result)

The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.

Data fields (24)
FieldTypeMeaning
noteIdstringNote ID. Null on profile cards: Xiaohongshu hides note IDs on profiles to visitors.
urlstringNote page with its xsec_token, so it opens in a browser.
titlestringNote title.
descstringNote text with hashtags as written. Full notes only.
typestringimage: photo note; video: video note.
authorobjectAuthor: userId, nickname, avatarUrl, profileUrl. In user mode also redId, followers, following, likesAndCollects (rounded as on the page) and location; null in other modes.
likesintegerLikes. Null when Xiaohongshu does not show it.
collectsintegerSaves (collects). Full notes only.
commentsintegerComments count (0 when the note has none). Full notes only; null on cards.
sharesintegerShares. Full notes only.
tagsarrayHashtags of the note.
imagesarrayImages: url, width, height.
coverUrlstringFirst image or video cover.
videoUrlstringVideo stream URL (video notes).
createdAtstringPublish time, ISO 8601 UTC.
updatedAtstringLast edit time, ISO 8601 UTC.
ipLocationstringRegion Xiaohongshu shows for the author's IP, e.g. 浙江.
detailstringfull: read from the note page; card: what a profile grid or the feed shows (title, cover, likes, author); null for not_found and error rows.
modestringMode that found the note.
channelstringFeed channel (trending mode).
inputUrlstringThe input link this row comes from.
statusstringcomplete: all fields Xiaohongshu shows for this kind of row; partial: the note page did not open, feed card fields only; not_found: deleted, private, expired share token or empty profile (free); error: the page could not be read (free).
errorstringWhy the row is partial, not_found or error.
fetchedAtstringWhen the row was collected, ISO 8601 UTC.
Input settings (9)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
What to scrape requiredmodestring"trending"
Linksurlsarray
Feed channelchannelstring"recommend"
Max notesmaxItemsinteger20
Only new notesonlyNewbooleanfalse
Memory namestateNamestring"default"
ProxyproxyConfigurationobject{"useApifyProxy": true}
Send results to (optional)deliveryConnectorstring
Notion page or channel (optional)deliveryTargetstring

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure