# RedNote (Xiaohongshu) Scraper - Trending, Notes & Profiles (`apricot_blackberry/rednote-scraper`) Actor

Tap into China’s #1 product-discovery platform. One actor pulls RedNote / Xiaohongshu (小红书) trending notes, full note detail, and creator profiles — cookie-free, no login, while other scrapers make you paste a session cookie and charge more per note.

- **URL**: https://apify.com/apricot\_blackberry/rednote-scraper.md
- **Developed by:** [Creator Fusion](https://apify.com/apricot_blackberry) (community)
- **Categories:** Social media, E-commerce, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $100.00 / 1,000 note details

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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

## RedNote (Xiaohongshu) Scraper — Trending, Notes & Profiles

**Cookie-free RedNote / 小红书 scraper.** Three modes in one Actor:

1. **Trending feed** — pull the live RedNote recommended feed. No input, no login. Great for content discovery, trend spotting, and product research on the China market.
2. **Note details** — paste RedNote note share URLs and get the full note: title, description, likes / collects / comments / shares, hashtags, @-mentions, image URLs, author, and timestamps.
3. **Creator profiles** — paste profile URLs and get the creator's RedID, bio, follower / following / likes counts, IP location, and their recent notes.

No account, no session cookie, no CAPTCHA solving. Clean, unified JSON — one dataset per run.

### Why this one

- **Cookie-free** — most RedNote scrapers make you paste a login cookie. This one doesn't (note details use the `xsec_token` already baked into the share URL you copy from the app).
- **Three data types, one Actor** — trending, notes, and profiles instead of buying three separate tools.
- **Typed, agent-ready output** — every row carries a `rowType` discriminator (`trending` / `note` / `profile` / `user-note`), so agents and pipelines can branch without guessing.
- **Only pay for what returns** — failed items go to the run SUMMARY, never the billed dataset.

### Quick start

Trending feed (just press Start):

```json
{}
```

Note details:

```json
{ "noteUrls": ["https://www.xiaohongshu.com/explore/<id>?xsec_token=<token>"] }
```

> Copy the share link from the RedNote app or site — it already contains the `xsec_token` the note detail needs. A bare note id without a token can't be opened.

Creator profiles (+ their recent notes):

```json
{ "profileUrls": ["https://www.xiaohongshu.com/user/profile/<userId>"] }
```

### Output fields (by rowType)

- **trending / user-note**: `noteId`, `xsecToken`, `url`, `title`, `type`, `likes`, `cover`, `authorId`, `authorName`.
- **note**: everything above plus `desc`, `collects`, `comments`, `shares`, `tags[]`, `atUsers[]`, `images[]`, `publishedTime`, `ipLocation`.
- **profile**: `userId`, `redId`, `nickname`, `desc`, `gender`, `ipLocation`, `avatar`, `followers`, `following`, `likesAndCollects`, `tags[]`.

Counts are normalized to integers (RedNote's `1万+` / `1千+` / `10K+` become real numbers).

***

### 中文说明（小红书数据采集）

**无需登录 Cookie 的小红书采集工具**，一个 Actor，三种模式：

1. **热门笔记流** — 直接拉取小红书推荐流，无需任何输入。适合内容选题、趋势洞察、跨境电商选品与品牌舆情。
2. **笔记详情** — 粘贴小红书笔记分享链接，获取标题、正文、点赞/收藏/评论/分享数、话题标签、@提及、图片地址、作者与时间。
3. **博主主页** — 粘贴博主主页链接，获取小红书号、简介、粉丝/关注/获赞数、IP 属地及最近笔记。

无需账号、无需 Cookie、无需过验证码。笔记详情使用分享链接里自带的 `xsec_token`，所以不用登录。

```json
{ "noteUrls": ["从 App 复制的小红书笔记分享链接"] }
```

Apify 平台在中国大陆及台湾地区可正常访问，每月 $5 免费额度，无需信用卡即可试用。

***

### For AI agents

Deterministic typed rows, `rowType` discriminator, and a machine-readable SUMMARY in the key-value store. Call synchronously from any framework or MCP client:

```bash
curl -X POST "https://api.apify.com/v2/acts/apricot_blackberry~rednote-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

```js
const { ApifyClient } = require('apify-client');
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('apricot_blackberry/rednote-scraper').call({ noteUrls: ['https://www.xiaohongshu.com/explore/<id>?xsec_token=<token>'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

Empty input returns the trending feed (never an error), so speculative agent calls always get data.

### Honest limits

- **Note details need the share URL's `xsec_token`.** RedNote gates note detail behind a per-note token; the share link you copy contains it. A raw 24-char id alone won't open.
- **Keyword search** (by query) requires a logged-in session on RedNote and is not included in this cookie-free version.
- **Comment threads** are lazy-loaded behind RedNote's signed API and are not part of this version (the note's total `comments` count is included).
- Private or banned profiles return only what RedNote exposes publicly.

# Actor input Schema

## `mode` (type: `string`):

What to scrape. Auto-detected from your input if left blank: note URLs -> note details, profile URLs -> profiles, nothing -> trending feed.

## `noteUrls` (type: `array`):

RedNote note share URLs copied from the app or site. They include the required xsec\_token, e.g. https://www.xiaohongshu.com/explore/<id>?xsec\_token=...

## `profileUrls` (type: `array`):

RedNote user profile URLs, e.g. https://www.xiaohongshu.com/user/profile/<userId>

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

In profile mode, also output the creator's recent notes embedded on their profile page.

## `channel` (type: `string`):

Optional channel/category id for the trending feed. Leave blank for the default recommended feed.

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

Cap on rows per run.

## `delayBetweenRequests` (type: `integer`):

Pause between page fetches. Raise if you scrape large lists.

## `navigationTimeoutMs` (type: `integer`):

Per-request timeout in milliseconds.

## `maxProxyRetries` (type: `integer`):

If a direct request fails or looks blocked, the Actor automatically retries through Apify residential proxy with a fresh rotating session, up to this many times, before giving up. Set 0 to disable proxy fallback entirely.

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

Self-healing by default: requests go DIRECT first (free), and only if one fails or looks blocked does the Actor fall back to Apify residential proxy with a fresh rotating session — so you're billed for proxy ONLY when it's actually needed to rescue a run, never on the happy path. Set your own proxy here to override the default residential fallback. Proxy data is billed to your Apify account.

## Actor input object example

```json
{
  "noteUrls": [],
  "profileUrls": [],
  "includeUserNotes": true,
  "maxItems": 200,
  "delayBetweenRequests": 1200,
  "navigationTimeoutMs": 25000,
  "maxProxyRetries": 3
}
```

# Actor output Schema

## `results` (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 = {
    "noteUrls": [],
    "profileUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("apricot_blackberry/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 = {
    "noteUrls": [],
    "profileUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("apricot_blackberry/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 '{
  "noteUrls": [],
  "profileUrls": []
}' |
apify call apricot_blackberry/rednote-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,apricot_blackberry/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/yUhN4kRCC2CXduCoj/builds/dKnzNy5gqgu0Zu7ST/openapi.json
