# Xiaohongshu (RedNote) Scraper - Notes, Profiles & Comments (`scrapersdelight/xiaohongshu-scraper`) Actor

Scrape Xiaohongshu (RedNote, 小红书) notes, creator profiles and explore feeds without login: full text with RedNote's English translation, every image and video link, likes, saves, comments, shares, video transcripts in two languages, the author and the comment preview. Note links, share links or ids.

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

## Pricing

from $0.90 / 1,000 notes

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?

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

### What does Xiaohongshu (RedNote) Scraper do?

**Xiaohongshu (RedNote) Scraper** turns Xiaohongshu (小红书, RedNote, XHS) notes into clean rows: the full note text, every image and video link, likes, saves, comments and shares, hashtags, the publish date, the author, the video transcript and RedNote's own English translation. Give it note links, share links, note ids, creator profiles or explore-feed categories. No login, no cookies, no app.

Also known as: RedNote scraper · Xiaohongshu scraper · XHS scraper · 小红书 scraper · Little Red Book scraper.

- 📝 **Full notes** — title, text, hashtags and topics, @mentions, publish and last-edit time, IP region.
- 🌐 **English translation** — `titleEnglish`, `descriptionEnglish` and `hashtagsEnglish` from rednote.com's own translation.
- 🎬 **Video + transcripts** — every stream (h264/h265, size, bitrate, fps), subtitle tracks, and the spoken text in the original language **and** in English.
- 🖼️ **Images that do not expire** — every image as an unsigned full-size CDN file next to the signed page link.
- 👤 **Creator profiles** — name, RED id, bio, exact likes, saves and notes totals, tags, verification, newest ~30 notes.
- 💬 **Comment preview** — the comments Xiaohongshu shows signed-out visitors, with replies and who they answer.
- 🔁 **Monitor mode** — schedule it and get only notes it has not delivered before.
- 🔗 **Any link format** — xiaohongshu.com and rednote.com links, xhslink.com share links, whole pasted share text, bare 24-character ids.

### What data can you get from Xiaohongshu?

<table>
<tr><td>🆔 Note id + link (<code>noteUrl</code>)</td><td>📝 Title + full text</td><td>🌐 English title, text, hashtags</td></tr>
<tr><td>❤️ Likes (<code>likes</code>)</td><td>⭐ Saves (<code>collects</code>)</td><td>💬 Comment count</td></tr>
<tr><td>🔁 Shares</td><td>🔢 Exact or rounded flag (<code>countsExact</code>)</td><td>📅 Published + last edited</td></tr>
<tr><td>📍 IP region (<code>ipLocation</code>)</td><td>#️⃣ Hashtags + topic ids</td><td>👥 @mentions</td></tr>
<tr><td>🖼️ Images (signed + unsigned original)</td><td>✨ Live Photos</td><td>🎬 Video streams + backups</td></tr>
<tr><td>⏱️ Video length, size, codec, fps</td><td>🗣️ Transcript (original + English)</td><td>🎞️ Subtitle tracks (.srt)</td></tr>
<tr><td>👤 Author id, name, avatar, link</td><td>🏷️ Profile: RED id, bio, gender, tags</td><td>📊 Profile: exact likes, saves, notes</td></tr>
<tr><td>✅ Verified account flag</td><td>🗂️ Newest ~30 notes per profile</td><td>💬 Comments: text, likes, replies, region</td></tr>
</table>

### How to scrape Xiaohongshu with Xiaohongshu (RedNote) Scraper

1. [Create a free Apify account](https://console.apify.com/sign-up) — the free plan includes monthly credit.
2. Open **Xiaohongshu (RedNote) Scraper** and paste note links, profiles, or pick explore-feed categories.
3. Set filters (note type, minimum likes, posted within, keywords) and add-ons (comments, author profiles).
4. Click **Start**.
5. Download the rows as JSON, CSV or Excel, or read them through the API.

### ⬇️ Input

| Parameter | Type | Description |
|---|---|---|
| `noteUrls` | array | Note links (xiaohongshu.com / rednote.com), xhslink.com share links or share text, or 24-character note ids. |
| `profileUrls` | array | Profile links, xhslink.com profile share links, or 24-character user ids. |
| `feedCategories` | multi-select | Explore channels: recommend, fashion, food, cosmetics, movie_and_tv, career, love, household_product, gaming, travel, fitness, video, kpop. Empty input reads `recommend`. |
| `noteType` | select | `all` (default), `image` or `video`. |
| `minLikes` | integer | Keep notes with at least this many likes. |
| `postedWithinDays` | integer | Keep notes published in the last N days. |
| `includeKeywords` / `excludeKeywords` | array | Keep / drop notes whose title, text or hashtags (Chinese or English) contain a word. |
| `includeComments` | boolean | Add the comment preview as comment rows. Default off. |
| `maxCommentsPerNote` | integer | 1-20 comment rows per note. Default 20. |
| `includeAuthorProfiles` | boolean | Add one profile row per note author. Default off. |
| `includeTranscripts` | boolean | Add transcript text for videos with subtitles. Default on, no extra charge. |
| `monitorMode` / `monitorStoreName` | boolean / string | Deliver only notes and comments not delivered before under this memory name. |
| `maxItems` | integer | Most note + profile rows per run. Default 50. 0 = no cap. |
| `compact` | boolean | Core fields only, for AI and MCP pipelines. |
| `includeRawData` | boolean | Attach the page's own note or profile object as `raw`. |
| `proxyConfiguration` | proxy | Default: no proxy. |
| `maxConcurrency` | integer | Pages fetched at the same time, 1-16. Default 6. |

Nothing is required: an empty input reads the Recommended feed.

#### Input JSON

```json
{
  "noteUrls": [
    "https://www.xiaohongshu.com/explore/6abfc91e000000001403b27c?xsec_token=ABrpeLWo2ZkPrnMon23RDGH6IWtIZLJyYhzChfic_I1As%3D&xsec_source=pc_feed",
    "6a329deb000000000f01dbb4"
  ],
  "profileUrls": ["https://www.xiaohongshu.com/user/profile/6444d090000000001002822f"],
  "feedCategories": ["food"],
  "includeComments": true,
  "maxItems": 30
}
```

#### Keep the xsec_token in note links

Xiaohongshu opens most notes only with the `xsec_token` that comes in the link you copy from the site or app. Paste the whole link, the xhslink.com share link, or the whole share text — the actor finds the link inside it. A bare note id opens when rednote.com publishes that note without a token (it did for 11 of 12 ids we took from rednote.com pages, 1 of 12 from xiaohongshu.com feeds); otherwise it is listed as `tokenRequired` in the run summary and not charged.

#### Use feed categories to discover notes

Each explore-feed page load brings 35 new notes (rednote.com); the actor opens every one for its full details. With several categories, `maxItems` is split evenly between them.

#### Plan on about 40-55 notes per run

Xiaohongshu limits how many pages one IP address may open while signed out (see Limits). The comment preview and author profiles each add one page per note, so they lower the count. Keep `maxItems` around the default 50 and run more often instead: a schedule with **monitor mode** on collects a feed or a list of links run after run without paying twice for the same note.

### ⬆️ Output

One row per note, profile or comment (`recordType`). A note row from our test run (trimmed):

```json
{
  "recordType": "note",
  "noteId": "6abfc91e000000001403b27c",
  "noteType": "video",
  "title": "妈妈牌炖肘子",
  "titleEnglish": "Mom's homemade stewed pork knuckle",
  "likes": 3035, "collects": 196, "commentsCount": 121, "shares": 199,
  "countsExact": true,
  "publishedAt": "2026-10-02T15:09:18.000Z",
  "ipLocation": "甘肃",
  "authorName": "2号爱吃肉的比基尼小姐姐",
  "hashtags": ["美食掌门人", "沉浸式吃饭", "猪脚饭"],
  "hashtagsEnglish": ["gourmetmaster", "justvibingwithmyfood", "porkknucklerice"],
  "coverUrlOriginal": "https://sns-img-qc.xhscdn.com/1040g2sg325qvevlc4ee05o4l5q308f9k6ks93p8",
  "videoUrl": "https://sns-v28.rednotecdn.com/stream/79/110/258/01eabfc91e9921074f037001a0fd2e3614_258.mp4",
  "videoDuration": 393, "videoWidth": 720, "videoHeight": 1280,
  "videoSubtitleLanguages": ["en-US", "zh-CN"],
  "transcript": "呼肘子。妈妈牌货肘子\n粉皮白菜肉，还有炒藕片\n…",
  "transcriptEnglish": "Call for pork knuckles. Mom's style pork knuckles\n…",
  "sourceHost": "rednote.com"
}
```

A profile row and a comment row:

```json
{ "recordType": "profile", "userId": "6444d090000000001002822f", "nickname": "九派新闻", "redId": "63034816395",
  "ipLocation": "湖北", "followersText": "1万+", "followers": 10000, "followersIsExact": false,
  "likesTotal": 23496423, "collectsTotal": 1517468, "notesCount": 15882, "verified": true, "recentNotesCount": 32 }
{ "recordType": "comment", "commentId": "6ac03203000000000801f848", "noteId": "6abfc91e000000001403b27c",
  "content": "不善做饭有别的特长[斜眼R]", "likes": 10, "isReply": true, "repliedToUserName": "龙龙龙龙是杰",
  "authorName": "天涯若比蔺🎸", "ipLocation": "辽宁", "createdAt": "2026-10-02T22:36:51.000Z" }
```

#### Fields and measured fill

Measured on our test runs of 2026-10-16 (feed runs of 43, 56 and 87 notes, 20 notes with 20 author profiles and 248 comments, a 5-link run, the 10-row demo).

| Fields | Fill |
|---|---|
| `noteId`, `noteUrl`, `noteType`, `likes`, `publishedAt`, `authorId`, `authorName`, `imageUrls`, `imageUrlsOriginal`, `coverUrlOriginal`, `shareDisabled` | 100% of notes |
| `title` / `description` | 95-100% / 97-100% (some notes are text-only or title-only) |
| `collects`, `commentsCount`, `shares` | 95-100% |
| `titleEnglish`, `hashtagsEnglish` | 95-100% of notes read from rednote.com; none from xiaohongshu.com |
| `descriptionEnglish` | 60-80% (notes whose text is only hashtags have none) |
| `hashtags` | 85-100% |
| video fields (`videoUrl`, streams, length, size, codec, md5, thumbnail) | 100% of video notes (30-35% of feed notes are videos) |
| `transcript`, `transcriptEnglish` | 50-100% of video notes (videos with RedNote subtitles) |
| `ipLocation` | 40% of linked notes, 0-11% of feed notes, 85% of profiles, 98-100% of comments |
| profile `redId`, `notesCount`, `likesTotal`, `collectsTotal`, `followersText`, `verified` | 100% of profiles |
| profile `tags` / `location` / `profession` | 75% / 55% / 25% (20 author profiles) |
| comment `content`, `likes`, `authorName`, `createdAt` | 98-100% |
| reply `repliedToUserName` | 97% of replies |

Not delivered: keyword search results, full comment threads past the first screen, a creator's full note list, and note ids on profile cards (Xiaohongshu shows none of these to signed-out visitors); exact follower counts (shown only as a bucket such as `1万+`); the "nice" counter and collection counts (always blank or 0 for signed-out visitors); follow and like state (signed-in only); media files (links only — signed links expire after hours to days, `imageUrlsOriginal` links do not carry an expiry stamp).

### Use cases

- 📈 **Brand and KOL marketers** — track notes in a category or by a creator: likes, saves, comments, shares and the date.
- 🌏 **Cross-border e-commerce teams** — read Chinese consumer notes in English with the translated title, text, hashtags and transcript.
- 🕵️ **Competitor watchers** — schedule note links or a feed with monitor mode on and get only the new notes.
- 🎬 **Content researchers** — video length, transcripts and subtitles for format analysis.
- 🤖 **AI and RAG pipelines** — compact rows with bilingual text, over the API or MCP.
- 🧑‍💼 **Influencer scouts** — exact likes, saves and notes totals per creator, plus RED id, tags and region.

### How much does it cost to scrape Xiaohongshu?

Pay per result, no start fee: **$0.0009 per note**, **$0.0009 per profile** and **$0.0009 per comment** row. Transcripts and translations cost nothing extra. Filtered notes, duplicates, notes seen in earlier monitor runs and links that do not open are never charged.

| Run | Rows | Cost |
|---|---|---|
| 10 notes | 10 | $0.009 |
| 50 notes (default cap) | 50 | $0.045 |
| 20 notes + author profiles + comment preview | 288 (20 + 20 + 248) | $0.26 |

### Integrations, API, scheduling & MCP

- **Schedule** a task hourly or daily with **monitor mode** on to collect only new notes from a feed or a list of links.
- **Webhooks**, **Make**, **Zapier**, **n8n**, **Google Sheets**, **Slack** and **Airtable** from the Integrations tab.
- **API**: call it from [Python](https://apify.com/scrapersdelight/xiaohongshu-scraper/api/python) or [JavaScript](https://apify.com/scrapersdelight/xiaohongshu-scraper/api/javascript) with `apify-client`, then read the dataset.
- **MCP**: use it from Claude, ChatGPT or Cursor through the [MCP tab](https://apify.com/scrapersdelight/xiaohongshu-scraper/api/mcp); turn on **Compact output** for shorter rows.

### More social media scrapers

<table>
<tr><td>🎵 <a href="https://apify.com/topapi/douyin-scraper"><b>Douyin Scraper</b></a><br>Videos, creators, comments, hot search.</td><td>💬 <a href="https://apify.com/scrapersdelight/tiktok-comments-scraper"><b>TikTok Comments Scraper</b></a><br>Comments, replies, likes.</td><td>👤 <a href="https://apify.com/scrapersdelight/tiktok-profile-scraper"><b>TikTok Profile Scraper</b></a><br>Followers, bio, stats.</td></tr>
<tr><td>🗣️ <a href="https://apify.com/scrapersdelight/instagram-transcript-scraper"><b>Instagram Reel Transcript</b></a><br>Speech to text, no login.</td><td>📺 <a href="https://apify.com/scrapersdelight/youtube-transcript-scraper"><b>YouTube Transcript Scraper</b></a><br>Subtitles with timestamps.</td><td>🧵 <a href="https://apify.com/scrapersdelight/threads-profile-scraper"><b>Threads Profile Scraper</b></a><br>Followers, bio links, posts.</td></tr>
</table>

See every actor on our [profile](https://apify.com/scrapersdelight).

### Limits & empty runs

- **Pages per IP.** Xiaohongshu shows signed-out visitors a human check (a CAPTCHA page) after a number of note pages from one IP address. On fresh datacenter IPs we measured it at the **45th-64th rednote.com page** (64 at one page every 0.8 s, 2 s and 5 s alike — speed does not change it), and later the same evening some IPs got it within the first 1-7 pages. The run **stops at the first one**: rows already saved are kept, nothing after it is fetched or charged, and the CAPTCHA is never answered. Our feed runs delivered **43-56 notes** before it. The same IPs were served again 2-28 minutes after their check, so the limit works like a rolling window.
- **Comments** are the first screen only: up to 5 top comments with up to 3 replies each (up to 20 rows per note). `hasMoreReplies` marks threads that have more.
- **Followers** are a bucket for signed-out visitors (`1万+` → `followers: 10000`, `followersIsExact: false`); likes, saves and note totals are exact.
- Image, video and subtitle links from the page are signed and expire; download them promptly or use the unsigned `imageUrlsOriginal`.
- Links that need a token, deleted notes and links that are not Xiaohongshu are listed in `RUN_SUMMARY` and never charged. A run where nothing could be read fails with a clear status message.

### ❓ FAQ

#### How much does Xiaohongshu (RedNote) Scraper cost?

$0.0009 per note, profile or comment row, with no start fee. 50 notes cost $0.045.

#### How many notes can Xiaohongshu (RedNote) Scraper return per run?

As many as Xiaohongshu serves one IP before its human check: 43-56 notes in our feed runs, fewer when the IP was checked recently. Schedule several smaller runs with monitor mode for more.

#### Does Xiaohongshu (RedNote) Scraper translate notes into English?

Yes. Notes are read from rednote.com, which carries RedNote's own English title, text and hashtags; video transcripts come in the original language and in English. A note that only opens on xiaohongshu.com (the fallback) has no English fields.

#### Can Xiaohongshu (RedNote) Scraper search notes by keyword?

No. Xiaohongshu shows search results only to signed-in users. Use explore-feed categories with `includeKeywords` to keep notes that mention your words.

#### Can I get comments with Xiaohongshu (RedNote) Scraper?

Yes, the preview Xiaohongshu shows signed-out visitors: up to 5 top comments and 3 replies each per note, with likes, region, time and who a reply answers.

#### Can I schedule Xiaohongshu (RedNote) Scraper to monitor creators or a feed?

Yes. Save a task, add a schedule and turn on **Only new notes (monitor mode)**. Notes delivered before are skipped and not charged.

#### Can I use Xiaohongshu (RedNote) Scraper with the Apify API or an MCP server?

Yes — call it from Python or JavaScript with `apify-client`, from Make/Zapier/n8n, or as a tool in Claude, ChatGPT or Cursor over MCP.

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

No. The actor reads the pages any signed-out visitor sees. No login, no cookies, no app.

#### Why did my Xiaohongshu (RedNote) Scraper run return fewer notes than I asked for?

Xiaohongshu showed its human check to the run's IP, the link needed its `xsec_token`, or your filters removed notes. `RUN_SUMMARY` lists every link that did not open and why the run stopped. Nothing is charged for rows that were not delivered.

#### Your feedback

Something missing or wrong? Open an issue on the [Issues tab](https://apify.com/scrapersdelight/xiaohongshu-scraper/issues/open) — we read every one.

# Actor input Schema

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

Notes to scrape: links from xiaohongshu.com or rednote.com (keep the ?xsec_token=… part), xhslink.com share links or the whole share text, or 24-character note ids, e.g. 6a329deb000000000f01dbb4.

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

Creator profiles: profile links (xiaohongshu.com or rednote.com), xhslink.com profile share links, or 24-character user ids, e.g. 6444d090000000001002822f.

## `feedCategories` (type: `array`):

Explore-feed channels to collect notes from, e.g. Recommended, Food, Travel. Every feed note is opened for its full details. The cap is split evenly between the channels.

## `noteType` (type: `string`):

Keep only image notes or only video notes. Feed cards of the other type are skipped before they are opened.

## `minLikes` (type: `integer`):

Keep notes with at least this many likes, e.g. 1000. 0 keeps all.

## `postedWithinDays` (type: `integer`):

Keep notes published in the last N days, e.g. 30. 0 keeps all. Topic channels show many older notes to signed-out visitors.

## `includeKeywords` (type: `array`):

Keep notes whose title, text or hashtags (Chinese or English translation) contain at least one of these words, e.g. 咖啡, coffee.

## `excludeKeywords` (type: `array`):

Drop notes whose title, text or hashtags contain any of these words, e.g. 广告.

## `includeComments` (type: `boolean`):

Also save the comments Xiaohongshu shows signed-out visitors under each note: up to 5 top comments with up to 3 replies each, one row per comment (charged per comment row). Needs a full note link or a feed note.

## `maxCommentsPerNote` (type: `integer`):

Comment rows (top comments and replies) to save per note, 1-20. Signed-out pages show at most 20.

## `includeAuthorProfiles` (type: `boolean`):

Also save the profile of each note's author (one profile row per author, charged per profile row).

## `includeTranscripts` (type: `boolean`):

For video notes with Xiaohongshu's own subtitles: the spoken text in the original language and in English, as plain text. No extra charge.

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

Skip notes and comments that earlier runs with the same monitor memory name already delivered. Pairs with a daily schedule. Profiles are always delivered (they are snapshots).

## `monitorStoreName` (type: `string`):

Named key-value store that remembers delivered ids between runs. Use a different name per monitoring job.

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

Most note and profile rows to save in total, e.g. 50. Comment rows are capped per note instead. 0 = no cap. Xiaohongshu shows signed-out visitors a human check after about 45-64 note pages from one IP, and the run stops there.

## `compact` (type: `boolean`):

Core fields only (title, text, translation, counts, author, media links, transcript), trimmed for AI / MCP pipelines.

## `includeRawData` (type: `boolean`):

Attach the page's own note or profile object as `raw` to each row.

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

Default: no proxy (direct requests work). If Xiaohongshu refuses the direct IP, the run moves to your proxy, or to Apify residential proxy within a small per-run budget.

## `maxConcurrency` (type: `integer`):

Pages fetched at the same time, 1-16.

## Actor input object example

```json
{
  "profileUrls": [
    "https://www.xiaohongshu.com/user/profile/6444d090000000001002822f"
  ],
  "feedCategories": [
    "recommend"
  ],
  "noteType": "all",
  "includeComments": false,
  "maxCommentsPerNote": 20,
  "includeAuthorProfiles": false,
  "includeTranscripts": true,
  "monitorMode": false,
  "monitorStoreName": "xiaohongshu-scraper-monitor",
  "maxItems": 10,
  "compact": false,
  "includeRawData": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "maxConcurrency": 6
}
```

# Actor output Schema

## `results` (type: `string`):

One item per note, profile or comment (see recordType).

## `summary` (type: `string`):

Per-source counts; links that need their xsec_token, notes not found, unreachable or CAPTCHA-stopped inputs (never billed); transport stats; why the run stopped.

# 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 = {
    "profileUrls": [
        "https://www.xiaohongshu.com/user/profile/6444d090000000001002822f"
    ],
    "feedCategories": [
        "recommend"
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapersdelight/xiaohongshu-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 = {
    "profileUrls": ["https://www.xiaohongshu.com/user/profile/6444d090000000001002822f"],
    "feedCategories": ["recommend"],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapersdelight/xiaohongshu-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 '{
  "profileUrls": [
    "https://www.xiaohongshu.com/user/profile/6444d090000000001002822f"
  ],
  "feedCategories": [
    "recommend"
  ],
  "maxItems": 10
}' |
apify call scrapersdelight/xiaohongshu-scraper --silent --output-dataset

```

## MCP server setup

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