# Xiaohongshu Brand Mentions, UGC & Seeding Monitor (`scrupulous_buckler/xiaohongshu-brand-mentions-ugc-monitor`) Actor

Monitor Xiaohongshu and RedNote brand mentions, competitors, organic UGC creators, suspected collaborations, engagement changes, and abnormal growth.

- **URL**: https://apify.com/scrupulous\_buckler/xiaohongshu-brand-mentions-ugc-monitor.md
- **Developed by:** [Peng Lyu](https://apify.com/scrupulous_buckler) (community)
- **Categories:** Social media, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.99 / up to 100 monitored 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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 Brand Mentions, UGC & Seeding Monitor

Turn Xiaohongshu / RedNote posts into an evidence-linked brand monitoring report. Track who mentions your brand, which creators look like organic UGC, which posts contain suspected collaboration signals, how competitors' share of voice changes, and where abnormal growth appears.

This Actor is an independent, unofficial research tool and is not affiliated with Xiaohongshu or RedNote.

### What one report contains

- Brand, competitor, and category mention counts
- Share of voice with engagement and creator coverage
- Ranked UGC and suspected-collaboration creators
- Organic UGC evidence with source URLs
- Explainable collaboration, gifting, promotion, and seeding-format signals
- New posts and new creators since the previous run
- Engagement growth for posts present in both snapshots
- Mention spikes, collaboration-share changes, high-impact new posts, and creator concentration
- Compact private baseline storage for scheduled monitoring

The suspected-collaboration label is a review lead, not proof that a creator was paid or sponsored. Every label includes the public text signals that caused it.

### Three ways to run it

#### 1. No-Cookie demo

Keep `mode` set to `demo`. The sample report demonstrates organic UGC, competitor comparison, suspected collaboration, and before/after change detection.

#### 2. Analyze an existing export

Choose `uploadedNotes` and paste note records exported from a compatible Xiaohongshu search or note Actor. No Cookie is required. Common note, author, hashtag, and engagement field names are normalized automatically.

You can also paste older rows into `previousSnapshot` to get an immediate before/after report.

#### 3. Live keyword monitoring

Choose `liveSearch`, supply your own Xiaohongshu session Cookie in the secret field, and enter brand, competitor, and category terms. The Cookie is never included in dataset output or logs.

Authenticated collection can be affected by account state, region, rate limits, session expiry, and platform changes. Use only accounts and data you are authorized to access.

### Example input

```json
{
  "mode": "liveSearch",
  "brandKeywords": ["品牌甲", "品牌甲防晒"],
  "competitorKeywords": ["品牌乙", "品牌丙"],
  "categoryKeywords": ["敏感肌防晒", "通勤防晒"],
  "monitorKey": "brand-a-sunscreen-cn",
  "maxPostsPerKeyword": 20,
  "maxTotalPosts": 100,
  "growthThresholdPercent": 100,
  "rememberBaseline": true
}
````

### Continuous monitoring

Save the configured run as an Apify Task, then add a daily or weekly Schedule. Reuse the same `monitorKey`. Each successful paid report stores a compact snapshot in the run owner's private default key-value store; the next run compares against it automatically.

Use `resetBaseline` when you intentionally change the monitoring scope. If you substantially change keywords without resetting, the before/after comparison may be misleading.

### Pricing

**$4.99 per monitoring report, analyzing up to 100 unique posts.**

The report fee is charged only when a non-empty matched report is written. More than 100 posts require another run. Platform usage is included in the customer price; a tiny Actor-start event may still appear under Apify's standard pay-per-event display.

### Data and interpretation limits

- Keyword search is a sample, not a complete census of Xiaohongshu.
- Search ranking can vary by account, location, and collection time.
- Public text cannot prove a commercial relationship.
- “Organic UGC” means a brand mention without detected collaboration signals; it is not a legal certification.
- Engagement is a public counter snapshot and may change or be unavailable.
- Follow platform terms, privacy requirements, advertising rules, and applicable law.

### Output

One dataset row is returned per report. It includes brand/competitor-only `shareOfVoice`, separate `categorySignals`, `creatorLeaderboard`, `topOrganicUgc`, `suspectedCollaborationEvidence`, `changeSincePreviousRun`, `anomalies`, methodology, data-quality warnings, and optional normalized source posts.

# Actor input Schema

## `mode` (type: `string`):

Try the no-Cookie demo, analyze an existing export, or search Xiaohongshu with your own session Cookie.

## `brandKeywords` (type: `array`):

Required outside demo mode. Include brand names, product lines, common Chinese names, and distinctive abbreviations.

## `competitorKeywords` (type: `array`):

Competitor names used for share-of-voice and comparison monitoring.

## `categoryKeywords` (type: `array`):

Category, problem, ingredient, scenario, or hashtag terms that reveal adjacent conversations.

## `uploadedNotes` (type: `array`):

Paste JSON exported from a compatible Xiaohongshu search or note Actor. Common note, author, hashtag, and engagement fields are normalized automatically.

## `previousSnapshot` (type: `array`):

Optional older export for immediate before/after comparison. Otherwise the Actor remembers the last successful run for the same monitor key.

## `cookie` (type: `string`):

Required only for live search. Stored as a secret input and never written to output or logs.

## `monitorKey` (type: `string`):

Optional identifier such as brand-a-cn. Reuse it on scheduled runs to compare with the same saved baseline.

## `rememberBaseline` (type: `boolean`):

Stores a compact private snapshot in the run owner's default key-value store for the next run.

## `resetBaseline` (type: `boolean`):

Start a new comparison series while still saving this successful run as the next baseline.

## `maxPostsPerKeyword` (type: `integer`):

Maximum posts requested for each keyword before de-duplication.

## `maxTotalPosts` (type: `integer`):

One $4.99 report analyzes up to 100 unique posts across all supplied brand, competitor, and category keywords.

## `growthThresholdPercent` (type: `integer`):

Flag a mention-volume anomaly when matched post count grows by at least this percentage versus the prior snapshot.

## `maxCreators` (type: `integer`):

Maximum UGC and suspected-collaboration creators included in the ranked creator table.

## `includeSourcePosts` (type: `boolean`):

Include normalized evidence rows with URLs, authors, metrics, matched keywords, and classification reasons.

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

Residential proxy is recommended for live authenticated collection.

## Actor input object example

```json
{
  "mode": "demo",
  "brandKeywords": [],
  "competitorKeywords": [],
  "categoryKeywords": [],
  "uploadedNotes": [],
  "previousSnapshot": [],
  "rememberBaseline": true,
  "resetBaseline": false,
  "maxPostsPerKeyword": 20,
  "maxTotalPosts": 100,
  "growthThresholdPercent": 100,
  "maxCreators": 25,
  "includeSourcePosts": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `reports` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("scrupulous_buckler/xiaohongshu-brand-mentions-ugc-monitor").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("scrupulous_buckler/xiaohongshu-brand-mentions-ugc-monitor").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 '{}' |
apify call scrupulous_buckler/xiaohongshu-brand-mentions-ugc-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrupulous_buckler/xiaohongshu-brand-mentions-ugc-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Xiaohongshu Brand Mentions, UGC & Seeding Monitor",
        "description": "Monitor Xiaohongshu and RedNote brand mentions, competitors, organic UGC creators, suspected collaborations, engagement changes, and abnormal growth.",
        "version": "0.1",
        "x-build-id": "jB1dTUXHutJmXYJGP"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrupulous_buckler~xiaohongshu-brand-mentions-ugc-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrupulous_buckler-xiaohongshu-brand-mentions-ugc-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrupulous_buckler~xiaohongshu-brand-mentions-ugc-monitor/runs": {
            "post": {
                "operationId": "runs-sync-scrupulous_buckler-xiaohongshu-brand-mentions-ugc-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrupulous_buckler~xiaohongshu-brand-mentions-ugc-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-scrupulous_buckler-xiaohongshu-brand-mentions-ugc-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "mode": {
                        "title": "Data source",
                        "enum": [
                            "demo",
                            "uploadedNotes",
                            "liveSearch"
                        ],
                        "type": "string",
                        "description": "Try the no-Cookie demo, analyze an existing export, or search Xiaohongshu with your own session Cookie.",
                        "default": "demo"
                    },
                    "brandKeywords": {
                        "title": "Your brand and product keywords",
                        "type": "array",
                        "description": "Required outside demo mode. Include brand names, product lines, common Chinese names, and distinctive abbreviations.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "competitorKeywords": {
                        "title": "Competitor brands and products",
                        "type": "array",
                        "description": "Competitor names used for share-of-voice and comparison monitoring.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "categoryKeywords": {
                        "title": "Category and use-case keywords",
                        "type": "array",
                        "description": "Category, problem, ingredient, scenario, or hashtag terms that reveal adjacent conversations.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "uploadedNotes": {
                        "title": "Current Xiaohongshu note data",
                        "type": "array",
                        "description": "Paste JSON exported from a compatible Xiaohongshu search or note Actor. Common note, author, hashtag, and engagement fields are normalized automatically.",
                        "default": []
                    },
                    "previousSnapshot": {
                        "title": "Optional previous note data",
                        "type": "array",
                        "description": "Optional older export for immediate before/after comparison. Otherwise the Actor remembers the last successful run for the same monitor key.",
                        "default": []
                    },
                    "cookie": {
                        "title": "Xiaohongshu Cookie (secret)",
                        "type": "string",
                        "description": "Required only for live search. Stored as a secret input and never written to output or logs."
                    },
                    "monitorKey": {
                        "title": "Stable monitor name",
                        "type": "string",
                        "description": "Optional identifier such as brand-a-cn. Reuse it on scheduled runs to compare with the same saved baseline."
                    },
                    "rememberBaseline": {
                        "title": "Remember this run as the next baseline",
                        "type": "boolean",
                        "description": "Stores a compact private snapshot in the run owner's default key-value store for the next run.",
                        "default": true
                    },
                    "resetBaseline": {
                        "title": "Ignore the saved baseline this time",
                        "type": "boolean",
                        "description": "Start a new comparison series while still saving this successful run as the next baseline.",
                        "default": false
                    },
                    "maxPostsPerKeyword": {
                        "title": "Posts per live-search keyword",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum posts requested for each keyword before de-duplication.",
                        "default": 20
                    },
                    "maxTotalPosts": {
                        "title": "Posts to monitor (maximum 100)",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "One $4.99 report analyzes up to 100 unique posts across all supplied brand, competitor, and category keywords.",
                        "default": 100
                    },
                    "growthThresholdPercent": {
                        "title": "Mention-spike threshold",
                        "minimum": 20,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Flag a mention-volume anomaly when matched post count grows by at least this percentage versus the prior snapshot.",
                        "default": 100
                    },
                    "maxCreators": {
                        "title": "Creators in leaderboard",
                        "minimum": 5,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum UGC and suspected-collaboration creators included in the ranked creator table.",
                        "default": 25
                    },
                    "includeSourcePosts": {
                        "title": "Include evidence posts in output",
                        "type": "boolean",
                        "description": "Include normalized evidence rows with URLs, authors, metrics, matched keywords, and classification reasons.",
                        "default": true
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Residential proxy is recommended for live authenticated collection.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
