# RedNote Xiaohongshu Search Scraper (`khadinakbar/xiaohongshu-search-scraper`) Actor

Search RedNote (Xiaohongshu) notes by keyword with an authorized session and return structured note cards with titles, creators, images, likes, URLs, and scrape time.

- **URL**: https://apify.com/khadinakbar/xiaohongshu-search-scraper.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** Social media, Automation, Marketing
- **Stats:** 1 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.00 / 1,000 xiaohongshu search results

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 Search Scraper

Search RedNote (Xiaohongshu / 小红书) notes by one keyword through an authorized logged-in browser session. The actor returns a clean, one-row-per-note dataset with the note URL, title, creator, displayed and normalized likes, cover image, search keyword, result position, and collection time.

Use it for China-market research, trend discovery, brand monitoring, and gathering public content examples. Do not use it for full note-detail extraction, profile cataloguing, comments, private content, or account automation.

### Output

| Field                       | Meaning                                                              |
| --------------------------- | -------------------------------------------------------------------- |
| `id`                        | Public note identifier from the rendered URL                         |
| `sourceUrl`                 | Canonical public Xiaohongshu note URL                                |
| `resultPosition`            | One-based position in the rendered search result cards               |
| `title`                     | Title text when rendered                                             |
| `authorName` / `authorUrl`  | Public creator identity when rendered                                |
| `likesText` / `likesCount`  | Engagement text as displayed plus a normalized number when parseable |
| `coverImageUrl`             | Public cover image URL when present                                  |
| `searchQuery` / `scrapedAt` | Query provenance and ISO collection time                             |

### Price

- Actor start: $0.00005 per run
- Search result: $0.006 per validated note card saved
- Platform usage: charged separately under Pay per event + usage

The actor never charges for an invalid, duplicate, or unsaved card. A typical 20-result run has up to $0.12 in event charges plus platform usage.

### Input

```json
{
    "searchQuery": "护肤",
    "maxResults": 20,
    "sessionCookie": "web_session=..."
}
```

`sessionCookie` is required because Xiaohongshu currently shows "log in to view search results" to anonymous browser sessions. Pass a current cookie header from an account you are authorized to use. It is treated as a secret and is never written to results or summaries.

### Run outcomes

Every run writes both `OUTPUT` and `RUN_SUMMARY` in the default key-value store.

- `COMPLETE`: validated search cards were returned.
- `PARTIAL`: useful cards were saved, but an explicit cap or card-parse issue occurred.
- `INVALID_INPUT`: change the query or result cap and retry.
- `UPSTREAM_FAILED`: Xiaohongshu did not render extractable public cards after browser retries; retry later or use an authorized session cookie.

### API and agent use

The actor is a regular Apify Actor, so it is available through the Apify API and Apify MCP after deployment. It accepts a single query and returns a flat, concise dataset designed for agent consumption.

### Limitations

Xiaohongshu can change its browser rendering, rate limits, login rules, and access controls without notice. Results reflect only note cards your authorized session is able to render. Engagement text is preserved as displayed, and `likesCount` is present only when the rendered text can be parsed.

TikHub currently documents a Xiaohongshu App V2 search-notes API, but the configured local `TIKHUB_API_KEY` is a placeholder, so this actor does not advertise no-cookie provider mode yet.

### Legal notice

Use this actor only for lawful collection and analysis of public data, in compliance with applicable law and the rights and platform rules relevant to your use case. Do not use it to access private data or bypass access controls.

# Actor input Schema

## `searchQuery` (type: `string`):

Keyword submitted to RedNote/Xiaohongshu note search, such as '护肤' or 'skincare tips'. Chinese, English, and mixed-language searches are accepted. It is limited to 100 characters and defaults to the example only in the Console prefill. This is not a note URL, user profile URL, hashtag, or comment query.

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

Maximum number of unique public note cards to save from this keyword search. Enter an integer from 1 through 100; the default is 20. Larger limits may require the browser to load more cards and increase runtime and per-result charges. This is a record cap, not a page count or a guarantee that the query has that many results.

## `sessionCookie` (type: `string`):

Cookie header from your own logged-in RedNote/Xiaohongshu browser session, in the form 'name=value; other=value'. Xiaohongshu currently gates web keyword search behind login, so this field is required. Supply it only if you are authorized to use that account; it is treated as a secret and never written to results or summaries. This is not an Apify API token, proxy password, or an input for scraping private content.

## Actor input object example

```json
{
  "searchQuery": "护肤",
  "maxResults": 20,
  "sessionCookie": "web_session=example"
}
```

# Actor output Schema

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

No description

## `output` (type: `string`):

No description

## `runSummary` (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 = {
    "searchQuery": "护肤",
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/xiaohongshu-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 = {
    "searchQuery": "护肤",
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/xiaohongshu-search-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 '{
  "searchQuery": "护肤",
  "maxResults": 10
}' |
apify call khadinakbar/xiaohongshu-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/q0kikgcxk71VPIiHI/builds/FmQS00dbqDONgqlDP/openapi.json
