# 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
- **Stats:** 2 total users, 1 monthly users, 100.0% 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

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

![RedNote](https://img.shields.io/badge/Xiaohongshu-RedNote-FF2442)
![Data](https://img.shields.io/badge/data-notes_%7C_users_%7C_search-2563EB)
![Export](https://img.shields.io/badge/export-JSON_%7C_CSV_%7C_Excel-16A34A)
![No code](https://img.shields.io/badge/setup-no_code-7C3AED)

Turn public Xiaohongshu / RedNote (小红书, XHS, Little Red Book) content into clean datasets for **KOL discovery, social listening, competitor tracking, content research, and China market intelligence**.

Search by a simple keyword or enrich public note and creator links. Each successful result is saved as a structured row that can be downloaded as JSON, CSV, Excel, XML, or HTML and connected to your preferred Apify integration.

### ✨ What you can collect

| Dataset              | Valuable fields                                                                     |
| -------------------- | ----------------------------------------------------------------------------------- |
| 🔍 Note search       | Title, description, note type, cover, image/video URLs, hashtags and source keyword |
| 📈 Engagement        | Likes, saves, comments, shares and posting time                                     |
| 👤 Creator discovery | Name, RedNote ID, avatar, verification and profile URL                              |
| 🎯 User search       | Creator bio, followers, following, published notes and public location signals      |
| 📕 Note details      | Full public note metadata from supplied links                                       |
| 🗂️ Profile research  | Public creator profile and visible note catalogue                                   |

Media URLs are collected without downloading large files, keeping runs faster and more economical.

### 🚀 Quick start

1. Select **Search notes** or **Search users**.
2. Enter a brand, product, niche, hashtag, or topic.
3. Choose the maximum number of results and click **Start**.
4. Download the dataset or connect it to Google Sheets, Make, Zapier, n8n, Airbyte, or your API workflow.

The ready-to-run input searches `skincare` and requests 50 results. Empty API input also works and explores a balanced set of popular categories.

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

Chinese keywords generally provide the deepest native coverage, while English and mixed queries are also supported.

### 🎯 Use cases

#### KOL and influencer discovery

Search users or notes in beauty, fashion, travel, food, fitness, parenting, technology, and lifestyle niches. Compare public creator identity, verification, follower signals, posting activity, and content engagement before outreach.

#### China market research

Collect consumer conversations around a product, category, or international brand. Export titles, descriptions, hashtags, media, authors, and engagement for qualitative and quantitative research.

#### Brand and competitor monitoring

Schedule keyword searches to build snapshots of campaign visibility, audience response, rising posts, and creator participation over time.

#### Content strategy and trend detection

Compare likes, saves, comments, shares, formats, topics, and publishing times to identify content patterns that resonate with RedNote audiences.

#### Social listening and AI datasets

Create structured public-text datasets for sentiment analysis, topic clustering, translation, retrieval, dashboards, and responsible AI/NLP research.

#### Creator due diligence

Start with user search, collect relevant creator profile URLs, then run the profile mode to review public profile information and visible posts in one export.

### ⚙️ Input guide

| Input                | Purpose                                                    | Default                    |
| -------------------- | ---------------------------------------------------------- | -------------------------- |
| `operation`          | Search notes, search users, note details, or user profiles | `searchNotes`              |
| `keywords`           | Products, brands, topics, hashtags, or creator niches      | Popular discovery topics   |
| `urls`               | Public note/profile/share links for enrichment modes       | Empty                      |
| `maxItems`           | Maximum unique rows across all sources                     | `500` (`50` prefilled)     |
| `includeDescription` | Keep public note text                                      | `true`                     |
| `includeMedia`       | Keep public image/video URLs                               | `true`                     |
| `includeUserNotes`   | Include visible notes in profile mode                      | `true`                     |
| `proxyConfiguration` | Connection settings                                        | Cost-efficient Apify proxy |

No field is required. For the simplest workflow, keep **Search notes**, enter a keyword, and run.

### 📊 Output examples

#### Note search result

```json
{
    "recordType": "note-search",
    "noteId": "69ec85eb000000001e00cd6c",
    "title": "Daily skincare routine",
    "description": "Morning and evening routine...",
    "noteType": "normal",
    "noteUrl": "https://www.xiaohongshu.com/explore/69ec85eb000000001e00cd6c",
    "coverUrl": "https://sns-webpic-qc.xhscdn.com/...",
    "imageUrls": ["https://sns-webpic-qc.xhscdn.com/..."],
    "likedCount": 4231,
    "collectedCount": 892,
    "commentsCount": 167,
    "sharedCount": 23,
    "authorId": "5ee58a2e000000000100057e",
    "authorName": "Beauty Journal",
    "authorProfileUrl": "https://www.xiaohongshu.com/user/profile/5ee58a2e000000000100057e",
    "source": "search:skincare"
}
```

#### User search result

```json
{
    "recordType": "user-search",
    "userId": "5ee58a2e000000000100057e",
    "userName": "Beauty Journal",
    "redId": "257152115",
    "bio": "Skincare reviews and routines",
    "avatarUrl": "https://sns-avatar-qc.xhscdn.com/...",
    "profileUrl": "https://www.xiaohongshu.com/user/profile/5ee58a2e000000000100057e",
    "verified": false,
    "followersCount": 128400,
    "followingCount": 315,
    "notesCount": 246,
    "source": "search:skincare"
}
```

Fields that are not publicly available for a particular result are omitted instead of being filled with misleading placeholders.

### 🔌 API example

```bash
curl -X POST "https://api.apify.com/v2/acts/YOUR_USERNAME~xiaohongshu-rednote-scraper/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"operation":"searchUsers","keywords":["beauty creator"],"maxItems":100}'
```

You can also use the Apify JavaScript/Python clients, webhooks, schedules, MCP, Make, Zapier, n8n, Airbyte, Google Drive, or hundreds of other integrations.

### ⚡ Performance and cost design

- Large image, video, font, and tracking downloads are blocked; their public URLs remain in the output.
- Results are deduplicated by note or user ID across keywords.
- Search and discovery use lightweight server-rendered pages first; a browser starts only when a fallback is required.
- The default memory was reduced from 2,048 MB to 512 MB after cloud memory testing.
- The latest 200-result cloud regression completed in 1 minute 38 seconds and used **$0.0053** of platform resources. A 100-result regression used **$0.0035**.
- The default connection balances public coverage and run cost; residential routing remains available in Advanced settings.

Actual duration and result count depend on keyword breadth, public availability, network conditions, and source-side limits.

### ✅ Responsible use

This Actor collects publicly accessible information and does not access private profiles or private content. Use datasets lawfully and respect applicable privacy, intellectual-property, platform, and data-protection requirements. Avoid unwanted profiling, spam, harassment, or decisions that materially affect people.

Xiaohongshu, RedNote, Little Red Book, XHS, and 小红书 are trademarks of their respective owners. This independent Actor is not affiliated with, endorsed by, or sponsored by Xiaohongshu.

### ❓ FAQ

#### Do I need coding knowledge?

No. Choose an operation, enter a keyword, and click Start. Results appear in the Dataset tab and can be downloaded directly.

#### Do I need a RedNote account?

The Actor is designed around publicly accessible pages and browser-generated public requests. It does not ask you for a RedNote password.

#### Can I search English keywords?

Yes. Chinese, English, hashtags, brand names, and mixed queries are accepted. Chinese terms often surface deeper local coverage.

#### Why are some fields missing?

RedNote exposes different fields by content type and surface. The Actor omits unavailable values to keep the dataset honest and analysis-friendly.

#### Are media files downloaded?

No. Public CDN URLs are exported, but heavy media binaries are not downloaded. If a media URL matters to your workflow, save it promptly because platforms may rotate CDN links.

#### Can I combine multiple keywords?

Yes. Add multiple keywords; the Actor merges results into one dataset and removes duplicate note or user IDs.

#### Can I schedule monitoring?

Yes. Save the input as an Apify Task and schedule recurring runs for brand, competitor, trend, or creator monitoring.

#### What happens when a result is deleted or private?

Unavailable/private content is not extracted. Successful public records remain in the dataset without fabricated error rows.

# 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. 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("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=haketa/xiaohongshu-rednote-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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