# Xiaohongshu (RED) Scraper: Feeds + Creators (`themineworks/xiaohongshu-explore-scraper`) Actor

Scrape Xiaohongshu / RedNote discovery feeds across 11 category channels, with note text, topics, engagement and video URLs, plus creator profiles with followers, bio and niche tags. No login or API key.

- **URL**: https://apify.com/themineworks/xiaohongshu-explore-scraper.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** Social media, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

## Xiaohongshu Scraper: Category Feeds, Notes & Creators

> 🏆 Part of The Mine Works' 149-actor portfolio · 40,000+ runs · 200,000+ results delivered across our full distribution stack · 99.9%+ success rate

> 💰 $0.90 / 1,000 results.

> ⚡ 11 category feeds, not just the Explore page. No login, no browser, no API key.
> 💸 Pay per note, per full-detail note, or per creator profile. You pick the depth per run.

Scrape Xiaohongshu, also known as RED or RedNote, the Chinese lifestyle platform with roughly 300 million monthly users that drives most beauty, fashion, travel and food discovery in China. No login, no browser, no API key.

✅ 11 category feeds, not just one · ✅ Full note text and topic tags · ✅ Creator profiles with follower counts · ✅ Engagement numbers parsed from 万/亿 into real integers · ✅ No note or creator charge on an empty run · ✅ MCP-ready for AI agents

### Scrape the Xiaohongshu discovery feed by category

Pick the Explore feed, or any of Xiaohongshu's own category channels: Fashion, Food, Beauty, Film & TV, Career, Relationships, Home, Gaming, Travel, Fitness and Video. Select several and the run rotates between them, so you get a share from each instead of filling up on the first.

```json
{
  "mode": "feed",
  "categories": ["homefeed.cosmetics_v3", "homefeed.fashion_v3"],
  "maxItems": 100
}
```

Each note comes back with its title, format (image post or video), author, like count, cover image and a direct note URL.

### Get the full text, topics and video URL of every note

Turn on **Fetch full note details** and each note is opened to add its body text, topic tags, comment / share / save counts, every image URL, the playable video URL and the publish date.

```json
{
  "mode": "feed",
  "categories": ["homefeed.travel_v3"],
  "includeDetails": true,
  "maxItems": 40
}
```

This costs one extra request per note, so it is billed at the higher per-note rate. Leave it off when you only need a headline scan of what is trending.

### Research creators and influencers

Paste Xiaohongshu profile URLs and get each creator's profile plus their recent posts, in one record set.

```json
{
  "mode": "creators",
  "creators": [
    "https://www.xiaohongshu.com/user/profile/5bc41ce0c2ffcc00015326e0?xsec_token=ABxxxx",
    "https://www.xiaohongshu.com/user/profile/555abb13e4b1cf27444532b0?xsec_token=ABxxxx"
  ]
}
```

**Use the full URL you copied from Xiaohongshu, including its `xsec_token`.** Tested across eight creators, profile requests carrying the token succeeded 8 times out of 8, while bare user IDs succeeded only 5 times out of 8 and gave different answers on repeat attempts. A bare ID is retried automatically, but it is not reliable and is not what this mode is built around.

### What data do you get

**Note records (feed mode)**

| Field | Description |
| --- | --- |
| 📝 `title` | The note's display title |
| 🔗 `note_url` | Direct link to the note on Xiaohongshu |
| 🎬 `note_type` | `normal` for an image post, `video` for a video |
| 🏷️ `category` | Which feed the note came from |
| 👤 `author_name`, `author_id`, `author_url` | The creator who posted it |
| ❤️ `liked_count` | Likes as an integer, plus `liked_count_raw` as Xiaohongshu wrote it |
| 🖼️ `cover_url`, `cover_width`, `cover_height` | Cover image |
| ⏱️ `video_duration_sec` | Video length, on video notes |

**Added when `includeDetails` is on**

| Field | Description |
| --- | --- |
| 📄 `description` | The note's body text |
| #️⃣ `topics`, `topic_ids` | Topic tags attached to the note |
| 💬 `comment_count`, `share_count`, `collected_count` | Full engagement set |
| 🖼️ `image_urls` | Every image in the post |
| ▶️ `video_url` | Playable video file URL |
| 📅 `published_at`, `last_updated_at` | ISO timestamps |

**Creator records (creators mode)**

| Field | Description |
| --- | --- |
| 👤 `nickname`, `red_id` | Display name and the public RED handle |
| 👥 `followers`, `following`, `likes_and_collects` | Audience size as integers, with the original bucketed strings kept alongside |
| 📍 `ip_location` | The province Xiaohongshu shows for the account |
| 🎯 `profession_tags` | The creator's declared niche, e.g. beauty blogger, music blogger |
| 📝 `bio` | Profile description |
| 📌 `recent_notes_returned` | How many of their recent posts came with this profile |

#### Real record from a live run

```json
{
  "record_type": "note",
  "note_id": "6a3c95cf000000001603f89b",
  "note_url": "https://www.xiaohongshu.com/explore/6a3c95cf000000001603f89b?xsec_token=AB4GDuBmjOd...",
  "note_type": "video",
  "title": "原来这种情况叫喜金水",
  "category": "Explore (all)",
  "author_name": "汤饭小当家",
  "author_id": "65ef199d0000000005009db2",
  "liked_count": 5934,
  "liked_count_raw": "5934",
  "cover_url": "http://sns-webpic-qc.xhscdn.com/...",
  "detail_fetched": false,
  "scraped_at": "2026-08-30T19:00:00.000Z"
}
```

**About the numbers.** Xiaohongshu publishes engagement as localised text: `4.4万` means 44,000 and `1.2亿` means 120,000,000. Every count is returned twice, once parsed to a real integer you can sort and total, and once as the original string so you can audit it.

### How the feed actually works, and what that means for you

Xiaohongshu has no feed cursor. Each request returns a fresh sample of its recommendation feed, so this actor keeps requesting until it reaches your `maxItems`. In a live test, four sequential requests returned 28, 33, 27 and 28 notes with **zero overlap**, giving 115 unique notes. Duplicates are filtered inside the run and never billed, and once a feed starts returning only notes you already have, that feed stops rather than paying to fetch them again.

The practical consequence: this is a sampler of what Xiaohongshu is actually recommending right now, not a complete archive of a category. That is what makes it useful for trend work.

### What this does not do, and why

**There is no keyword search.** Xiaohongshu's search page returns a valid response, but the results are not in it: they arrive from a signed internal API that requires request signatures computed inside browser JavaScript. A search mode would return zero results on every run, so it is not offered rather than shipped as a feature that never works.

**Creator posts have no individual URLs.** Xiaohongshu removes note IDs from profile pages entirely, so a creator's recent posts come back with title, format, likes, cover image and publish date, but `note_url` is null. This was verified directly rather than assumed. For notes with URLs, use feed mode.

### What does Xiaohongshu scraping cost here

| Event | Price | You pay when |
| --- | --- | --- |
| Note scraped | $0.0009 | A note is returned from a feed |
| Note detail scraped | $0.003 | A note is returned **with** its body text, topics and full engagement |
| Creator profile scraped | $0.006 | A creator profile is returned, including their recent posts at no extra charge |
| Actor Start | $0.005 | The run starts. One event per GB of memory, and this actor runs on 512 MB, so one per run |

Flat pricing across every Apify plan, not tiered. A run that returns nothing costs the actor start event and nothing else, no note or creator charges. If a detail fetch fails, you still get the note and are billed at the cheaper base rate, never the detail rate. There is no subscription.

### Common use cases

**China market trend research.** Watch what is surfacing in Beauty or Fashion this week before committing to a campaign.

**Influencer discovery and vetting.** Pull follower counts, niche tags, location and bio for a shortlist of creators, from public profile data.

**Competitive and category monitoring.** Track which formats and topics are getting engagement in your category.

**Cross-platform social listening.** Add Chinese social signal alongside Western platforms most tools already cover. Pairs with [Douyin Trending & Hashtag Scraper](https://apify.com/themineworks/douyin-trending-hashtag-scraper).

### Run it on a schedule

1. Run the actor once with the input you want repeated, then click **Save as a task**.
2. Turn on **Monitor mode** so later runs return only what is new.
3. In the Apify Console go to **Schedules** → **Create new**, name it, set your timezone and a frequency.
4. Under **Actors or tasks to run**, add the task you saved.

Nothing is charged just for a schedule existing. Full options are in Apify's [Schedules documentation](https://docs.apify.com/platform/schedules).

### Requirements

This actor needs Apify's **residential proxy**. Xiaohongshu does not serve datacenter IP addresses at all, so a run without residential proxy access returns nothing rather than partial data.

### FAQ

**Do I need a Xiaohongshu account or cookies?**
No. Everything here comes from public pages rendered without a login.

**Why do repeated runs return different notes?**
Because Xiaohongshu's feed is a live recommendation sample, not a fixed list. That is the platform's behaviour, and it is why monitor mode is worth turning on for scheduled runs.

**Can I scrape a specific hashtag or topic?**
Not directly. Topic tags are returned on every note when `includeDetails` is on, so you can filter by topic after the fact, but Xiaohongshu's topic search is behind the same signed API as keyword search.

**Is it in Chinese?**
The content is, since it is a Chinese platform. Titles, body text, topics and creator names come back in the original Chinese, ready to pass to any translation step.

**Is this GDPR compliant?**
It collects only what a creator has published publicly on their own profile and posts. You are responsible for having a lawful basis for processing it.

### Part of the China social suite

Chinese platforms are mostly unclaimed ground in English-language scraper communities, where the discussion rarely gets past Twitter/X and Instagram. Pair this with [Bilibili Scraper](https://apify.com/themineworks/bilibili-scraper) for video search and creator stats, and [Weibo Scraper](https://apify.com/themineworks/weibo-scraper) for profile stats and post timelines on China's biggest microblog.

### Use from Claude, ChatGPT and any MCP agent

```
https://mcp.apify.com/?tools=themineworks/xiaohongshu-explore-scraper
```

Or call it programmatically:

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

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

const run = await client.actor('themineworks/xiaohongshu-explore-scraper').call({
    mode: 'feed',
    categories: ['homefeed.cosmetics_v3'],
    maxItems: 50,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

Keywords: Xiaohongshu scraper, RED scraper, RedNote scraper, Xiaohongshu API, Xiaohongshu creator profiles, Little Red Book scraper, China lifestyle app scraper, Xiaohongshu MCP server

# Actor input Schema

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

feed = Xiaohongshu's discovery feed, all of it or by category. creators = profile and recent posts for the creators you supply.

## `categories` (type: `array`):

Pick the Explore feed and/or any of Xiaohongshu's 11 category channels, e.g. "explore" for the general feed or "homefeed.food\_v3" for food content. Choosing several rotates between them so you get a share from each rather than filling up on the first.

## `includeDetails` (type: `boolean`):

Open each note to add its body text, topic tags, comment/share/save counts, all image URLs, the playable video URL and the publish date. This costs one extra request per note and is billed at the higher per-note rate.

## `creators` (type: `array`):

Paste full Xiaohongshu profile URLs, for example https://www.xiaohongshu.com/user/profile/5bc41ce0c2ffcc00015326e0?xsec\_token=ABxxx. Use the full copied URL: Xiaohongshu serves a gate page to roughly 3 in 8 requests that lack the xsec\_token, so a bare user ID is retried but not reliable.

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

Maximum billable records to return. In feed mode this counts notes; in creators mode it counts creators (their recent posts come included).

## `monitorMode` (type: `boolean`):

Run on a schedule and get ONLY records not delivered in a previous run, so a standing feed watch bills for new posts instead of re-billing the same feed every morning. Keep the input the same across runs.

## Actor input object example

```json
{
  "mode": "feed",
  "categories": [
    "explore"
  ],
  "includeDetails": false,
  "creators": [
    "https://www.xiaohongshu.com/user/profile/5bc41ce0c2ffcc00015326e0"
  ],
  "maxItems": 30,
  "monitorMode": false
}
```

# 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 = {
    "mode": "feed",
    "categories": [
        "explore"
    ],
    "creators": [
        "https://www.xiaohongshu.com/user/profile/5bc41ce0c2ffcc00015326e0"
    ],
    "maxItems": 30
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/xiaohongshu-explore-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": "feed",
    "categories": ["explore"],
    "creators": ["https://www.xiaohongshu.com/user/profile/5bc41ce0c2ffcc00015326e0"],
    "maxItems": 30,
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/xiaohongshu-explore-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 '{
  "mode": "feed",
  "categories": [
    "explore"
  ],
  "creators": [
    "https://www.xiaohongshu.com/user/profile/5bc41ce0c2ffcc00015326e0"
  ],
  "maxItems": 30
}' |
apify call themineworks/xiaohongshu-explore-scraper --silent --output-dataset

```

## MCP server setup

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