# Xiaohongshu Competitor Account Growth Monitor (`scrupulous_buckler/xiaohongshu-competitor-account-growth-monitor`) Actor

Track RedNote competitor followers, posting, engagement rate, breakout contribution, profile changes, alerts, and evidence-backed growth explanations.

- **URL**: https://apify.com/scrupulous\_buckler/xiaohongshu-competitor-account-growth-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 5 monitored accounts

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.

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 Competitor Account Growth Monitor

Monitor Xiaohongshu / RedNote competitor accounts over time. Save profile and recent-post snapshots, detect follower and profile changes, measure engagement efficiency and breakout contribution, and explain which observable content patterns are associated with growth.

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

### What one report answers

- Which competitor gained or lost followers?
- How did post count, following count, nickname, and bio change?
- Did recent-post engagement rate improve or weaken?
- Which new or existing posts gained the most engagement?
- How much sampled engagement came from breakout posts?
- Was observed growth associated with breakout content, higher publishing frequency, improved engagement efficiency, content themes, or profile positioning changes?
- Which changes deserve an alert?

Growth explanations are evidence-linked associations, not invented causal claims.

### Output per account

- Current profile snapshot
- Followers, following, note count, nickname, and bio changes
- Average and median recent-post engagement
- Estimated engagement rate
- New posts and overlapping-post engagement growth
- Breakout-post threshold, list, and contribution share
- Top hashtags, formats, and optional custom themes
- Transparent growth explanation with confidence labels
- Follower spike, decline, bio, nickname, and breakout alerts

The report also includes a cross-account growth leaderboard.

### Three data modes

#### No-Cookie demo

Run the default input to see two sample competitor accounts, follower growth, profile changes, new posts, breakout contribution, and content-driver explanations.

#### Uploaded snapshots

Choose `uploadedSnapshots` and provide `currentAccounts`. Each object can contain profile fields at the top level or inside `profile`, plus recent rows inside `posts` or `notes`. Common field names are normalized automatically.

Add `previousAccounts` for immediate comparison. This mode requires no Cookie and works with compatible exports from other Xiaohongshu Actors.

#### Live account monitoring

Choose `liveAccounts`, enter one to five profile URLs or user IDs, and provide your own session Cookie in the secret input. The Cookie is never written to output or logs.

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

### Example input

```json
{
  "mode": "liveAccounts",
  "accountUrlsOrIds": [
    "https://www.xiaohongshu.com/user/profile/competitor-a",
    "https://www.xiaohongshu.com/user/profile/competitor-b"
  ],
  "monitorKey": "skincare-competitors-cn",
  "themeKeywords": ["敏感肌", "修护", "防晒", "成分"],
  "maxPostsPerAccount": 20,
  "maxTotalPosts": 100,
  "followerAlertPercent": 10,
  "rememberBaseline": true
}
````

### Continuous monitoring

Save a configured run as an Apify Task and add a daily or weekly Schedule. Reuse the same `monitorKey`. After each successful paid report, the Actor stores a compact private baseline in the run owner's default key-value store. The next run compares each account and post against that snapshot.

Use `resetBaseline` when you intentionally change the account group or monitoring method.

### Pricing

**$4.99 per report for up to five accounts and 100 recent posts in total.**

The report event is charged only when at least one usable account snapshot is produced. Larger account groups require another run. Platform usage is included in the customer price; Apify may also display its standard tiny Actor-start event.

### Metric definitions

- Engagement = likes + comments + collects + shares.
- Estimated engagement rate = average sampled-post engagement / current followers.
- Breakout contribution = share of sampled engagement generated by posts at or above the configured multiple of sampled median engagement, with a minimum threshold of 100.
- “Why it grew” combines follower change with publishing activity, breakout concentration, engagement efficiency, formats, hashtags, custom themes, and profile changes.

### Limitations

- Recent posts are a sample, not the account's complete history.
- Public counters and search results can change or be unavailable.
- A temporal association does not prove that a content item caused follower growth.
- Comparisons are most meaningful when schedules, account lists, post limits, and collection conditions stay consistent.
- Follow platform terms, privacy obligations, and applicable law.

# Actor input Schema

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

Try the demo, compare uploaded account snapshots without a Cookie, or collect up to five accounts with your own session.

## `accountUrlsOrIds` (type: `array`):

Required for live monitoring. Add one to five Xiaohongshu profile URLs or user IDs.

## `currentAccounts` (type: `array`):

For uploaded mode: up to five objects containing profile metrics and a posts/notes array. Common field names are normalized automatically.

## `previousAccounts` (type: `array`):

Paste an older export for immediate comparison. Otherwise the Actor uses the last successful run stored for this monitor key.

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

Required only for live monitoring. Never included in output or logs.

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

Optional identifier such as skincare-competitors-cn. Reuse it in scheduled runs to compare against the same baseline.

## `themeKeywords` (type: `array`):

Optional product, use-case, ingredient, campaign, or positioning terms to measure in competitor posts.

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

Stores a compact private snapshot for the next scheduled run with the same monitor key.

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

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

## `maxPostsPerAccount` (type: `integer`):

Maximum recent posts analyzed for each account, subject to the 100-post report cap.

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

One $4.99 report analyzes up to five accounts and 100 recent posts in total.

## `followerAlertPercent` (type: `integer`):

Create a growth-spike alert when followers rise by at least this percentage between comparable snapshots.

## `breakoutMultiplier` (type: `number`):

A post is a breakout candidate when engagement reaches this multiple of the account's sampled median, with a minimum of 100 engagements.

## `includeSourceSnapshots` (type: `boolean`):

Include account profiles and recent-post evidence in the dataset output.

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

Residential proxy is recommended for live authenticated collection.

## Actor input object example

```json
{
  "mode": "demo",
  "accountUrlsOrIds": [],
  "currentAccounts": [],
  "previousAccounts": [],
  "themeKeywords": [],
  "rememberBaseline": true,
  "resetBaseline": false,
  "maxPostsPerAccount": 20,
  "maxTotalPosts": 100,
  "followerAlertPercent": 10,
  "breakoutMultiplier": 3,
  "includeSourceSnapshots": 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-competitor-account-growth-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-competitor-account-growth-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-competitor-account-growth-monitor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Xiaohongshu Competitor Account Growth Monitor",
        "description": "Track RedNote competitor followers, posting, engagement rate, breakout contribution, profile changes, alerts, and evidence-backed growth explanations.",
        "version": "0.1",
        "x-build-id": "aUHPV33uccRI7ptXB"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrupulous_buckler~xiaohongshu-competitor-account-growth-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrupulous_buckler-xiaohongshu-competitor-account-growth-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-competitor-account-growth-monitor/runs": {
            "post": {
                "operationId": "runs-sync-scrupulous_buckler-xiaohongshu-competitor-account-growth-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-competitor-account-growth-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-scrupulous_buckler-xiaohongshu-competitor-account-growth-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",
                            "uploadedSnapshots",
                            "liveAccounts"
                        ],
                        "type": "string",
                        "description": "Try the demo, compare uploaded account snapshots without a Cookie, or collect up to five accounts with your own session.",
                        "default": "demo"
                    },
                    "accountUrlsOrIds": {
                        "title": "Competitor profile URLs or user IDs",
                        "type": "array",
                        "description": "Required for live monitoring. Add one to five Xiaohongshu profile URLs or user IDs.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "currentAccounts": {
                        "title": "Current account snapshots",
                        "type": "array",
                        "description": "For uploaded mode: up to five objects containing profile metrics and a posts/notes array. Common field names are normalized automatically.",
                        "default": []
                    },
                    "previousAccounts": {
                        "title": "Optional previous account snapshots",
                        "type": "array",
                        "description": "Paste an older export for immediate comparison. Otherwise the Actor uses the last successful run stored for this monitor key.",
                        "default": []
                    },
                    "cookie": {
                        "title": "Xiaohongshu Cookie (secret)",
                        "type": "string",
                        "description": "Required only for live monitoring. Never included in output or logs."
                    },
                    "monitorKey": {
                        "title": "Stable monitor name",
                        "type": "string",
                        "description": "Optional identifier such as skincare-competitors-cn. Reuse it in scheduled runs to compare against the same baseline."
                    },
                    "themeKeywords": {
                        "title": "Custom content themes",
                        "type": "array",
                        "description": "Optional product, use-case, ingredient, campaign, or positioning terms to measure in competitor posts.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "rememberBaseline": {
                        "title": "Remember this run as the next baseline",
                        "type": "boolean",
                        "description": "Stores a compact private snapshot for the next scheduled run with the same monitor key.",
                        "default": true
                    },
                    "resetBaseline": {
                        "title": "Ignore the saved baseline this time",
                        "type": "boolean",
                        "description": "Start a new comparison series while saving the successful current run as the next baseline.",
                        "default": false
                    },
                    "maxPostsPerAccount": {
                        "title": "Recent posts per account",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum recent posts analyzed for each account, subject to the 100-post report cap.",
                        "default": 20
                    },
                    "maxTotalPosts": {
                        "title": "Total recent posts (maximum 100)",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "One $4.99 report analyzes up to five accounts and 100 recent posts in total.",
                        "default": 100
                    },
                    "followerAlertPercent": {
                        "title": "Follower growth alert threshold",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Create a growth-spike alert when followers rise by at least this percentage between comparable snapshots.",
                        "default": 10
                    },
                    "breakoutMultiplier": {
                        "title": "Breakout post multiplier",
                        "minimum": 1.5,
                        "maximum": 10,
                        "type": "number",
                        "description": "A post is a breakout candidate when engagement reaches this multiple of the account's sampled median, with a minimum of 100 engagements.",
                        "default": 3
                    },
                    "includeSourceSnapshots": {
                        "title": "Include normalized source snapshots",
                        "type": "boolean",
                        "description": "Include account profiles and recent-post evidence in the dataset output.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
