# TikTok Brand Monitor (`rastriq/tiktok-brand-monitor`) Actor

Track brands, competitors, and campaigns on TikTok over time. Compare follower growth, detect new videos, and measure campaign performance with automatic change detection between runs.

- **URL**: https://apify.com/rastriq/tiktok-brand-monitor.md
- **Developed by:** [Rastriq — Structured data from the world](https://apify.com/rastriq) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/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

## TikTok Brand Monitor — Track Brand Performance on TikTok

Monitor any brand's TikTok presence automatically. TikTok Brand Monitor tracks follower growth, engagement metrics, bio changes, and new video publications — delivering structured, Excel-ready data for marketing teams and media agencies.

> 🚀 **Try it free** — your first $5 of usage is on Apify. No credit card required.

### 📌 What is TikTok Brand Monitor?

**TikTok Brand Monitor** is an automated TikTok tracking tool that captures brand profile snapshots and detects new video content — without requiring a TikTok account or API key. Unlike manual tracking or TikTok's limited official API, this actor runs on a schedule and delivers structured change data you can plug directly into dashboards, reports, or alerting workflows.

Use TikTok Brand Monitor to:

- 📊 **Track follower growth & engagement** — capture daily snapshots of followers, likes, videos count, and compute deltas between runs
- 🔔 **Detect new video publications** — get alerted when a brand posts new content, with full engagement metrics (views, likes, comments, shares, saves)
- 📝 **Monitor bio & profile changes** — detect when a brand updates their TikTok bio, nickname, or verification status
- 🔄 **Automate recurring reports** — schedule daily or weekly runs and export to Google Sheets, Slack, or your BI tool via webhooks

The Apify platform gives TikTok Brand Monitor superpowers: **scheduling**, **monitoring**, **API access**, **proxy rotation**, and **integrations** with Make, Zapier, Google Sheets, and more — all out of the box.

### 📋 What data does TikTok Brand Monitor extract?

TikTok Brand Monitor operates in two modes, each producing different output:

#### Brand Tracker mode — Profile snapshots

|                          |                                    |
| ------------------------ | ---------------------------------- |
| 👤 Username & nickname   | ✅ Verified status                  |
| 👥 Follower count        | 📈 Follower change (delta)         |
| ❤️ Total likes           | 📊 Likes change (delta)            |
| 🎬 Total videos          | 🆕 New videos since last run       |
| 📝 Bio text              | 🔄 Bio changed flag                |
| ⭐ Engagement score      | 📅 Snapshot timestamp              |

#### Content Alerts mode — New video detection

|                          |                                    |
| ------------------------ | ---------------------------------- |
| 🎬 Video URL             | 📝 Caption text                    |
| 👁️ View count            | ❤️ Likes                           |
| 💬 Comments              | 🔄 Shares                          |
| 🔖 Saves                 | 📊 Engagement rate                 |
| #️⃣ Hashtags              | 🎵 Music title                     |
| 📅 Published date        | 👤 Brand / username                |

### 🚀 How to use TikTok Brand Monitor

Setting up brand monitoring takes under two minutes:

1. **Create a free Apify account** at [apify.com](https://apify.com) — your first $5 is free
2. **Open TikTok Brand Monitor** in Apify Console or click **Try for free** on this page
3. **Choose your mode** — select `brand_tracker` for profile snapshots, `content_alerts` for new video detection, or `both` to run everything
4. **Add brands to monitor** — enter TikTok usernames (e.g., `redbull`, `nike`, `netflix`)
5. **Click Save & Start** and wait for results
6. **Download your data** in JSON, CSV, or Excel — or set up a schedule for recurring monitoring

### ⚙️ Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `mode` | string | ✅ | `"both"` | Operating mode: `brand_tracker`, `content_alerts`, or `both` |
| `brands` | array | ✅ | — | List of TikTok usernames to monitor (e.g., `["redbull", "nike"]`) |
| `monitorName` | string | ❌ | `"default"` | Name for this monitor instance — used to persist state between scheduled runs |
| `maxVideosPerBrand` | integer | ❌ | `30` | Maximum videos to check per brand in Content Alerts mode |
| `keywords` | array | ❌ | `[]` | Filter videos containing these keywords in their caption |
| `hashtags` | array | ❌ | `[]` | Filter videos containing these hashtags |
| `minViews` | integer | ❌ | `0` | Minimum view count threshold for Content Alerts |
| `minEngagementRate` | number | ❌ | `0` | Minimum engagement rate threshold (0-100) |
| `proxyConfiguration` | object | ❌ | Automatic | Proxy settings — residential proxies recommended |

**Example input:**

```json
{
  "mode": "both",
  "brands": ["redbull", "nike", "netflix"],
  "monitorName": "competitor-watch",
  "maxVideosPerBrand": 50
}
```

### 📦 Output example

#### Brand Tracker output

Each run produces a profile snapshot with computed deltas from the previous run:

```json
{
  "type": "brand_snapshot",
  "brand": "redbull",
  "username": "redbull",
  "nickname": "Red Bull",
  "verified": true,
  "followers": 22300000,
  "followersChange": 12500,
  "totalLikes": 495200000,
  "likesChange": 1340000,
  "totalVideos": 2847,
  "newVideosSinceLastRun": 3,
  "bio": "Red Bull gives you wings",
  "bioChanged": false,
  "engagementScore": 26.44,
  "snapshotTimestamp": "2026-08-31T22:00:15.000Z"
}
```

#### Content Alerts output

Each new video detected is returned with full engagement metrics:

```json
{
  "type": "new_video",
  "brand": "redbull",
  "username": "redbull",
  "url": "https://www.tiktok.com/@redbull/video/7407261449230405921",
  "caption": "POV: You're a pilot at Red Bull Air Race",
  "publishedAt": "1724956800",
  "views": 13800000,
  "likes": 1200000,
  "comments": 8400,
  "shares": 45000,
  "saves": 92000,
  "engagementRate": 9.75,
  "hashtags": "redbull, airrace, aviation",
  "musicTitle": "original sound - Red Bull"
}
```

Download results in **JSON, CSV, Excel, XML, or HTML** from the Output tab, or pull them programmatically using the Apify API.

### 🔄 Setting up recurring monitoring

TikTok Brand Monitor is designed for continuous brand tracking:

1. **Save your input as a Task** in Apify Console after your first successful run
2. **Go to Schedules** and set the frequency: daily, every 12 hours, or custom cron
3. **Add a webhook** to receive data in Slack, email, or your own endpoint when each run finishes
4. **Monitor deltas automatically** — TikTok Brand Monitor remembers the previous state between scheduled runs, so each run only reports what changed

> 💡 **Tip**: For most brands, a daily schedule captures all meaningful changes. High-volume accounts may benefit from runs every 12 hours.

### 💰 How much does it cost to use TikTok Brand Monitor?

TikTok Brand Monitor runs on Apify's standard Compute Unit (CU) pricing. A typical run monitoring 5 brands in both modes consumes approximately 0.3-0.5 CUs.

| Plan | Monthly Credit | Approx. brands monitored daily |
|------|---------------|-------------------------------|
| Free | $5 (one-time) | ~10 brands for 30 days |
| Starter ($49/mo) | $49 | ~100 brands daily |
| Scale ($149/mo) | $149 | ~300+ brands daily |

> 💡 **Tip**: Run a small test with 1-3 brands first to validate your setup before scaling.

Is monitoring TikTok brands free? Your first $5 of usage is covered by Apify's free plan credit — enough to monitor a handful of brands for a full month at no cost.

### 🔗 Related Rastriq TikTok Actors

Explore the full [Rastriq intelligence portfolio](https://apify.com/rastriq) on Apify Store:

| Actor | Description |
|-------|-------------|
| [TikTok Ad Library Scraper](https://apify.com/rastriq/tiktok-ad-library-scraper) | Extract ads, targeting data, and spend from TikTok's Ad Library |
| [TikTok Top Ads Scraper](https://apify.com/rastriq/tiktok-top-ads-scraper) | Scrape top-performing TikTok ads with creative details and metrics |
| [TikTok Trends Scraper](https://apify.com/rastriq/tiktok-trends-scraper) | Track trending hashtags by country on TikTok |
| [TikTok Trending Videos Scraper](https://apify.com/rastriq/tiktok-trending-videos-scraper) | Extract viral TikTok videos with creator and engagement data |
| [TikTok Video & Brand Scraper](https://apify.com/rastriq/tiktok-video-brand-scraper) | Scrape TikTok videos and brand profiles at scale |

### ❓ Frequently Asked Questions

#### Is scraping TikTok legal?

TikTok Brand Monitor only accesses **publicly available data** on TikTok — information visible to any visitor without logging in. We respect reasonable rate limiting to avoid overloading servers.

As with any data collection activity, you are responsible for ensuring your use case complies with applicable laws (GDPR, CCPA) and TikTok's Terms of Service. For guidance, see [Apify's blog on the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

#### Does TikTok Brand Monitor require a TikTok account?

No. TikTok Brand Monitor works entirely with **public data** and does not require any TikTok account, login, or API credentials.

#### How does TikTok Brand Monitor track changes between runs?

TikTok Brand Monitor uses Apify's Named Key-Value Store to persist state between scheduled runs. Each run compares the current snapshot with the previous one, computing deltas for follower growth, new videos, bio changes, and more. This means you get **incremental change data** without any manual comparison.

#### What proxy configuration should I use?

For best results, we recommend using **Apify residential proxies** (configurable in the input). The actor handles proxy rotation automatically to ensure reliable data extraction.

#### How do I integrate TikTok Brand Monitor with my workflow?

TikTok Brand Monitor integrates natively with:

- **Make (formerly Integromat)** and **Zapier** — trigger runs and receive data automatically
- **Google Sheets** — export brand metrics directly to a spreadsheet
- **Webhooks** — get notified when a run finishes with new data
- **Apify API** — call from Python, Node.js, or any language (see the API tab)

#### I found a bug or my run failed. Where do I report it?

Please open an issue in the **Issues tab** on this page. Include your input configuration and the run ID so we can investigate quickly.

# Actor input Schema

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

Choose what you want to track.<br><br><b>📊 Brand Tracker</b> — follower growth, total likes, posting frequency. Fast and lightweight.<br><b>🔔 Content Alerts</b> — detect new videos from monitored accounts.<br><b>🔍 Mention Scanner</b> — find new brand mentions by keyword.<br><b>#️⃣ Campaign Tracker</b> — track hashtag performance over time.

## `brands` (type: `array`):

TikTok profiles to monitor. Used in <b>Brand Tracker</b> and <b>Content Alerts</b> modes.<br><br>Paste the profile URL — we extract the username automatically.<br><br>💡 Add your brand AND 2–3 competitors for benchmarking.

## `keywords` (type: `array`):

Keywords to search for brand mentions. Used in <b>Mention Scanner</b> mode.<br><br>Examples:<br>• <code>nike campaign</code><br>• <code>"just do it"</code><br>• <code>adidas originals</code><br><br>💡 Include your brand name, campaign slogans, and product names. Add one per line.

## `hashtags` (type: `array`):

Hashtags to monitor over time. Used in <b>Campaign Tracker</b> mode.<br><br>Accepts:<br>• <code>#JustDoIt</code><br>• <code>JustDoIt</code><br>• <code>https://www.tiktok.com/tag/justdoit</code><br><br>💡 Track your campaign hashtag AND your competitor's to compare reach.

## `monitorName` (type: `string`):

A name for this monitoring setup. Used to store and retrieve state between runs.<br><br>Use something descriptive like <code>sportswear-brands</code> or <code>q4-campaign</code>.<br><br>⚠️ <b>Important:</b> Keep the same name across scheduled runs — this is how the monitor remembers previous data to calculate changes. Different names = different tracking history.

## `maxVideosPerBrand` (type: `integer`):

In <b>Content Alerts</b> mode: maximum new videos to extract per brand per run.<br><br>💡 Set to 10–20 for daily monitoring. Higher values are useful for weekly runs or very active accounts.

## `maxMentions` (type: `integer`):

In <b>Mention Scanner</b> mode: maximum search results to check per keyword per run.<br><br>💡 Set to 50–100 for daily runs. The monitor only reports <b>new</b> mentions not seen in previous runs.

## `maxRunSeconds` (type: `integer`):

Maximum total run time. The monitor stops gracefully when this limit is reached.

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

Connection settings. The default configuration works for most runs.

## `maxConcurrency` (type: `integer`):

How many accounts to process in parallel. Keep at 1–3 for best reliability.

## `debugMode` (type: `boolean`):

Enable detailed logging for troubleshooting.

## Actor input object example

```json
{
  "mode": "brand_tracker",
  "brands": [
    "https://www.tiktok.com/@nike",
    "https://www.tiktok.com/@adidas",
    "https://www.tiktok.com/@redbull"
  ],
  "keywords": [
    "nike",
    "just do it"
  ],
  "hashtags": [
    "#JustDoIt",
    "#ImpossibleIsNothing"
  ],
  "monitorName": "my-brand-monitor",
  "maxVideosPerBrand": 20,
  "maxMentions": 50,
  "maxRunSeconds": 3600,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "maxConcurrency": 1,
  "debugMode": false
}
```

# Actor output Schema

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

Dataset containing brand snapshots (follower/like deltas) and content alerts (new videos detected) for all tracked brands.

# 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 = {
    "brands": [
        "https://www.tiktok.com/@nike",
        "https://www.tiktok.com/@adidas",
        "https://www.tiktok.com/@redbull"
    ],
    "keywords": [
        "nike",
        "just do it"
    ],
    "hashtags": [
        "#JustDoIt",
        "#ImpossibleIsNothing"
    ],
    "maxVideosPerBrand": 20,
    "maxMentions": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rastriq/tiktok-brand-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 = {
    "brands": [
        "https://www.tiktok.com/@nike",
        "https://www.tiktok.com/@adidas",
        "https://www.tiktok.com/@redbull",
    ],
    "keywords": [
        "nike",
        "just do it",
    ],
    "hashtags": [
        "#JustDoIt",
        "#ImpossibleIsNothing",
    ],
    "maxVideosPerBrand": 20,
    "maxMentions": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("rastriq/tiktok-brand-monitor").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 '{
  "brands": [
    "https://www.tiktok.com/@nike",
    "https://www.tiktok.com/@adidas",
    "https://www.tiktok.com/@redbull"
  ],
  "keywords": [
    "nike",
    "just do it"
  ],
  "hashtags": [
    "#JustDoIt",
    "#ImpossibleIsNothing"
  ],
  "maxVideosPerBrand": 20,
  "maxMentions": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call rastriq/tiktok-brand-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rastriq/tiktok-brand-monitor"
        }
    }
}

```

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/gLl4fPNxlne8EIeK7/builds/3SpGfc8k9hmdaOCcr/openapi.json
