# Xiaohongshu (RedNote) Scraper — Notes, Users & Search (`haketa/xiaohongshu-rednote-scraper`) Actor

Scrape Xiaohongshu and RedNote notes, creators and keyword discovery results. Export titles, images, videos, likes, saves, comments, creator IDs, avatars and public profile links for KOL discovery, social listening, competitor tracking, content research and China market intelligence.

- **URL**: https://apify.com/haketa/xiaohongshu-rednote-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** Social media, Lead generation
- **Features:** Limited permissions
- **Stats:** 15 total users, 2 monthly users, 97.6% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.40 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 📕 Xiaohongshu (RedNote) Scraper — Notes, Creators, Engagement & Search

> **Extract public [Xiaohongshu (xiaohongshu.com)](https://www.xiaohongshu.com) / RedNote (小红书, XHS, Little Red Book) data into clean, structured datasets — no login, no coding.** This **Xiaohongshu scraper** turns any keyword, hashtag, brand, or public note/profile link into structured rows of note titles, descriptions, high-res cover & gallery images, video stream URLs, likes, saves, comments, shares, hashtags, creator IDs, follower counts, and profile links. Use it to **scrape Xiaohongshu** notes and creators for KOL discovery, social listening, DTC brand tracking, and China market research.

Export every result to **JSON, CSV, Excel, or API** with **1,000+ results pagination** unlocked.

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-blue)](https://apify.com/haketa/xiaohongshu-rednote-scraper)
[![Platform](https://img.shields.io/badge/Platform-Xiaohongshu%20%2F%20RedNote%20%F0%9F%93%95-red)]()
[![Modes](https://img.shields.io/badge/Modes-Notes%20%C2%B7%20Users%20%C2%B7%20Profiles-purple)]()
[![Use Case](https://img.shields.io/badge/Use%20Case-KOL%20Discovery%20%26%20Social%20Listening-success)]()
[![No Login](https://img.shields.io/badge/Auth-No%20Login%20Required-brightgreen)]()
[![Export](https://img.shields.io/badge/Export-JSON%20%C2%B7%20CSV%20%C2%B7%20Excel-lightgrey)]()

***

### ⚡ At a glance

| Feature | Details |
| :--- | :--- |
| **Target Platform** | [Xiaohongshu / RedNote (`xiaohongshu.com`)](https://www.xiaohongshu.com) (小红书 / Little Red Book) |
| **4 Collection Modes** | **1. `searchNotes`** (Content & Trends) · **2. `searchUsers`** (Creator/KOL Leads) · **3. `noteDetails`** (Public Note URLs) · **4. `userProfiles`** (Public Profile URLs + Notes) |
| **Core Note Fields** | `noteId`, `title`, `description`, `noteType`, `noteUrl`, `coverUrl`, `imageUrls`, `videoUrl`, `likedCount`, `collectedCount`, `commentsCount`, `sharedCount`, `hashtags`, `postedAt`, `ipLocation` |
| **Creator / KOL Fields** | `userId`, `userName`, `redId`, `bio`, `avatarUrl`, `profileUrl`, `verified`, `verificationType`, `followersCount`, `followingCount`, `likesAndCollectsCount`, `notesCount` |
| **Query Languages** | Simplified/Traditional Chinese (`护肤`, `穿搭`, `旅行`), English (`skincare`, `fashion`), Brand Names, and Hashtags |
| **Pagination & Scale** | Multi-round discovery & signed pagination (**1,000+ results pagination** unlocked, `0` = unlimited) |
| **Deduplication** | Global deduplication by `recordType:noteId` / `recordType:userId` across all keywords, channels, and URLs |
| **Export Formats** | JSON, CSV, Excel (XLSX), XML, HTML, and Apify REST API |

***

### 📋 Table of contents

- [Why scrape Xiaohongshu (RedNote)?](#-why-scrape-xiaohongshu-rednote)
- [What this Xiaohongshu scraper does](#-what-this-xiaohongshu-scraper-does)
- [High-value use cases](#-high-value-use-cases)
- [Input configuration](#-input-configuration)
- [Output samples & field reference](#-output-samples--field-reference)
- [Pagination & 1,000+ scale](#-pagination--1000-scale)
- [How to use (Console & API)](#️-how-to-use-console--api)
- [Pro tips for RedNote KOL & market research](#-pro-tips-for-rednote-kol--market-research)
- [Honest limitations](#-honest-limitations)
- [FAQ](#-faq)
- [Related scrapers](#-related-scrapers)
- [Changelog](#-changelog)

***

### 🔎 Why scrape Xiaohongshu (RedNote)?

**Xiaohongshu** — known globally as **RedNote** and in China as **小红书 (Little Red Book / XHS)** — is the premier lifestyle, beauty, fashion, travel, and social-commerce discovery engine for over 300 million monthly active users. It is where consumer product reviews (*种草* / "planting grass" recommendations), luxury and DTC brand perception, skincare routines, and travel itineraries are researched before buying on Tmall, JD, Douyin, or global e-commerce stores.

For global brands, influencer agencies, consumer analysts, and AI teams, **Xiaohongshu data** is an indispensable real-time pulse of Chinese and global Gen-Z/Millennial consumer demand. Yet collecting RedNote posts and creator profiles manually is slow and fragmented: numbers are abbreviated with Chinese units (`1.2万`, `3千`), URLs carry dynamic security tokens (`xsec_token`), and infinite-scroll feeds mix overlapping cards.

This **Xiaohongshu (RedNote) scraper** automates the entire pipeline — normalizing engagement counts to clean integers, deduplicating notes and creators across multiple keywords, and delivering structured rows ready for Excel, BI dashboards, or NLP pipelines.

**Common reasons teams scrape Xiaohongshu:**

- 🔥 **KOL & Influencer Discovery (`searchUsers` / `userProfiles`)** — identify rising beauty, fashion, food, travel, and lifestyle creators with normalized follower counts, verification status, RedNote IDs (`redId`), and engagement metrics.
- 🛍️ **Brand & Share-of-Voice Monitoring (`searchNotes`)** — track how international and domestic brands are reviewed, recommended, or compared by real RedNote users.
- 📊 **Content & Viral Format Benchmarking** — analyze which note titles, cover visuals, video streams, and hashtag combinations generate the highest `likedCount` and `collectedCount`.
- 🌏 **Cross-Border E-Commerce & Product Research** — discover trending product ingredients, aesthetics, and consumer pain points before launching a campaign.
- 🧠 **AI, LLM & Multimodal Datasets** — build clean corpora of public Chinese/English social posts paired with image/video CDN URLs and engagement signals.

***

### ✨ What this Xiaohongshu scraper does

- ✅ **4 All-in-One Collection Modes**
  1. **`searchNotes` (Search notes — content & trends)**: Collects public notes matching your keywords/topics.
  2. **`searchUsers` (Search users — creator leads)**: Extracts unique creator profiles from keyword searches and discovery feeds.
  3. **`noteDetails` (Note details — public links)**: Enriches specific public RedNote `/explore/...` or `/discovery/item/...` URLs.
  4. **`userProfiles` (User profiles & notes — public links)**: Extracts creator profile metrics plus their publicly visible recent notes (`includeUserNotes: true`).
- ✅ **Chinese & English Keyword Support** — accepts any combination of Chinese (`护肤`, `美妆`, `穿搭`, `美食`, `旅行`), English (`skincare`, `fashion`, `travel`), or brand keywords.
- ✅ **Normalized Numeric Engagement** — automatically converts Chinese and English shorthand (`6.6万`, `4.2k`, `1.5w`) into clean integer values (`66000`, `4200`, `15000`) across `likedCount`, `collectedCount`, `commentsCount`, `sharedCount`, and `followersCount`.
- ✅ **Unlocked 1,000+ Multi-Channel Pagination** — removes artificial 5,000-item and 30-round caps, automatically expanding across RedNote discovery channels when a single keyword's primary feed is exhausted on 1,000+ runs.
- ✅ **Media URL Extraction Without Heavy Downloads** — captures `coverUrl`, `imageUrls` (gallery), and `videoUrl` (H.264/H.265 master streams) over HTTPS without downloading heavy media binaries.
- ✅ **Global Deduplication** — deduplicates every record by `recordType` + unique `noteId` or `userId`, ensuring 0% duplicate rows across multi-keyword runs.

***

### 🎯 High-value use cases

#### 1. Influencer Marketing & KOL Seeding Agencies

Run `searchNotes` or `searchUsers` across niche keywords (`敏感肌护肤`, `早C晚A`, `OOTD`, `上海探店`) to build a deduplicated roster of active creators (`authorId`, `authorName`, `authorProfileUrl`), then feed top-performing `authorProfileUrl` links into `userProfiles` mode to enrich `followersCount`, `likesAndCollectsCount`, `redId`, and `bio`.

#### 2. Global Beauty, Luxury & Consumer Goods Brand Teams

Schedule weekly runs for your brand name and competitor brands to measure post volume, top-liked community reviews, regional IP distribution (`ipLocation`), and co-occurring `hashtags`.

#### 3. Trend Forecasting & Social Commerce Analysts

Compare `likedCount` across categories (`cosmetics`, `fashion`, `food`, `travel`, `fitness`) to spot breakout lifestyle trends and visual aesthetics early.

***

### 📥 Input configuration

No field is required. Running with the default prefill (`operation: "searchNotes"`, `keywords: ["skincare"]`, `maxItems: 50`) completes in seconds on standard Apify proxies.

| Field | Type | Default / Prefill | Description |
| :--- | :--- | :--- | :--- |
| `operation` | `string` | `"searchNotes"` | Mode selector: `"searchNotes"`, `"searchUsers"`, `"noteDetails"`, or `"userProfiles"`. |
| `keywords` | `array` | Default: `["skincare", "travel", "fashion", "food"]` (Prefill: `["skincare"]`) | Keywords, brands, niches, or hashtags to search. Chinese keywords provide the deepest native coverage; English is also supported. |
| `urls` | `array` | `[]` | Public Xiaohongshu note (`/explore/...`, `/discovery/item/...`) or profile (`/user/profile/...`) URLs. Used in `noteDetails` and `userProfiles` modes. |
| `maxItems` | `integer` | Default: `500` (Prefill: `50`) | Maximum unique records to collect across all keywords or links (`0` = no limit; supports **1,000+ results**). |
| `includeDescription` | `boolean` | `true` | Include public note body text (`description`) when available. |
| `includeMedia` | `boolean` | `true` | Include `coverUrl`, `imageUrls`, and `videoUrl` links without downloading binary files. |
| `includeUserNotes` | `boolean` | `true` | In `userProfiles` mode, also output the creator's publicly visible notes as `user-note` rows. |
| `proxyConfiguration` | `object` | `{ "useApifyProxy": true }` | Apify Proxy settings. Default Apify proxy works out of the box for discovery runs; residential proxy can be selected for heavy browser-fallback sessions. |

#### Example 1 — Fast 50-note trend discovery (Prefill)

```json
{
  "operation": "searchNotes",
  "keywords": ["skincare"],
  "maxItems": 50,
  "includeDescription": true,
  "includeMedia": true,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

#### Example 2 — 1,000+ multi-keyword China beauty & lifestyle dataset

```json
{
  "operation": "searchNotes",
  "keywords": ["护肤", "美妆", "穿搭", "美食", "旅行"],
  "maxItems": 1200,
  "includeDescription": true,
  "includeMedia": true,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

#### Example 3 — KOL / Creator lead generation (`searchUsers`)

```json
{
  "operation": "searchUsers",
  "keywords": ["护肤博主", "穿搭博主", "skincare"],
  "maxItems": 500,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

***

### 📤 Output samples & field reference

Every dataset item includes a `recordType` field (`note-search`, `user-search`, `note-detail`, `user-profile`, or `user-note`).

#### Sample 1 — Note Record (`note-search` / `note-detail`)

```json
{
  "recordType": "note-search",
  "noteId": "642418be0000000027029297",
  "title": "放弃网妆感❌ 3招教你妆变脸，速成原生感美女",
  "description": "Morning and evening routine for natural glass skin...",
  "noteType": "normal",
  "noteUrl": "https://www.xiaohongshu.com/explore/642418be0000000027029297?xsec_token=AB12CD34&xsec_source=pc_search",
  "coverUrl": "https://sns-webpic-qc.xhscdn.com/20261102/1000g00828rp1pvofo00g49ogvlvr5bmel7mahvo!nc_n_nwebp_prv_1",
  "imageUrls": [
    "https://sns-webpic-qc.xhscdn.com/20261102/1000g00828rp1pvofo00g49ogvlvr5bmel7mahvo!nc_n_nwebp_prv_1"
  ],
  "likedCount": 66000,
  "collectedCount": 14200,
  "commentsCount": 890,
  "sharedCount": 310,
  "authorId": "599bffb25e87e739ff08aece",
  "authorName": "全国知名小雪糕",
  "authorRedId": "257152115",
  "authorAvatarUrl": "https://sns-avatar-qc.xhscdn.com/avatar/5fad5f8ffc3db500016ead27.jpg",
  "authorVerified": true,
  "authorProfileUrl": "https://www.xiaohongshu.com/user/profile/599bffb25e87e739ff08aece",
  "hashtags": ["护肤", "新手化妆"],
  "postedAt": "2026-10-18T08:15:00.000Z",
  "ipLocation": "Shanghai",
  "xsecToken": "AB12CD34",
  "source": "discovery:护肤",
  "scrapedAt": "2026-11-10T02:30:00.000Z"
}
```

#### Sample 2 — Creator / KOL Record (`user-search` / `user-profile`)

```json
{
  "recordType": "user-search",
  "userId": "5ee58a2e000000000100057e",
  "userName": "Beauty Journal",
  "redId": "257152115",
  "bio": "Skincare formulator & ingredient reviews",
  "avatarUrl": "https://sns-avatar-qc.xhscdn.com/avatar/5ee58a2e000000000100057e.jpg",
  "profileUrl": "https://www.xiaohongshu.com/user/profile/5ee58a2e000000000100057e",
  "verified": true,
  "verificationType": 1,
  "followersCount": 128400,
  "followingCount": 315,
  "likesAndCollectsCount": 982000,
  "notesCount": 246,
  "ipLocation": "Shanghai",
  "source": "search:skincare",
  "scrapedAt": "2026-11-10T02:30:00.000Z"
}
```

#### 🗂️ Field reference & coverage tables

##### 📝 Note Fields (`note-search`, `note-detail`, `user-note`)

| Field | Type | Coverage | Description |
| :--- | :--- | :--- | :--- |
| `recordType` | `string` | 🟢 High (100%) | Row discriminator: `"note-search"`, `"note-detail"`, or `"user-note"`. |
| `noteId` | `string` | 🟢 High (100%) | Unique 24-character hex RedNote note ID. |
| `title` | `string` | 🟢 High (100%) | Public note headline / display title. |
| `noteUrl` | `string` | 🟢 High (100%) | Canonical note URL on `xiaohongshu.com/explore/...` (with `xsec_token` when present). |
| `coverUrl` | `string` | 🟢 High (100%) | HTTPS URL of the note's primary cover image. |
| `likedCount` | `number` | 🟢 High (100%) | Total likes normalized to an integer (e.g., `6.6万` → `66000`). |
| `authorId` / `authorName` | `string` | 🟢 High (100%) | Creator's 24-character user ID and display nickname. |
| `authorAvatarUrl` / `authorProfileUrl` | `string` | 🟢 High (100%) | Creator's avatar URL (HTTPS) and canonical `/user/profile/...` URL. |
| `description` | `string` | 🟡 Conditional | Full note body text (populated when `includeDescription: true` and exposed by the detail/signed surface). |
| `noteType` | `string` | 🟡 Conditional | Content format (`"normal"` for image carousels, `"video"` for video notes). |
| `imageUrls` / `videoUrl` | `array` / `string` | 🟡 Conditional | Array of gallery image URLs and master video stream URL (when `includeMedia: true` on enriched surfaces). |
| `collectedCount` / `commentsCount` / `sharedCount` | `number` | 🟡 Conditional | Saves, comments, and shares normalized to integers (populated on signed search & detail surfaces). |
| `authorRedId` / `authorVerified` | `string` / `boolean` | 🟡 Conditional | Creator's public `red_id` handle and official verification badge flag. |
| `hashtags` / `postedAt` / `ipLocation` | `array` / `string` | 🟡 Conditional | Attached topic tags, ISO 8601 publish date, and regional IP location badge. |
| `xsecToken` / `source` / `scrapedAt` | `string` | 🟢 High (100%) | Security token, origin query (`discovery:...` or `search:...`), and ISO timestamp. |

##### 👤 Creator / KOL Fields (`user-search`, `user-profile`)

| Field | Type | Coverage | Description |
| :--- | :--- | :--- | :--- |
| `recordType` | `string` | 🟢 High (100%) | `"user-search"` or `"user-profile"`. |
| `userId` / `userName` | `string` | 🟢 High (100%) | Unique creator ID and display name. |
| `avatarUrl` / `profileUrl` | `string` | 🟢 High (100%) | Creator avatar image URL and canonical profile link. |
| `redId` / `bio` | `string` | 🟡 Conditional | Public RedNote ID (`red_id`) and profile biography text (populated on signed/profile surfaces). |
| `verified` / `verificationType` | `boolean` / `number` | 🟡 Conditional | Official KOL/brand verification status and category code. |
| `followersCount` / `followingCount` | `number` | 🟡 Conditional | Follower and following counts normalized to integers. |
| `likesAndCollectsCount` / `notesCount` | `number` | 🟡 Conditional | Total cumulative likes + saves received and total published notes count. |
| `ipLocation` / `source` / `scrapedAt` | `string` | 🟢 High (100%) | Creator IP region (when shown), source query/URL, and ISO extraction timestamp. |

***

### 🔁 Pagination & 1,000+ scale

The **Xiaohongshu (RedNote) Scraper** uses a multi-layered pagination architecture with all hard clamps removed so you can scale to **1,000+ unique records**:

1. **Parallel Lightweight Discovery Rounds (Primary Fast Path)** — fans out 3 concurrent HTTP discovery requests per batch (`~60–80` cards per round) for your keyword's matched channel (`cosmetics`, `fashion`, `food`, `travel`, `fitness`, `recommend`). For large runs (`maxItems > 200`), if a single keyword's primary channel stops yielding new cards before `maxItems` is reached, the scraper automatically rotates across all 10 RedNote discovery channels so even a 1-keyword run can reach **1,000+ unique records** in under a minute.
2. **Signed Browser Search & Homefeed Fallbacks** — if additional records are needed, the actor launches an isolated Chromium context with image/font/tracker blocking and paginates signed search pages (`20 items/page`, dynamic `maxSearchPages`) and category homefeeds (`40 items/round`).
3. **Strict Global Deduplication** — every note and user is keyed by `recordType` + ID in a global `Set`, guaranteeing 0% duplicate rows across all rounds, channels, and keywords.

***

### ⚙️ How to use (Console & API)

#### In Apify Console

1. Open **[Xiaohongshu (RedNote) Scraper](https://apify.com/haketa/xiaohongshu-rednote-scraper)** in Apify Console.
2. Select **1. What do you want to collect?** (`Search notes`, `Search users`, `Note details`, or `User profiles & notes`).
3. Enter one or more terms in **2. Search keywords** (or paste links into **Public note or profile links**).
4. Set **3. Maximum results** (`50` for a quick test, `500`–`1000+` for deep discovery, or `0` for unlimited).
5. Click **Start** and export your dataset as **JSON, CSV, Excel, XML, or HTML**.

#### Via Apify API (Python)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run_input = {
    "operation": "searchNotes",
    "keywords": ["护肤", "skincare", "美妆"],
    "maxItems": 1000,
    "includeDescription": true,
    "includeMedia": true,
}

run = client.actor("haketa/xiaohongshu-rednote-scraper").call(run_input=run_input)

for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"[{row['recordType']}] {row.get('title') or row.get('userName')} — ❤️ {row.get('likedCount')}")
```

***

### 💡 Pro tips for RedNote KOL & market research

- **Combine Chinese & English Keywords** — pass both native Chinese terms (e.g., `防晒`, `精华`, `露营`) and English brand names in `keywords` for maximum breadth.
- **Two-Step KOL Enrichment Workflow** — first run `searchNotes` or `searchUsers` with `maxItems: 500` to discover active creators (`authorProfileUrl` / `profileUrl`) at ultra-low cost; then filter your top candidates and pass their `profileUrl` links into `userProfiles` mode to extract full biographies and note histories.
- **Archive Media URLs Promptly** — RedNote CDN links (`xhscdn.com`) include time-sensitive signatures. If you need cover images for vision models or pitch decks, download or process them shortly after the run completes.

***

### ⚠️ Honest limitations

- **Publicly Accessible Surface Scope** — RedNote restricts certain deep search filters and full comment threads to logged-in mobile app accounts. Because this actor runs 100% cookieless and login-free to protect user safety, discovery-feed runs populate the 12 core note/author fields at **100% coverage**, while extended fields (`collectedCount`, `commentsCount`, `hashtags`, `followersCount`) are populated conditionally when exposed by the public/signed surface.
- **CDN Link Expiration** — `coverUrl`, `imageUrls`, and `videoUrl` point directly to RedNote's CDN and may expire after several days.

***

### ❓ FAQ

#### Do I need a Xiaohongshu / RedNote account or cookies?

No. The scraper operates entirely on publicly accessible RedNote endpoints and pages without requiring any login, phone number, or session cookies.

#### How many notes or creators can I extract per run?

You can collect **1,000+ unique notes or creators** in a single run. Set `maxItems: 1000` (or `0` for unlimited) and provide one or multiple keywords.

#### How fast is a typical run?

On the lightweight HTTP discovery path, collecting **50–300 unique notes takes ~5–20 seconds**, and **1,000+ notes takes ~45–90 seconds** using standard Apify datacenter proxies.

#### Why are `likedCount` and `followersCount` always clean numbers instead of `"1.2万"`?

The scraper includes a built-in numeric parser that converts Chinese (`万` = `10,000`, `千` = `1,000`) and English (`w`, `k`, `m`) abbreviations into exact integers so you can sort and aggregate immediately in Excel or SQL.

#### What export formats and integrations are supported?

Download your data in **JSON, CSV, Excel (XLSX), XML, or HTML**, or connect via the **Apify REST API**, Python/JS SDKs, Make, Zapier, n8n, Google Sheets, and webhooks.

#### Can I enrich specific public note or profile URLs directly?

Yes. Choose `"operation": "noteDetails"` or `"operation": "userProfiles"` and paste your public Xiaohongshu `/explore/...`, `/discovery/item/...`, or `/user/profile/...` links into the `urls` input array. In `userProfiles` mode, keeping `includeUserNotes: true` also extracts the creator's publicly visible notes as separate `user-note` rows.

#### Via Apify API (JavaScript / Node.js)

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('haketa/xiaohongshu-rednote-scraper').call({
    operation: 'searchNotes',
    keywords: ['护肤', '穿搭'],
    maxItems: 500,
    includeDescription: true,
    includeMedia: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Extracted ${items.length} unique RedNote records.`);
```

***

### 🔌 Integrations & China social-listening workflows

| Integration | Social Intelligence Workflow |
| :--- | :--- |
| **Google Sheets & Airtable** | Build collaborative KOL seeding trackers with creator names, profile URLs, avatar previews, and note engagement metrics. |
| **Make / Zapier / n8n** | Automate weekly brand-mention digests and push high-engagement RedNote posts (`likedCount > 10000`) to Slack, Notion, or Lark/Feishu. |
| **BigQuery / Snowflake** | Schedule recurring multi-keyword runs (`maxItems: 1000+`) to track share-of-voice, trending hashtags, and regional IP distribution across China. |
| **AI / LLM Pipelines** | Stream structured note titles, descriptions, and image URLs into sentiment classification, translation, and trend-summarization agents. |

***

### 🔗 Related scrapers

Build a complete Asian & global social intelligence stack with our other scrapers:

- [Bilibili Scraper — Videos, Creators & Danmaku](https://apify.com/haketa/bilibili-scraper)
- [WeChat Official Account Scraper](https://apify.com/haketa/wechat-official-account-scraper)
- [YouTube Channel Contact Scraper](https://apify.com/haketa/youtube-contact-scraper)
- [YouTube Comments Scraper](https://apify.com/haketa/youtube-comments-scraper)
- [Patreon Creators Scraper](https://apify.com/haketa/patreon-scraper)
- [Linktree Profile & Social Extractor](https://apify.com/haketa/linktree-scraper)

***

### 📋 Changelog

#### v1.2 (2026-11) — Unlocked 1,000+ Pagination & Multi-Channel Discovery Expansion

- **Removed `maxItems` & Page Clamps**: Removed the `Math.min(5000, ...)` input clamp, the `round <= 30` HTTP discovery cap, and the `Math.min(50, ...)` search page clamp in `src/main.js`, allowing `maxItems: 1000+` (and `0` = unlimited) to scale freely.
- **Multi-Channel 1,000+ Expansion**: Added automatic fallback rotation across all 10 RedNote explore channels (`cosmetics`, `fashion`, `food`, `travel`, `fitness`, `career`, `household_product`, `gaming`, `books`, `recommend`) when `maxItems > 200`, ensuring even single-keyword runs easily exceed 1,000+ unique records.
- **Memory Right-Sizing**: Upgraded default actor memory from `512 MB` to `1024 MB` for smoother execution when browser fallback paths are triggered.
- **Documentation Upgrade**: Expanded README with `⚡ At a glance` summary, emoji-grouped field coverage tables, 2-step KOL workflow tips, and changelog.

#### v1.1 (2026-10) — Lightweight HTTP Discovery & Chinese Number Normalization

- Added parallel server-rendered HTTP discovery engine with Cheerio parsing for sub-20s execution on datacenter proxies.
- Standardized `万`/`千`/`w`/`k`/`m` engagement string conversion to integers.

#### v1.0 (2026-08) — Initial Release

- Initial release supporting `searchNotes`, `searchUsers`, `noteDetails`, and `userProfiles` modes.

# Changelog

This Actor's version history is a separate document: https://apify.com/haketa/xiaohongshu-rednote-scraper/changelog.md

# Actor input Schema

## `operation` (type: `string`):

Search notes for content and market research, search users for creator leads, or extract specific public links.

## `keywords` (type: `array`):

Enter products, brands, niches, hashtags or creator topics. Chinese keywords usually provide the strongest native coverage; English is also supported. Leave empty to explore skincare, travel, fashion and food.

## `urls` (type: `array`):

Used only for Note details or User profiles. Paste public Xiaohongshu/RedNote note, explore, discovery, profile or xhslink share URLs.

## `maxItems` (type: `integer`):

Maximum unique rows across all keywords or links (0 = no limit). Use 50 for a quick test and 500–1,000+ for broader creator, content or market coverage.

## `includeDescription` (type: `boolean`):

Keep public note text for social listening, keyword analysis and AI/NLP workflows.

## `includeMedia` (type: `boolean`):

Save public cover, gallery and video stream URLs when available. Media files are not downloaded, keeping runs fast and inexpensive.

## `includeUserNotes` (type: `boolean`):

When extracting profile links, also save publicly visible notes as separate rows to produce a richer creator dataset.

## `proxyConfiguration` (type: `object`):

The cost-efficient Apify connection is already selected. Most users should leave this unchanged; residential proxy can be selected when a particular network session needs it.

## Actor input object example

```json
{
  "operation": "searchNotes",
  "keywords": [
    "skincare"
  ],
  "urls": [],
  "maxItems": 50,
  "includeDescription": true,
  "includeMedia": true,
  "includeUserNotes": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `recordType` (type: `string`):

No description

## `title` (type: `string`):

No description

## `userName` (type: `string`):

No description

## `authorName` (type: `string`):

No description

## `likedCount` (type: `string`):

No description

## `followersCount` (type: `string`):

No description

## `noteUrl` (type: `string`):

No description

## `profileUrl` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "operation": "searchNotes",
    "keywords": [
        "skincare"
    ],
    "urls": [],
    "maxItems": 50,
    "includeDescription": true,
    "includeMedia": true,
    "includeUserNotes": true,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/xiaohongshu-rednote-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "operation": "searchNotes",
    "keywords": ["skincare"],
    "urls": [],
    "maxItems": 50,
    "includeDescription": True,
    "includeMedia": True,
    "includeUserNotes": True,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/xiaohongshu-rednote-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "operation": "searchNotes",
  "keywords": [
    "skincare"
  ],
  "urls": [],
  "maxItems": 50,
  "includeDescription": true,
  "includeMedia": true,
  "includeUserNotes": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call haketa/xiaohongshu-rednote-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,haketa/xiaohongshu-rednote-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/GUF8bV7PURRelaBrd/builds/hn3YOs3VRWyINdh4V/openapi.json
