RedNote API avatar

RedNote API

Under maintenance

Pricing

from $6.00 / 1,000 rednote posts

Go to Apify Store
RedNote API

RedNote API

Under maintenance

RedNote API scrapes Xiaohongshu / RedNote keyword search results and extracts posts, authors, engagement metrics, images, video URLs, and optional detail data with proxy, cookies, storage state, and dataset export support.

Pricing

from $6.00 / 1,000 rednote posts

Rating

0.0

(0)

Developer

Sovanza

Sovanza

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

4 days ago

Last modified

Share

RedNote API – Xiaohongshu Keyword Scraper & Data Extractor

Scrape Xiaohongshu (小红书) / RedNote keyword search results and extract structured post data, author details, engagement metrics, and media URLs. Built with Playwright for dynamic pages, with proxy and session support for reliable runs on Apify.

What is RedNote API and How Does It Work?

RedNote API is an Apify Actor that automates Xiaohongshu search in a headless browser, scrolls result feeds, and extracts post cards per keyword. Optionally it opens each detail page for richer fields (title, description, full media).

It is designed for:

  • Social media researchers and analysts
  • Brand and product mention monitoring
  • Trend and keyword tracking teams
  • Data engineers feeding analytics pipelines

How it works:

  1. Keyword search — navigates to search results for each keyword and scrolls to collect post cards
  2. Optional detail enrichment — opens each note page when includeDetails is enabled (slower, more complete)
  3. Structured output — one dataset row per post (or per keyword error), with flattened fields plus nested item object
  4. Resilience — per-keyword retries, timeouts, and error rows that do not stop other keywords

Xiaohongshu does not offer a simple public API for this use case; this Actor uses browser automation to match what users see on the web.

Why Use This Scraper?

ChallengeHow this Actor helps
Dynamic JavaScript contentPlaywright renders real pages
Anti-bot / login wallsApify Proxy, cookies, Playwright storageState
Inconsistent HTMLTwo-stage extraction (search cards + optional detail)
Bulk keyword runsMultiple keywords with configurable concurrency
Clean exportsFlattened columns + nested item for advanced use

➡️ Output is exportable as JSON, CSV, or Excel from the Apify dataset, or via the Apify API.

What Data Can You Extract?

Each successful post may include:

Flattened fields (table-friendly)

  • keyword, search_url, scraped_at, source
  • post_id, post_url, post_type
  • title, description
  • author_name, author_id, author_avatar
  • liked_count, comment_count, share_count, collected_count
  • images, image_count, video_url, cover_image

Structured nested object

  • itemnote_card, interact_info, media, tags, timestamps when available

Empty fields are omitted from output (_omit_empty) so the dataset table stays clean.

Features

  • Keyword search scraping — one or many keywords per run
  • Configurable limitmaxItems per keyword (1–200)
  • Detail enrichment — optional per-post page visits
  • Author & media togglesincludeAuthor, includeMedia
  • Dual domainswww.xiaohongshu.com or www.rednote.com
  • Proxy support — Apify Proxy with country selection
  • Session reusestorageState (recommended) or cookies array
  • Concurrency controlmaxConcurrency 1–5 (higher = more blocking risk)
  • Error-safe — failed keywords produce error rows; other keywords continue

How to Use RedNote API on Apify

Using the Actor

  1. Go to RedNote API on the Apify platform.
  2. Add one or more keywords in the input.
  3. Set maxItems per keyword (default 20).
  4. Recommended: enable Apify Proxy via proxyCountry (residential helps with blocking).
  5. If blocked: provide storageState or cookies from a logged-in session.
  6. Choose includeDetails for richer data (slower).
  7. Run and export from the Dataset tab or use Output schema links.

Input Configuration

{
"keywords": ["skincare", "travel outfit"],
"maxItems": 20,
"baseDomain": "www.xiaohongshu.com",
"proxyCountry": "AUTO_SELECT_PROXY_COUNTRY",
"includeDetails": false,
"includeAuthor": true,
"includeMedia": true,
"sortBy": "general",
"headless": true,
"maxConcurrency": 1
}
FieldDescription
keywordsRequired. One or more search keywords (string list).
maxItemsMax posts per keyword (default 20, max 200).
proxyCountryAUTO_SELECT_PROXY_COUNTRY, country code, or DISABLED.
baseDomainwww.xiaohongshu.com or www.rednote.com if one domain is blocked.
storageStatePlaywright storage state JSON (cookies + localStorage) — most reliable for logged-in sessions.
storageStatePathLocal path to storage state file (debugging).
cookiesCookie array for authenticated scraping.
includeDetailsOpen each post detail page for richer fields (slower).
includeAuthorExtract author nickname, id, avatar (default true).
includeMediaExtract images and video URLs (default true).
sortBygeneral or latest (ignored safely if UI does not support).
headlessRun browser headless (default true; use false when debugging locally).
maxConcurrencyKeywords processed in parallel (default 1, max 5).
exportStorageStateLocal only: headed browser to save storage_state.json after manual login.

Output

Results are stored in the default dataset. Use the Output schema in Console for the dataset API link (?view=overview).

Success row (illustrative)

{
"keyword": "skincare",
"search_url": "https://www.xiaohongshu.com/search_result?keyword=skincare&source=web_search_result_notes&type=51",
"post_id": "64f1a2b3c4d5e6f7890",
"post_url": "https://www.xiaohongshu.com/explore/64f1a2b3c4d5e6f7890",
"title": "My daily skincare routine",
"author_name": "Alice",
"liked_count": 1234,
"images": ["https://example.com/image1.jpg"],
"image_count": 1,
"scraped_at": "2026-05-21T12:00:00.000Z",
"source": "xiaohongshu",
"item": {
"id": "64f1a2b3c4d5e6f7890",
"note_card": { "display_title": "My daily skincare routine" }
}
}

Error row (keyword-level)

{
"keyword": "skincare",
"url": "https://www.xiaohongshu.com/search_result?keyword=skincare",
"error": "Blocked or empty search DOM detected"
}

Anti-Blocking & Reliability

Xiaohongshu aggressively limits automation. For better success:

  • Use residential proxy (proxyCountry not DISABLED)
  • Keep maxConcurrency low (default 1)
  • Provide storageState or cookies when you see login or verification walls
  • Try www.rednote.com if xiaohongshu.com is blocked in your region
  • Use headless: false locally when debugging session export

The Actor retries failed keywords up to MAX_RETRIES and applies per-keyword timeouts.

Performance

  • Fast mode: includeDetails: false — search card data only
  • Rich mode: includeDetails: true — opens each post (significantly slower)
  • Higher maxConcurrency speeds multi-keyword runs but increases block risk
  • maxItems caps volume per keyword for cost control

Use Cases

  • Social media research and content analysis
  • Keyword and trend monitoring
  • Product mention and review tracking
  • Influencer and engagement benchmarking
  • Data pipelines (warehouse, BI, ML feature stores) via Apify API

Integrations & API

  • Apify dataset export: JSON, CSV, Excel
  • apify-client (Python / Node.js) for scheduled runs
  • Zapier, Make, Google Sheets via dataset export
  • Webhooks and schedules on Apify

FAQ

What is RedNote API used for?

A Xiaohongshu keyword scraper that extracts search results, posts, authors, and engagement metrics for research and analytics.

Can I scrape without an official API?

Yes. The Actor uses Playwright browser automation against the public web interface.

Why am I getting empty results or errors?

Login walls, CAPTCHA, or blocking are common. Use proxy, storageState, or cookies, and lower concurrency.

Can I scrape multiple keywords in one run?

Yes. Each keyword runs independently; failures on one keyword do not stop others.

What is detail enrichment?

When includeDetails is true, the Actor visits each post URL for fuller title, description, and media fields.

Can I use this as a data API?

Yes. Integrate via the Apify platform API and consume dataset items programmatically.

How do I save a logged-in session locally?

Set exportStorageState: true, log in when the browser opens, then use the saved storage_state.json with storageStatePath or paste into storageState.

Does output include null columns?

No. The Actor omits empty/null fields from each row for cleaner tables.

SEO Keywords (high-intent)

xiaohongshu scraper
rednote api apify
xiaohongshu keyword scraper
rednote data extractor
xiaohongshu search results scraper
social media scraper china
xiaohongshu post scraper
rednote automation

Why Choose This Actor?

  • Built for Xiaohongshu / RedNote search specifically
  • Flattened + nested output for spreadsheets and code
  • Proxy, cookies, and storage state support
  • Per-keyword error isolation
  • Optional detail enrichment for depth vs speed

Limitations

ItemDetail
Platform rulesYou must comply with Xiaohongshu terms and applicable laws
BlockingSuccess depends on proxy, session, and site changes
No official APIDOM changes may require Actor updates
Rate / volumeKeep concurrency and maxItems reasonable per account safety
Detail mode costincludeDetails multiplies page loads per post

Running Locally

cd rednote-api
pip install -r requirements.txt
playwright install chromium
apify run

Or set INPUT.json / Apify CLI local storage. Use exportStorageState to capture login state for repeat runs.

Deploy to Apify

  1. Push from rednote-api/ (apify push or Git integration).
  2. Enable Proxy on runs when using proxyCountry.
  3. Build and run with your keywords.
  4. Use Output tab links for dataset export after completion.

Get Started

Enter your keywords, enable proxy if needed, run once in fast mode, then enable includeDetails when you need richer post-level fields.