# RedNote (Xiaohongshu) Search Scraper - 500 Notes/30s (`zen-studio/rednote-search-scraper`) Actor

Extract Xiaohongshu (RedNote / 小红书) search results by keyword. Get author profile, engagement counts (likes, comments, collects), image galleries, and playable video stream URLs — 24 fields per note. No headless browser, no captcha. 500 notes in 30s. Filter by note type. JSON/CSV/Excel export.

- **URL**: https://apify.com/zen-studio/rednote-search-scraper.md
- **Developed by:** [Zen Studio](https://apify.com/zen-studio) (community)
- **Categories:** Social media, Videos, Automation
- **Stats:** 4,687 total users, 1,324 monthly users, 100.0% runs succeeded, 6 bookmarks
- **User rating**: 4.03 out of 5 stars

## Pricing

from $4.99 / 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/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 / 小红书) Search Scraper | Keyword Search, Filters & Full Note Metadata (2026)

<blockquote style="border-left:4px solid #FF2442;background:#FFF5F5;padding:12px 16px">
<span style="font-size:16px;font-weight:700;color:#1C1917">Search RedNote (小红书 / Xiaohongshu) by keyword: full note content, author profile, engagement counts, image gallery, and playable video stream URLs in clean structured JSON.</span> <span style="font-size:15px;color:#57534E">Pick between relevance / most-popular / newest sorts, filter by note type and recency.</span>
</blockquote>

> 🆕 **New (June 5, 2026):** set **Max results per keyword** to `0` (= all available) or any number above 1,000 to collect up to ~7,000 unique notes per keyword instead of just the first 1,000. Same per-result price.

![RedNote (Xiaohongshu) search scraper: notes as structured JSON with author profile, engagement counts, images, and video stream URLs](https://iili.io/Bmnlu3B.png)

> ⚡ **Built for speed.** No headless browser, no page-load waits, no captcha-solving overhead. **500 notes typically arrive in under 30 seconds**; 1,000 notes in under a minute. Most other Xiaohongshu scrapers drive a headless Chromium instance; this one doesn't.

<table>
<tr>
<td colspan="4" style="padding:10px 14px;background:#4C945E;border:none;border-radius:4px 4px 0 0">
<span style="color:#FAFAF9;font-size:14px;font-weight:700;letter-spacing:0.5px">Zen Studio · Chinese-platform suite</span>
<span style="color:#E8F5E9;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;RedNote (小红书), Douyin (抖音), Xigua (西瓜视频)</span>
</td>
</tr>
<tr>
<td style="background:#E8F5E9;padding:10px 12px;border:1px solid #E7E5E4;border-right:none;border-top:none;vertical-align:top;width:25%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-sAWbV6wp5XO5aEapx-C7gOsPJt9Q-xiaohongshu-search-scraper-logo-square.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/zen-studio/rednote-user-profile-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">RedNote&nbsp;User&nbsp;Profile</a></span><br>
<span style="color:#78716C;font-size:11px">Profile + every post, 68 fields</span>
</td>
<td style="background:#E8F5E9;padding:10px 12px;border:1px solid #E7E5E4;border-right:none;border-top:none;vertical-align:top;width:25%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-hO5NqsA6aC1bz3jra-MjB05eVFEt-xiaohongshu-search-scraper-logo-square.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/zen-studio/rednote-comments-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">RedNote&nbsp;Comments</a></span><br>
<span style="color:#78716C;font-size:11px">Nested replies, 30+ fields</span>
</td>
<td style="padding:10px 12px;border:1px solid #E7E5E4;background:#D3EDD9;border-right:none;border-top:none;vertical-align:top;width:25%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-sAWbV6wp5XO5aEapx-C7gOsPJt9Q-xiaohongshu-search-scraper-logo-square.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/zen-studio/rednote-search-scraper" style="color:#4C945E;text-decoration:none;font-weight:700;font-size:13px">RedNote&nbsp;Search</a></span><br>
<span style="color:#4C945E;font-size:11px;font-weight:600">&#10148; You are here</span>
</td>
<td style="background:#E8F5E9;padding:10px 12px;border:1px solid #E7E5E4;border-top:none;vertical-align:top;width:25%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-3TJaaOJDU1AMiOoJM-Vu2eVr0P6N-douyin-profile-scraper-logo.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/zen-studio/douyin-search-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Douyin&nbsp;Search</a></span><br>
<span style="color:#78716C;font-size:11px">Keyword + filters, 60+ fields</span>
</td>
</tr>
</table>

#### Copy to your AI assistant

```
zen-studio/rednote-search-scraper on Apify. Scrapes Xiaohongshu (RedNote / 小红书) search results by keyword. One row per note with author profile, engagement counts, image gallery (including full-resolution URLs and live-photo data), and all available video stream variants. Call ApifyClient("TOKEN").actor("zen-studio/rednote-search-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Requires keywords (string[]); each keyword runs independently with its own maxResults budget. Full spec: GET https://api.apify.com/v2/acts/zen-studio~rednote-search-scraper/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Token: https://console.apify.com/account/integrations
```

### How to Search RedNote by Keyword

#### Basic: one keyword, default 100 results

```json
{
  "keywords": ["美食推荐"],
  "maxResults": 100
}
```

#### Multi-keyword with sort and type filter

```json
{
  "keywords": ["护肤", "skincare routine"],
  "maxResults": 200,
  "sortType": "popularity_descending",
  "noteType": "video"
}
```

#### Newest-first with recency filter: trend monitoring

```json
{
  "keywords": ["春季穿搭", "春天穿搭"],
  "maxResults": 300,
  "sortType": "time_descending",
  "timeFilter": "1w",
  "topUpFromOtherSorts": false
}
```

#### Maximum coverage: every note for a keyword

```json
{
  "keywords": ["美食推荐"],
  "maxResults": 0
}
```

`0` collects all available notes, up to ~7,000 for a broad keyword. Keep **Maximize results** on (the default) for the full sweep across sort orders and time ranges. Prefer a hard ceiling instead of all? Use any number above 1,000 in place of `0`.

### Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `keywords` | string\[] | *required* | Search terms. Chinese, English, hashtags, brand names, and emoji all work. Each keyword is searched independently with its own `maxResults` budget. |
| `maxResults` | integer | `100` | How many unique notes to collect per keyword (0–10000; `0` = all available). Cost scales linearly with results collected. Broad keywords return several thousand (up to ~7,000); narrow or niche keywords yield fewer. |
| `sortType` | string | `general` | `general` (Most relevant) / `popularity_descending` (Most popular) / `time_descending` (Newest first). Controls how the platform ranks results for your search. |
| `topUpFromOtherSorts` | boolean | `true` | "Maximize results." Gathers across all sort orders and time ranges, merging and de-duplicating, for the most unique notes per keyword. Recommended ON, same per-result price. The deeper time-range sweep engages only when you raise `maxResults` above 1,000; at or below 1,000 only the sort sweep runs. |
| `noteType` | string | `all` | `all` / `video` / `image` / `live`. Restrict results to a single note format. |
| `timeFilter` | string | `all` | `all` / `1d` (Past 24 hours) / `1w` (Past week) / `6mo` (Past 6 months). Restrict to notes published in a recent window. |

#### Accepted keyword formats

Any term the Xiaohongshu search box accepts:

| Format | Example |
|---|---|
| Chinese word or phrase | `美食推荐`, `护肤心得`, `家常菜` |
| English word | `skincare`, `minimalist`, `coffee` |
| Brand or person name | `iPhone`, `lululemon`, `张大奕` |
| Hashtag | `#美食`, `#穿搭` |
| Emoji | `🍜`, `✨` |

Each keyword is searched independently, then results are deduplicated so you never pay twice for the same note. With "Maximize results" on, a broad keyword can yield several thousand unique notes (up to ~7,000); a narrower one yields fewer once the platform's catalogue for that query is exhausted. Use multiple related keywords for even broader coverage.

### What Data Can You Extract from RedNote (Xiaohongshu)?

One row per note in clean JSON. Each row covers the note content, author, engagement, full image gallery, and, for video notes, all available quality and codec variants.

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | Note ID (24-char hex). |
| `type` | string | `video`, `normal` (image / text), or `live`. |
| `title` | string | Note title. |
| `desc` | string | Note body text, hashtags included inline. |
| `url` | string | Stable share URL with `xsec_token`; opens the note in a browser. |
| `xsec_token` | string | Share token required to re-open the note. |
| `timestamp` | integer | Publish time (Unix seconds). |
| `update_time` | integer | Last edit (Unix milliseconds). |
| `last_update_time` | integer | Last edit (Unix seconds). |
| `engagement` | object | `liked_count`, `comments_count`, `collected_count`, `shared_count`, `nice_count`. |
| `author` | object | `userid`, `red_id`, `nickname`, `avatar`, `verified`, `verify_type`, `show_verify_icon`, `followed`, `track_duration`, `live` (live-stream status, or `null` when the author is not live), `additional_tags` (author tags and badges). |
| `images` | array | Gallery images. Each entry: `url`, `url_large`, `width`, `height`, `original` (full-resolution URL), `fileid` (image file identifier), `live_photo` (motion-photo payload when the image is a live photo, otherwise absent), `live_photo_file_id` (live photo file identifier, when present). |
| `video` | object | null | `null` for non-video notes. Otherwise: `duration_seconds`, `thumbnail`, `thumbnail_dim`, `streams[]` (all available quality and codec variants), `url_720p` (convenience 720p link), `first_frame` (first-frame preview image URL), `audio_streams` (available audio stream variants), `audio_info` (audio track metadata), `video_id` (video identifier). |
| `video_preview_type` | string | null | Preview style hint when present. |
| `cover_image_index` | integer | Index of the cover within `images`. |
| `tag_info` | object | Note tag (`title`, `type`). |
| `note_attributes` | array | Platform attribute flags on the note. |
| `at_user_list` | array | Mentioned users, each `user_id`, `nickname`, `user_oid`. |
| `has_music` | boolean | Whether a music track is attached. |
| `geo_info` | object | Location metadata (e.g. `distance`). |
| `click_score` | number | Platform relevance score for the query. |
| `result_from` | string | Platform's result-source label. |
| `keyword` | string | Which input keyword surfaced this row. |
| `sortSource` | string | Which sort pass produced the row: `general`, `popularity_descending`, or `time_descending`. |

#### Example row

A video note (image / text notes have `video: null` and a multi-image `images` array). The `streams` array is truncated below: a real video note returns all available quality and codec variants.

```json
{
  "id": "696cb5bd000000001a031e2d",
  "type": "video",
  "title": "一个人的户外，安静孤独又自由..",
  "desc": "#我用镜头看世界  #旅游万粉扶持计划  #把户外拍成电影  #用光影捕捉户外  #用电影构图打开户外  #chinat",
  "url": "https://www.xiaohongshu.com/discovery/item/696cb5bd000000001a031e2d?xsec_token=YBFt5PgsshYGkP1oonnDk9nfC2RE58vP056mjwEvZZvH4%3D&xsec_source=app_share",
  "xsec_token": "YBFt5PgsshYGkP1oonnDk9nfC2RE58vP056mjwEvZZvH4=",
  "timestamp": 1768732093,
  "update_time": 1777446246000,
  "last_update_time": 1777446204,
  "engagement": {
    "liked_count": 53458,
    "comments_count": 748,
    "collected_count": 11853,
    "shared_count": 1905,
    "nice_count": 0
  },
  "author": {
    "userid": "6217b58d0000000010007259",
    "red_id": "1363108667",
    "nickname": "南鴛",
    "avatar": "https://sns-avatar-qc.xhscdn.com/avatar/63a6dbda37821b8769f0cfa8.jpg?imageView2/2/w/80/format/jpg",
    "verified": false,
    "verify_type": 0,
    "show_verify_icon": false,
    "followed": false,
    "track_duration": 0
  },
  "images": [
    {
      "url": "https://sns-na-i11.xhscdn.com/1040g2sg31rfrapl10ae05ognmm6k0sipgif2t28?imageView2/2/w/576/format/webp/q/87...",
      "url_large": "https://sns-na-i11.xhscdn.com/1040g2sg31rfrapl10ae05ognmm6k0sipgif2t28?imageView2/2/w/1440/format/webp...",
      "width": 1440,
      "height": 1920
    }
  ],
  "video": {
    "duration_seconds": 25,
    "thumbnail": "https://sns-na-i11.xhscdn.com/frame/110/0/01e96cb51f9d75070010000000019bd0a61f32_0.webp?imageView2/2/w/5000/h/5000/format/webp/q/90...",
    "thumbnail_dim": "https://sns-na-i11.xhscdn.com/frame/110/0/01e96cb51f9d75070010000000019bd0a61f32_0.webp?imageView2/2/w/720/h/720/format/webp...",
    "streams": [
      {
        "stream_type": 3032,
        "master_url": "http://sns-video-v28.xhscdn.com/stream/1/110/3032/01e96cb51f9d7507010370019daef59c3f_3032.m4s?sign=9c8963d678d625f47dac73688c0e4a37&t=6a238c42",
        "backup_urls": [
          "http://sns-bak-v8.xhscdn.com/stream/1/110/3032/01e96cb51f9d7507010370019daef59c3f_3032.m4s",
          "http://sns-bak-v10.xhscdn.com/stream/1/110/3032/01e96cb51f9d7507010370019daef59c3f_3032.m4s"
        ],
        "video_codec": "hevc",
        "quality_type": "HD",
        "stream_desc": "R265_FMP4_720P_3032_IOS",
        "format": "fmp4",
        "width": 960,
        "height": 720,
        "fps": 60,
        "duration": 25266,
        "video_duration": 25266,
        "audio_duration": 0,
        "size": 3251557,
        "video_bitrate": 1029516,
        "avg_bitrate": 1029516,
        "audio_bitrate": 0,
        "audio_channels": 0,
        "volume": 0,
        "weight": 46,
        "default_stream": 1,
        "rotate": 0,
        "sr": 0,
        "hdr_type": 0,
        "vmaf": -1,
        "psnr": 37.73400115966797,
        "ssim": 0,
        "opaque1": {
          "quality_grade_name": "720p HD",
          "quality_grade": "HD_720P",
          "quality_index": "130",
          "stream_index": "9999",
          "use_pcdn": "1",
          "pcdn_302_flag": "false",
          "pcdn_supplier": "",
          "didLoudnorm": "false",
          "prefer_audio": "101",
          "roiWeight": "76.32484000000001",
          "roi_info": "{\"alpha\":\"1.0\",\"gamma\":\"0.0\",\"lambda\":\"1.0E-5\",\"mvmaf\":\"86.62\"}"
        }
      },
      // … 4 more HEVC variants (1080p, 1080p, 2K, 4K) with the same field shape …
      {
        "stream_type": 258,
        "master_url": "http://sns-video-v28.xhscdn.com/stream/79/110/258/01e96cb51f9d75074f0370019bd0a6221b_258.mp4?sign=10653629323e36b1aebb38469fcd2e0a&t=6a238c42",
        "backup_urls": [
          "http://sns-bak-v8.xhscdn.com/stream/79/110/258/01e96cb51f9d75074f0370019bd0a6221b_258.mp4",
          "http://sns-bak-v10.xhscdn.com/stream/79/110/258/01e96cb51f9d75074f0370019bd0a6221b_258.mp4"
        ],
        "video_codec": "h264",
        "audio_codec": "aac",
        "quality_type": "HD",
        "stream_desc": "X264_MP4",
        "format": "mp4",
        "width": 960,
        "height": 720,
        "fps": 30,
        "duration": 25300,
        "video_duration": 25300,
        "audio_duration": 25285,
        "size": 8186790,
        "video_bitrate": 2525355,
        "avg_bitrate": 2588708,
        "audio_bitrate": 56322,
        "audio_channels": 2,
        "volume": 0,
        "weight": 45,
        "default_stream": 0,
        "rotate": 0,
        "sr": 0,
        "hdr_type": 0,
        "vmaf": -1,
        "psnr": 0,
        "ssim": 0,
        "opaque1": {
          "stream_index": "10000",
          "use_pcdn": "0",
          "pcdn_302_flag": "false",
          "pcdn_supplier": "",
          "didLoudnorm": "false"
        }
      }
    ],
    "url_720p": "http://sns-video-v28.xhscdn.com/stream/1/110/3032/01e96cb51f9d7507010370019daef59c3f_3032.m4s?sign=9c8963d678d625f47dac73688c0e4a37&t=6a238c42"
  },
  "video_preview_type": null,
  "cover_image_index": 0,
  "tag_info": { "title": "", "type": "" },
  "note_attributes": [],
  "at_user_list": [
    { "user_id": "6357c096000000001802aa80", "nickname": "视频薯", "user_oid": "6357c096000000001802aa80" },
    { "user_id": "52d8c541b4c4d60e6c867480", "nickname": "薯队长", "user_oid": "52d8c541b4c4d60e6c867480" },
    { "user_id": "62b2c862000000001501cbb5", "nickname": "户外薯", "user_oid": "62b2c862000000001501cbb5" }
  ],
  "has_music": false,
  "geo_info": { "distance": "" },
  "click_score": 0.0579536892,
  "result_from": "",
  "keyword": "旅行",
  "sortSource": "general"
}
```

### Pricing: Pay Per Event (PPE)

**$5.99 per 1,000 results.** Each note written to the dataset counts as one result. No charge for empty keywords, retries, or pagination overhead.

| Event | Per note | Per 1,000 |
|-------|----------|-----------|
| `search-result` (one dataset row) | $0.00599 | $5.99 |

#### Free tier

**3 lifetime runs**, each capped at approximately 20 results from the first keyword. No credit card required. Sufficient for evaluating the output shape and content quality before purchasing.

### Advanced Usage

Ready-made configurations for content discovery, trend monitoring, brand and competitor monitoring, influencer research, market research, and complete-coverage datasets.

#### Trend monitoring: newest notes on a rising topic

```json
{
  "keywords": ["防晒霜推荐 2026", "防晒测评"],
  "maxResults": 200,
  "sortType": "time_descending",
  "timeFilter": "1d"
}
```

Schedule this daily to track how quickly a topic gains traction. The `timestamp` field gives exact publish time; `engagement.liked_count` and `engagement.collected_count` reflect current totals.

#### Brand or competitor monitoring

```json
{
  "keywords": ["lululemon", "始祖鸟", "北面"],
  "maxResults": 100,
  "sortType": "popularity_descending",
  "timeFilter": "1w"
}
```

The `keyword` field on each row identifies which brand surfaced the note. Cross-keyword deduplication is automatic.

#### Influencer discovery by niche

```json
{
  "keywords": ["极简护肤", "敏感肌护肤"],
  "maxResults": 500,
  "sortType": "popularity_descending",
  "noteType": "video"
}
```

Sort by `engagement.liked_count` or `engagement.collected_count` after the run to surface the most influential creators for your niche.

#### Maximizing yield: collect everything available

```json
{
  "keywords": ["手作皮具教程"],
  "maxResults": 0,
  "topUpFromOtherSorts": true
}
```

`maxResults: 0` collects every available note for the keyword. With "Maximize results" on (the default), broad keywords can reach several thousand unique notes (up to ~7,000) by gathering across all sort orders and time ranges; niche topics like this one yield whatever the platform's catalogue holds. You pay only for unique notes actually collected.

#### Local discovery: products and places by city

```json
{
  "keywords": ["matcha toronto", "抹茶 温哥华", "韩国便利店"],
  "maxResults": 200,
  "sortType": "popularity_descending"
}
```

Combine a product or category with a city or country to surface location-tagged notes; works for cafés, restaurants, shops, neighbourhoods, duty-free, travel itineraries, regional product comparisons. English and Chinese keywords can be mixed in the same run.

#### Home and lifestyle inspiration

```json
{
  "keywords": ["室内设计", "小户型装修", "客厅设计"],
  "maxResults": 300,
  "noteType": "image",
  "sortType": "popularity_descending"
}
```

`noteType: "image"` filters to image-heavy notes; useful when the inspiration value is visual: interior design, fashion outfits, hair styling, beauty looks, food plating.

### FAQ

**What is RedNote (Xiaohongshu / Little Red Book)?**
RedNote is the international name of Xiaohongshu (小红书, literally "Little Red Book", often abbreviated XHS), China's leading lifestyle and social-commerce platform with 300+ million monthly users. Notes mix photos, video, and review-style text across beauty, fashion, food, travel, fitness, and shopping.

**How many results can I expect per keyword?**
With "Maximize results" on (the default), broad keywords can reach several thousand unique notes (up to ~7,000 for the broadest terms); mid and niche keywords saturate lower (often a few hundred to a couple thousand) once the platform's index for that query is exhausted. Set `maxResults` to `0` to collect everything available. For even broader coverage, add multiple related keywords; cross-keyword deduplication is automatic.

**What does `topUpFromOtherSorts` do exactly?**
It's the "Maximize results" toggle. The actor gathers across all three sort orders and merges the results, deduplicated by note ID, so you get the most unique notes per keyword at no extra per-result cost. When you raise `maxResults` above 1,000, it additionally gathers across the time ranges to surface more fresh and niche notes; at or below 1,000 it stays on the sort-only behaviour. Recommended on.

**Do the filters combine?**
Yes. `sortType`, `noteType`, and `timeFilter` all apply together. For example, `sortType=popularity_descending` + `noteType=video` + `timeFilter=1w` returns the most-liked video notes from the past 7 days. Narrow combinations may reduce the result count.

**How fresh is the data?**
Live: fetched on demand at run time. No cached or stale records.

**Do I need a Xiaohongshu account or cookies?**
No. The actor needs no Xiaohongshu account, cookie export, or QR login. Provide keywords and run.

**Are the media URLs permanent?**
The note `url` (e.g., `https://www.xiaohongshu.com/discovery/item/<id>?xsec_token=…`) is the stable reference. Image and video CDN URLs (`images[].url`, `video.url_720p`, etc.) are time-limited and typically expire within hours to a few days. Download media immediately after a run if you need to store it long-term.

**What note types does this cover?**
All three types the Xiaohongshu search surface returns: video notes, image/text notes (called "normal"), and live notes. Filter with the `noteType` input to restrict to one type. The `type` field on each output row tells you which category a note belongs to.

**Can I search by hashtag specifically?**
Yes: pass `"#美食"` as a keyword. The search behaviour and row shape are identical to free-text search.

**Can I scrape a creator's profile, their follower list, or individual note comments?**
Not in this actor; it covers keyword search results only. For those, use [RedNote User Profile Scraper](https://apify.com/zen-studio/rednote-user-profile-scraper) (profile plus every post), [RedNote Comments Scraper](https://apify.com/zen-studio/rednote-comments-scraper) (nested comment threads), or [RedNote Note Detail Scraper](https://apify.com/zen-studio/rednote-note-detail-scraper) (full detail for a single note).

**What is the `sortSource` field?**
It records which sort pass produced the row: `general` (Most relevant), `popularity_descending` (Most popular), or `time_descending` (Newest first). Useful when `topUpFromOtherSorts` is on and you want to know how each note was surfaced.

**What's the maximum `maxResults` per keyword?**
10,000, or `0` for all available. Broad keywords top out around ~7,000 unique notes; the platform's index for a given query saturates before the ceiling. Keep "Maximize results" on to get the most per keyword.

**How do I export the data?**
Every run writes to an Apify dataset you can download as JSON, CSV, Excel, XML, or HTML from the run's Storage tab, or fetch programmatically via the Apify API.

**Is it legal to scrape Xiaohongshu (RedNote)?**
The actor collects publicly available search results only, nothing behind a login. You are responsible for complying with Xiaohongshu's terms of service and applicable data protection law (GDPR, CCPA, PIPL) in how you use the data, particularly personal data such as author profiles.

**How do I get more than 1,000 results per keyword?**
Set **Max results per keyword** to `0` (all available) or any number above 1,000, and keep **Maximize results** on (the default). At or below 1,000 the actor runs the standard pass; above it, it sweeps all sort orders and time ranges for up to ~7,000 unique notes per broad keyword.

### More Zen Studio scrapers for Chinese platforms

**🎬 Short-video & social**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-wsZZkHvCzyyfZQdaJ-1H1H3xrBpO-weibo-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Weibo 微博**
  - [Weibo Search Scraper](https://apify.com/zen-studio/weibo-search-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-euYaQMbH2g53W4ds2-Woud1TIQ7x-kwai-scraper-logo.jpg" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Kwai (Brazil)**
  - [Kwai Search Scraper](https://apify.com/zen-studio/kwai-search-scraper)
  - [Kwai Comments Scraper](https://apify.com/zen-studio/kwai-comments-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-mHKEEgoDqr6btQQer-fUs5ZquIeN-xiaohongshu-search-scraper-logo-square.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **RedNote 小红书**
  - [RedNote User Profile Scraper](https://apify.com/zen-studio/rednote-user-profile-scraper)
  - [RedNote Comments Scraper](https://apify.com/zen-studio/rednote-comments-scraper)
  - [RedNote Product Search Scraper](https://apify.com/zen-studio/rednote-product-search-scraper)
  - [RedNote Note Detail Scraper](https://apify.com/zen-studio/rednote-note-detail-scraper)
  - [RedNote Product Reviews Scraper](https://apify.com/zen-studio/rednote-product-reviews-scraper)
  - [RedNote Live Recorder](https://apify.com/zen-studio/rednote-live-recorder)
  - [RedNote Product Detail Scraper](https://apify.com/zen-studio/rednote-product-detail-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-3TJaaOJDU1AMiOoJM-Vu2eVr0P6N-douyin-profile-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Douyin 抖音**
  - [Douyin Search Scraper](https://apify.com/zen-studio/douyin-search-scraper)
  - [Douyin Profile Scraper](https://apify.com/zen-studio/douyin-profile-scraper)
  - [Douyin Video Scraper](https://apify.com/zen-studio/douyin-video-scraper)
  - [Douyin Comments Scraper](https://apify.com/zen-studio/douyin-comments-scraper)
  - [Douyin Transcripts Scraper](https://apify.com/zen-studio/douyin-transcripts-scraper)
  - [Douyin Creator Rankings Scraper](https://apify.com/zen-studio/douyin-xingtu-rankings-scraper)
  - [Douyin Live Recorder](https://apify.com/zen-studio/douyin-live-recorder)
  - [Douyin Hot Search Scraper](https://apify.com/zen-studio/douyin-hot-search-scraper)
  - [Douyin Product Search Scraper](https://apify.com/zen-studio/douyin-product-search-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-dexCSKEZtKS8hg4fT-lD4weyiYga-shigua-____-scraper-logo.jpg" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Xigua 西瓜视频**
  - [Xigua Video Search Scraper](https://apify.com/zen-studio/xigua-video-search-scraper)
  - [Xigua Video Detail Scraper](https://apify.com/zen-studio/xigua-video-detail-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-oSxuPDE1h3HAsHZSu-x3uV98mgTe-bilibili-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Bilibili 哔哩哔哩**
  - [Bilibili Video Scraper](https://apify.com/zen-studio/bilibili-video-scraper)
  - [Bilibili Danmaku Scraper](https://apify.com/zen-studio/bilibili-danmaku-scraper)

**🛒 E-commerce**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-yK9Fwkji44bQkuS7P-f1uyK15FaQ-naver-shopping-scraper.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Naver Search 네이버 검색**
  - [Naver Search Scraper](https://apify.com/zen-studio/naver-search-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-LwARSYSMWLBZfXfdr-FrDaNbQarB-shopee-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Shopee**
  - [Shopee Product Detail Scraper](https://apify.com/zen-studio/shopee-product-detail-scraper)
  - [Shopee Product Reviews Scraper](https://apify.com/zen-studio/shopee-product-reviews-scraper)
  - [Shopee Product Scraper](https://apify.com/zen-studio/shopee-product-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-PsAKYWM55HG4AHXjK-ItywU7Bp0s-taobao-search-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Taobao 淘宝**
  - [Taobao Search Scraper](https://apify.com/zen-studio/taobao-search-scraper)
  - [Taobao Product Detail Scraper](https://apify.com/zen-studio/taobao-detail-scraper)
  - [Taobao Seller Products Scraper](https://apify.com/zen-studio/taobao-seller-products-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-uZy6tbKLKnSVtT4BN-emXnT123uR-jd-com-scraper-logo-square.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **JD.com 京东**
  - [JD.com Search Scraper](https://apify.com/zen-studio/jd-com-search-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-ghXSMZcW3GxsCrkiR-5hnvsKv4Yt-1688-wholesale-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **1688 阿里巴巴**
  - [1688 Wholesale Scraper](https://apify.com/zen-studio/1688-wholesale-scraper)
  - [Alibaba Scraper](https://apify.com/zen-studio/alibaba-scraper)
  - [1688 Reviews Scraper](https://apify.com/zen-studio/1688-reviews-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-5QcLc4BHaLMBUKYs3-f3CWQ60Row-goofish-search-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Goofish 闲鱼**
  - [Goofish (Xianyu) Search Scraper](https://apify.com/zen-studio/goofish-xianyu-search-scraper)
  - [Goofish (Xianyu) Seller Scraper](https://apify.com/zen-studio/goofish-xianyu-seller-scraper)
  - [Goofish (Xianyu) Item Detail Scraper](https://apify.com/zen-studio/goofish-xianyu-item-detail-scraper)
  - [Goofish (Xianyu) Item Comments & Q\&A Scraper](https://apify.com/zen-studio/goofish-xianyu-item-comments-scraper)
  - [Goofish (Xianyu) Reverse Image Search Scraper](https://apify.com/zen-studio/goofish-xianyu-visual-search-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-0hS9yNh3RU8DC6puG-LozxRJkdHN-coupang-review-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Coupang 쿠팡**
  - [Coupang Review Scraper](https://apify.com/zen-studio/coupang-review-scraper)
  - [Coupang Search Scraper](https://apify.com/zen-studio/coupang-search-scraper)
  - [Coupang Product Detail Scraper](https://apify.com/zen-studio/coupang-detail-scraper)

**🏠 Real estate & autos**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-1tAzNSf8Kz0v7Q2Lr-AINJ7FsZVU-anjuke-scraper-logo.jpg" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Anjuke 安居客**
  - [Anjuke For-Sale Listings Scraper](https://apify.com/zen-studio/anjuke-real-estate-scraper)
  - [Anjuke New-Home Scraper](https://apify.com/zen-studio/anjuke-new-home-scraper)
  - [Anjuke Rental Listings Scraper](https://apify.com/zen-studio/anjuke-rent-scraper)
  - [Anjuke Listing Detail Scraper](https://apify.com/zen-studio/anjuke-sale-detail-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-32OkWqsiUywoq2ci3-7JhFlW1qg3-58__-real-estate-scraper-logo.jpg" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **58.com 58同城**
  - [58.com Real Estate Scraper](https://apify.com/zen-studio/58-real-estate-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-ytaE4YpSmjXDmibPv-L1UMPHa2bO-che168-autohome-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Autohome 汽车之家**
  - [Autohome (Che168) Used-Car Scraper](https://apify.com/zen-studio/che168-car-scraper)

### Support

- **Bugs**: Issues tab
- **Feature requests**: Issues tab

### Legal Compliance

Extracts publicly available search results from Xiaohongshu (RedNote / 小红书). Users must comply with Xiaohongshu's terms of service and applicable data protection regulations (GDPR, CCPA, PIPL).

***

*RedNote (小红书 / Xiaohongshu) search results: full note content, author profile, engagement counts, image gallery, and video stream URLs. One row per match, in clean JSON.*

# Actor input Schema

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

Add one or more search terms.<br><br>• Chinese works: <code>美食推荐</code>, <code>咖啡</code>, <code>穿搭</code><br>• English works too: <code>lululemon</code>, <code>iphone</code>, <code>tokyo</code><br><br>Each keyword runs independently with its own <b>Max results</b> budget.

## `maxResults` (type: `integer`):

How many unique notes to collect for <b>each keyword</b>. Set <code>0</code> for all available (up to ~7,000 per keyword for broad terms).<br><br>Narrow keywords may yield fewer than the cap because the source has a finite catalogue per query.

## `topUpFromOtherSorts` (type: `boolean`):

Gather across all sort modes <i>and</i> time ranges, merging and de-duplicating, to collect the most unique notes per keyword.<br><br><b>Recommended ON</b> (default). Engages the deeper time-range sweep only when you raise <b>Max results per keyword</b> above 1,000; at or below 1,000 it behaves exactly as before.<br><br>Turn OFF to restrict to your chosen sort order only.

## `sortType` (type: `string`):

How the source ranks results.<br><br>• <b>Most relevant</b> — curated relevance ranker (default; balanced for most queries)<br>• <b>Most popular</b> — by engagement (likes + comments); surfaces viral hits<br>• <b>Newest first</b> — by publish time; for trend monitoring

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

Restrict to a single note format.<br><br>• <b>All types</b> — image + video + live (default)<br>• <b>Video notes</b> — only entries with playable video<br>• <b>Image notes</b> — only photo galleries<br>• <b>Live notes</b> — only livestream replays (rare)

## `timeFilter` (type: `string`):

Restrict to notes published in a recent window. Use for trend monitoring or to avoid stale content.

## Actor input object example

```json
{
  "keywords": [
    "美食推荐"
  ],
  "maxResults": 100,
  "topUpFromOtherSorts": true,
  "sortType": "general",
  "noteType": "all",
  "timeFilter": "all"
}
```

# Actor output Schema

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

Dataset of notes — one row per Xiaohongshu search result.

# 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 = {
    "keywords": [
        "美食推荐"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zen-studio/rednote-search-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 = { "keywords": ["美食推荐"] }

# Run the Actor and wait for it to finish
run = client.actor("zen-studio/rednote-search-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 '{
  "keywords": [
    "美食推荐"
  ]
}' |
apify call zen-studio/rednote-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zen-studio/rednote-search-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/hO5NqsA6aC1bz3jra/builds/ob4NIGzas1yXnPkco/openapi.json
