# RedNote (小红书) Scraper — Trending, Feeds & Notes (`nexgendata/rednote-scraper`) Actor

Scrape RedNote / Xiaohongshu across 6 modes: trending, note\_detail, user\_posts, hashtag, keyword\_search, topic\_probe. Trending (category channels), note\_detail and user\_posts run cookieless; keyword/hashtag search is login-gated. Clean JSON + metrics.

- **URL**: https://apify.com/nexgendata/rednote-scraper.md
- **Developed by:** [NexGenData](https://apify.com/nexgendata) (community)
- **Categories:** Social media, Automation
- **Stats:** 48 total users, 11 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 rednote posts

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/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

## RedNote (Xiaohongshu) Scraper — Trending, Category Feeds & Notes

> **Free evaluation:** the default returns **25 posts** so you can check schema and quality cheaply. Raise `limit` for full runs — billed per result at the price shown above.

Pull RedNote (Xiaohongshu, 小红书) trending notes, category discovery feeds, and full note detail as clean JSON — without a login or session cookie. Western brand and sourcing teams use it to read China's earliest publicly observable consumer-demand signal: on RedNote, nearly every viral note is a product review or buying guide, surfacing weeks before Tmall or JD sales rankings. Trending, category-channel (fashion / food / cosmetics / travel and more) and note-detail modes run cookieless; precise keyword and hashtag search is supported but login-gated — supply an optional cookie to unlock it. No Mandarin-speaking analyst in Shanghai required.

### 中文说明

小红书(RedNote)采集器让你获取小红书的热门内容、分类信息流与笔记数据。每条结果为一篇笔记,可导出为 JSON、CSV 或 Excel,适合品牌、内容营销与消费者研究。

**定价**:按笔记计费,每条 $0.02(约 $1 = 50 条)。

**定时运行**:在 Apify 的「Schedules」中新建计划任务,设定关键词或分类,即可定期追踪话题与品类的变化。

**AI 智能体**:采用按事件计费(PPE),可通过 Apify 的 [x402](https://docs.apify.com/platform/integrations/x402) 让智能体用 USDC 直接调用,无需账号。

说明:关键词搜索通常需要登录 Cookie 才能稳定返回结果;所有字段均来自公开数据。

### Modes (6)

| Mode | What it does | Cookie? |
|---|---|---|
| `trending` | Homepage discovery feed, or a category channel (fashion / food / cosmetics / travel / gaming / fitness / movie / home / love / career / video / recommend) | No — cookieless |
| `note_detail` | Full body text + top comments for a note URL or ID | No — cookieless |
| `user_posts` | All posts by a specific user | No — cookieless |
| `hashtag` | Posts under a hashtag / topic page | Login-gated (cookie recommended) |
| `keyword_search` | Precise keyword search (Chinese or English terms) | Login-gated — needs a cookie for true filtered search |
| `topic_probe` | Diagnostic helper for topic coverage | No |

The standout differentiators are the **cookieless category-discovery feeds** and **cookieless `note_detail`** — most RedNote scrapers focus on login-gated keyword search, which RedNote restricts. Without a cookie you get the category / explore feed for a topic; with an optional cookie you also get precise keyword and hashtag search.

### Use cases

1. Track emerging Chinese consumer-product trends before they reach Western markets.
2. Brand monitoring via cookieless trending and category feeds.
3. Cross-border e-commerce / DTC product research — spot rising categories early.
4. Build a Chinese-language lifestyle-content corpus for NLP / AI.
5. Competitor and KOL discovery via `user_posts` and `note_detail`.

### Sample input

```json
{
  "mode": "trending",
  "category": "cosmetics",
  "limit": 50,
  "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
```

### Sample output

Each record returns `post_id`, `author`, `author_id`, `title`, `body`, `image_urls`, `hashtags`, `likes`, `comments`, `shares`, `posted_at`:

```json
{ "post_id": "65a1f...e3", "author": "美妆日记Amy", "title": "早C晚A空瓶记录", "likes": 12840, "comments": 612, "hashtags": ["护肤","空瓶"], "posted_at": "2026-06-21T09:14:00Z" }
```

### FAQ

**Does this RedNote scraper need a login or cookie?** No — trending, category feeds, `note_detail` and `user_posts` run cookieless (an anonymous session is acquired automatically; a residential proxy is required). Only precise keyword and hashtag search are login-gated; supply an optional cookie to unlock them.

**Can it do keyword search on Xiaohongshu?** Partially. Keyword search is login-gated by RedNote; without a cookie you get the category / explore feed for that topic, not a precise filtered search. With a cookie, full keyword search works.

**Is scraping Xiaohongshu / RedNote legal?** It pulls only publicly visible content reachable by any logged-out visitor; it does not bypass login walls or private profiles. Buyers are responsible for compliance with the site's Terms of Service and applicable law.

**What data fields are returned per note?** post\_id, author, title, body, images, hashtags, likes / comments / shares, and posted-at timestamp.

**Do I need to read Chinese?** No — fields are structured and English-labeled. Chinese keywords give the best native results; English fallbacks work too.

### Related NexGenData actors

- [Bilibili Video Search](https://apify.com/nexgendata/bilibili-video-search)
- [China Trends Tracker](https://apify.com/nexgendata/china-trends-tracker)
- [Weibo Hot Search Tracker](https://apify.com/nexgendata/weibo-hot-search-tracker)
- [Bilibili Video Comments](https://apify.com/nexgendata/bilibili-video-comments)

***

*Built and maintained by [NexGenData](https://apify.com/nexgendata). Home: [thenextgennexus.com](https://thenextgennexus.com).*

# Actor input Schema

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

What to scrape. 'trending' pulls the homepage discovery feed (no other inputs needed). 'keyword\_search' searches RedNote for the keywords in the 'keywords' field (Chinese or English). 'hashtag' pulls posts under the hashtag/topic pages in 'hashtags'. 'user\_posts' pulls recent posts from each user reference in 'users' (accepts full URL, /user/profile/{id}, or bare user id).

## `category` (type: `string`):

For 'trending' mode: which cookieless explore feed to pull. 'recommend' = mixed feed; or pick a category channel. Works WITHOUT a cookie.

## `cookie` (type: `string`):

OPTIONAL. The scraper works anonymously by default (it acquires an anonymous session automatically; residential proxy required). Supply a logged-in xiaohongshu.com cookie only to raise rate limits or unlock comments/profile data. To get it: log in at xiaohongshu.com, open DevTools → Application → Cookies (or run document.cookie), and paste the full cookie string (e.g. 'a1=...; web\_session=...; webId=...'). Using your own account may violate XHS Terms — use at your own risk. Treated as a secret.

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

List of search terms for 'keyword\_search' mode. Chinese characters give native-quality hits (e.g. \['口红', '护肤', '穿搭']); English fall-backs work too (e.g. \['lipstick', 'skincare', 'outfit']). Ignored in other modes.

## `hashtags` (type: `array`):

List of RedNote hashtags or topic slugs to pull posts for, in 'hashtag' mode. Provide the tag text without the leading '#' (e.g. \['秋冬穿搭', '咖啡探店']). Falls back to keyword search if the topic page is unavailable. Ignored in other modes.

## `users` (type: `array`):

List of RedNote user references for 'user\_posts' mode. Accepts a full profile URL (https://www.xiaohongshu.com/user/profile/{id}), a path (/user/profile/{id}), or just the bare user id. Ignored in other modes.

## `note_urls` (type: `array`):

For 'note\_detail' mode: RedNote note URLs (best with xsec\_token, e.g. https://www.xiaohongshu.com/explore/<id>?xsec\_token=...) or bare note IDs. Returns full body text + top comments. Works WITHOUT a cookie.

## `limit` (type: `integer`):

Maximum number of RedNote posts to return per run (across all keywords / hashtags / users). 10-30 is appropriate for daily monitoring; 100+ for one-off research sweeps. Defaults to 25 as an evaluation-sized sample; raise it for full runs (each result is billed).

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

Apify proxy configuration. RESIDENTIAL is strongly recommended — RedNote is hosted in mainland China and applies anti-bot detection on datacenter IPs (returns 403/461 or empty feeds). Residential CN-egress IPs work best; the actor falls back through httpx → Playwright → maintenance stub. Default exit is pinned to CN residential (apifyProxyCountry=CN) for reliable inside-China egress.

## Actor input object example

```json
{
  "mode": "trending",
  "category": "recommend",
  "keywords": [
    "护肤",
    "口红",
    "穿搭"
  ],
  "hashtags": [
    "秋冬穿搭"
  ],
  "users": [],
  "note_urls": [],
  "limit": 25,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "CN"
  }
}
```

# 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 = {
    "mode": "trending",
    "category": "recommend",
    "keywords": [
        "护肤",
        "口红",
        "穿搭"
    ],
    "hashtags": [
        "秋冬穿搭"
    ],
    "users": [],
    "note_urls": [],
    "limit": 25,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "CN"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgendata/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 = {
    "mode": "trending",
    "category": "recommend",
    "keywords": [
        "护肤",
        "口红",
        "穿搭",
    ],
    "hashtags": ["秋冬穿搭"],
    "users": [],
    "note_urls": [],
    "limit": 25,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "CN",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("nexgendata/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 '{
  "mode": "trending",
  "category": "recommend",
  "keywords": [
    "护肤",
    "口红",
    "穿搭"
  ],
  "hashtags": [
    "秋冬穿搭"
  ],
  "users": [],
  "note_urls": [],
  "limit": 25,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "CN"
  }
}' |
apify call nexgendata/rednote-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=nexgendata/rednote-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/3TOuOT6w8rxNS4evj/builds/QPd29g7Az0IB1u7yc/openapi.json
