# Xiaohongshu (RedNote) Video Transcript Scraper (`piotrv1001/xiaohongshu-rednote-video-transcript-scraper`) Actor

Turn trending Xiaohongshu (RedNote) videos into searchable text. Pick a category and get AI transcripts with timestamps, plus title, post text, hashtags, author, publish date, likes, saves, comments, shares and video details — China market research ina language you read.

- **URL**: https://apify.com/piotrv1001/xiaohongshu-rednote-video-transcript-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** AI, Social media, Automation
- **Stats:** 2 total users, 2 monthly users, 71.4% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.00 / 1,000 posts

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 (RedNote) Video Transcript Scraper

Turn **[Xiaohongshu](https://www.xiaohongshu.com) (RedNote) videos into searchable text**. Pick a category, and the **Xiaohongshu Video Transcript Scraper** returns the platform's trending video posts with an **AI transcript of every one** alongside the full post data — title, caption, hashtags, author, likes, saves, comments and shares.

RedNote is where Chinese consumers actually discuss products, and roughly **half of what the platform surfaces is video**. None of it carries captions, and none of it is indexed in a form you can read, search, or feed to a model. This Actor fixes that — it makes China's most commercially interesting social platform legible to someone who doesn't read Chinese.

Run it on the [Apify platform](https://apify.com) to get **API access, scheduling, integrations (Google Sheets, Make, Zapier, and more), automatic retries, proxy rotation, and monitoring** out of the box — no code required.

### ✨ Features

- 🎙️ **AI Transcription**: Every video turned into clean text, tuned for Mandarin and accurate on technical and product vocabulary.
- ⏱️ **Timestamped Segments**: Transcripts come split into properly bounded segments with start and end times — ready for clipping, subtitling, or jumping to a quote.
- 🗂️ **12 Topical Categories**: Sample trending video from Fashion, Food, Beauty, Travel, Fitness, Gaming, Movies & TV, Career and more.
- ♻️ **Fresh Results Every Run**: Each run pulls a new slice of the feed, so a daily schedule keeps building your archive instead of repeating itself.
- 🔇 **No Empty Transcripts**: About half of RedNote's videos are music over footage with nobody talking. Those are detected and filtered out up front, so your results are videos that actually have something to say.
- 📈 **Richer Engagement Than Western Platforms**: Likes, **saves**, comments and shares on every record — saves being the metric that actually signals purchase intent on RedNote.
- 🏷️ **Hashtags and Location**: The post's full topic list and, where the author exposes it, the region they posted from.
- 🎬 **Direct Media Links**: The signed video URL plus its unsigned mirrors, so a link that expires is still recoverable.
- ⏳ **Length Guard**: A maximum video length, so one hours-long livestream replay can't blow up a run's cost.
- 💸 **Never Billed Twice**: The same video appearing under several posts is transcribed once and charged once.

### 🛠️ How to Use the Xiaohongshu (RedNote) Video Transcript Scraper

1. **Pick your categories** – Choose one or more, such as **Beauty & cosmetics** or **Food**. Leave it on **Video** for the platform's general video feed.
2. **Set your options** – Choose how many posts to return, a maximum video length, and the spoken language (Mandarin by default).
3. **Run the scraper** – Click **Start**. Image-only posts and silent videos are filtered out before they cost you anything.
4. **Export your data** – Download the dataset as JSON, CSV, Excel, or HTML, or pull it via the Apify API.

Already know which posts you want? Paste their URLs into **Post URLs** instead — copy them from the site with the **full query string** intact.

### 🔧 Input

| Field                | Type    | Description                                                                                  |
| -------------------- | ------- | -------------------------------------------------------------------------------------------- |
| `categories`            | Array   | Categories to sample trending video from. 12 available, from Fashion to Career.            |
| `postUrls`              | Array   | Specific post URLs, copied from the site with their complete query string.                 |
| `onlyVideosWithSpeech`  | Boolean | Return only videos that actually contain speech. On by default.                            |
| `maxResults`            | Integer | Maximum number of video posts to return (default 20).                                      |
| `maxVideoMinutes`    | Integer | Videos longer than this are returned without a transcript, and not charged for (default 20).  |
| `language`           | Select  | Spoken language of the audio. Defaults to Chinese; `auto` detects it instead.                 |
| `proxyConfiguration` | Object  | Proxy settings. Keep this enabled — the source limits how much a single address may request.  |

### 📊 Sample Output Data

```json
[
    {
        "noteId": "6a55886f00000000150241a2",
        "postUrl": "https://www.xiaohongshu.com/explore/6a55886f00000000150241a2?xsec_token=AB4G...",
        "postedAt": "2026-07-12T09:33:04.000Z",
        "discoveredVia": "homefeed.food_v",
        "title": "辛拉面到底怎么煮才好吃",
        "description": "#峰哥[话题]# #辛拉面[话题]# #方便面[话题]# 今天来试试这个做法…",
        "tags": ["峰哥", "辛拉面", "方便面"],
        "authorName": "峰哥正能量",
        "authorId": "650b894e00000000120070c9",
        "authorUrl": "https://www.xiaohongshu.com/user/profile/650b894e00000000120070c9",
        "ipLocation": "上海",
        "likeCount": 2084,
        "collectedCount": 378,
        "commentCount": 1281,
        "shareCount": 597,
        "durationSeconds": 144,
        "videoUrl": "https://sns-video-v28.xhscdn.com/stream/1/110/258/....mp4?sign=...&t=...",
        "videoBackupUrls": ["http://sns-bak-v8.xhscdn.com/stream/1/110/258/....mp4"],
        "videoWidth": 720,
        "videoHeight": 1280,
        "thumbnailUrl": "https://sns-webpic-qc.xhscdn.com/....webp",
        "subtitles": [],
        "transcript": "大家好今天我们来聊一聊这个辛拉面的正确煮法…",
        "transcriptLanguage": "zh",
        "transcriptConfidence": 0.997,
        "transcriptSegments": [{ "text": "大家好今天我们来聊一聊…", "start": 0.1, "end": 12.4, "confidence": 0.99 }]
    }
]
```

You can download the dataset in various formats such as **JSON, HTML, CSV, or Excel**.

### 📋 Data Fields

| Field                                                          | Description                                                            |
| -------------------------------------------------------------- | ---------------------------------------------------------------------- |
| `noteId` / `postUrl`                                           | Post identifier and direct link.                                       |
| `postedAt`                                                     | When the post was published.                                           |
| `discoveredVia`                                                | Which category the post was found in, or `direct` for a pasted URL.     |
| `title`, `description`, `tags`                                 | The post's headline, caption text, and hashtag topics.                  |
| `authorName`, `authorId`, `authorUrl`                          | Who posted it, and a link to their profile.                            |
| `ipLocation`                                                   | Region the author posted from, where they expose it.                   |
| `likeCount`, `collectedCount`, `commentCount`, `shareCount`     | Engagement — likes, saves, comments and shares.                        |
| `durationSeconds`                                              | Video length in seconds.                                               |
| `videoUrl`, `videoBackupUrls`                                  | Direct media link, plus mirrors that outlive the signed URL.            |
| `videoWidth`, `videoHeight`, `thumbnailUrl`                     | Video dimensions and cover image.                                      |
| `transcript`                                                   | The full spoken text of the video.                                     |
| `transcriptLanguage`, `transcriptConfidence`                    | Language and the model's confidence score.                             |
| `transcriptSegments`                                           | Timestamped segments with `text`, `start`, `end`, and `confidence`.    |
| `subtitles`                                                    | Platform-generated subtitle tracks, on the rare posts that have them.  |
| `transcriptNote`                                               | Present when a transcript was skipped, and why.                        |

### 💵 How Much Does It Cost to Scrape Xiaohongshu Videos?

This Actor uses the **pay-per-event** pricing model — you only pay for what you get:

| Event                       | Price    | When it's charged                         |
| --------------------------- | -------- | ----------------------------------------- |
| Actor start                 | $0.00005 | Once per run.                             |
| Post scraped                | $0.006   | Per post returned, with all its metadata. |
| Video transcribed           | $0.01    | Once per video turned into text.          |
| Minute of video transcribed | $0.01    | Per started minute of audio.              |

Half of the videos on this platform run **under 65 seconds**, so a typical transcribed post costs about **$0.036** — roughly **$3.60 for 100 videos**. Longer videos cost proportionally more, which is exactly why the **Max video length** option exists and defaults to 20 minutes. Image-only posts are filtered out before they cost anything, videos containing no speech are not charged for, and a video appearing under several posts is charged once. New Apify accounts include **free monthly usage credits**, so you can try it at no cost.

### 💡 Tips

- Start with a small `maxResults` to preview the data shape before scaling up.
- Feed the transcripts into an LLM to translate, summarise, or pull product mentions at scale — the transcripts come out as continuous Mandarin text, which is ideal input for a model.
- **Schedule a daily run** on the categories you care about. Each run returns a fresh slice, so a week of runs gives you a genuine trend picture rather than the same posts again.
- Sort your dataset by `collectedCount` rather than `likeCount` — saves are the strongest intent signal on this platform.
- Lower **Max video length** to 5 or 10 minutes when you only want short-form content and want costs tight.

### ⚠️ Good to Know

- This Actor **samples what the platform is currently promoting** in each category. It is not a keyword search and not a creator monitor — you choose a category, not a search term or an account.
- The feed serves a different set on every request, which is what makes repeat runs valuable, but also means results are **not reproducible run to run** by design.
- Roughly **half** of the posts on the platform are image-only. Those are detected and skipped before any request is spent on them.
- Of the videos, roughly **half again carry no speech** — short clips set to music. **Only videos with speech** is on by default so those don't fill your dataset; turn it off if you want them as plain post records.
- A small number of posts are hours-long livestream replays. The **Max video length** guard returns their post data without transcribing them.

### ❓ FAQ

**Do I need an account or cookies?**
No. The Actor only reads publicly visible posts — no login, no cookies, nothing to configure.

**Do I need a proxy?**
Yes, and it's on by default. The source stops serving results to an address that has requested too much, so proxy rotation is what keeps a longer run working.

**Can I search by keyword or scrape a specific creator?**
Not with this Actor. Those surfaces are not publicly readable on this platform; category sampling and direct post URLs are.

**How accurate are the Mandarin transcripts?**
Very. Measured confidence sits around 0.997 on clear speech, and each record carries its own `transcriptConfidence` so you can filter on quality. Note that Chinese transcripts come back with **little punctuation** — that's a property of the language model output, and it doesn't affect keyword search or LLM processing.

**Is scraping Xiaohongshu legal?**
This Actor collects only publicly available post data. You are responsible for using the data in compliance with Xiaohongshu's Terms of Service and applicable laws.

**What about personal data?**
Records include the post author's public nickname, user ID and profile URL, all already public. If you're processing this data for EU residents, you're the controller and GDPR applies to what you do with it.

### 🆘 Support

Found a bug or need a custom data field? Open an issue from the Actor's **Issues** tab and we'll take a look. Custom scraping solutions are also available on request.

Make RedNote's video content searchable with the **Xiaohongshu (RedNote) Video Transcript Scraper** today! 🚀

# Actor input Schema

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

Categories to sample trending videos from. Each run pulls a fresh set of posts, so repeated runs keep returning new videos.

## `postUrls` (type: `array`):

Specific posts to transcribe. Copy the full URL from the site — the whole query string is required for the post to open.

## `onlyVideosWithSpeech` (type: `boolean`):

About half the videos on this platform are music over footage with nobody talking, and there is nothing to transcribe in those. Leave this on to get only videos that actually contain speech. Turn it off to have them returned too, as post records without a transcript.

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

Hard cap on the number of video posts returned across the whole run.

## `maxVideoMinutes` (type: `integer`):

Videos longer than this are returned with their post data but no transcript, and are not charged for transcription. A small number of posts here are hours-long livestream replays, so this keeps a run's cost predictable.

## `language` (type: `string`):

Language of the audio. Most posts on this platform are in Mandarin, which is the default. Automatic detection also works but is slower.

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

Proxy settings. A proxy is required — the source limits how much any single address may request.

## Actor input object example

```json
{
  "categories": [
    "homefeed.video_v"
  ],
  "postUrls": [],
  "onlyVideosWithSpeech": true,
  "maxResults": 20,
  "maxVideoMinutes": 20,
  "language": "zh",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "categories": [
        "homefeed.video_v"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/xiaohongshu-rednote-video-transcript-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 = { "categories": ["homefeed.video_v"] }

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/xiaohongshu-rednote-video-transcript-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 '{
  "categories": [
    "homefeed.video_v"
  ]
}' |
apify call piotrv1001/xiaohongshu-rednote-video-transcript-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,piotrv1001/xiaohongshu-rednote-video-transcript-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/1CD0PGeKTV8z8XHzD/builds/J67dXs3qTQMyoNEKg/openapi.json
