# TikTok Brand Monitoring & Mention Tracker (`logiover/tiktok-brand-mention-monitor`) Actor

TikTok brand mention scraper, no login. Scrape TikTok videos by keyword, get engagement stats, export to CSV/JSON. A TikTok API alternative.

- **URL**: https://apify.com/logiover/tiktok-brand-mention-monitor.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** Social media, Marketing, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

## TikTok Brand Monitoring & Mention Tracker

Track every TikTok video that mentions your brand, product, campaign or any keyword. This TikTok mention tracker and social-listening tool turns a list of terms into a continuously updated feed of matching videos with full engagement metrics — no login, no cookies, no API key.

Point it at your brand, your competitors and your campaign hashtags, run it on a daily schedule, and watch your share-of-voice on TikTok build up over time.

![No login required](https://img.shields.io/badge/%E2%9C%93_No_login-no_cookies-2ea44f?style=for-the-badge)
![Scheduling](https://img.shields.io/badge/Built_for-daily_scheduling-1f6feb?style=for-the-badge)
![Export](https://img.shields.io/badge/Export-JSON%C2%B7CSV%C2%B7Excel%C2%B7API-f59e0b?style=for-the-badge)
![Account safe](https://img.shields.io/badge/0%25-account_ban_risk-9333ea?style=for-the-badge)

---

### What you get

Each TikTok video that matches one of your keywords is saved as one clean row, with the real fields you need for social listening:

- **videoId** and **url** — the direct link to the TikTok video.
- **description** — the full caption text where your brand was mentioned.
- **postedAt** — the post date (ISO timestamp) for freshness tracking.
- **playCount** (views), **likeCount**, **commentCount**, **shareCount**, **saveCount** — complete engagement metrics, overflow-safe even in the millions.
- **hashtags** — every hashtag used on the video.
- **music** — the sound's `id`, `title` and `author`.
- **author** — the creator's `username`, `nickname` and `verified` badge.
- **durationSec** and **isAd** — clip length and an organic-vs-promoted flag.
- **matchedKeyword** — which of your tracked terms this video came from.
- **scrapedAt** — when the row was captured.

Export everything to **CSV, JSON, Excel or HTML**, or stream it through the **Apify API and webhooks** into your own dashboard.

---

### Use cases

- **Brand monitoring & social listening** — catch organic mentions, UGC and customer reactions you'd never find scrolling by hand.
- **Competitor intelligence** — track rivals' branded content and how much reach it pulls.
- **Campaign & hashtag measurement** — quantify the views and engagement a launch generates.
- **Influencer & UGC discovery** — surface creators who are already talking about you.
- **PR & trend alerts** — spot a spike early, before it becomes a crisis or an opportunity.

---

### How to use

1. Add your **keywords** — brand names, product names, campaigns, competitors or `#hashtags`. Each term runs its own TikTok search.
2. Set **maxVideosPerKeyword** to control depth per term.
3. (Optional) Set **maxAgeDays** to keep only fresh posts — set it to `1` for daily monitoring runs.
4. (Optional) Toggle **includeAds** and set a global **maxResults** cap.
5. Click **Start**, or open **Schedules** in the Apify Console and point a daily run at this actor to build a hands-off mention feed.

#### Example input

```json
{
  "keywords": ["stanley cup", "stanley tumbler", "#stanleycup"],
  "maxVideosPerKeyword": 150,
  "maxAgeDays": 7,
  "includeAds": true
}
````

#### Example output

```json
{
  "videoId": "7613053792145296662",
  "url": "https://www.tiktok.com/@lexi_15167/video/7613053792145296662",
  "description": "good Stanley colors for u 💚 #stanley #stanleycup",
  "postedAt": "2026-03-01T12:30:19.000Z",
  "durationSec": 15,
  "isAd": false,
  "playCount": 1500000,
  "likeCount": 16400,
  "commentCount": 770,
  "shareCount": 10300,
  "saveCount": 13300,
  "hashtags": ["stanley", "stanleycup", "fyp"],
  "music": { "id": "76084...", "title": "original sound", "author": "Way Of House" },
  "author": { "username": "lexi_15167", "nickname": "Lexi", "verified": false },
  "matchedKeyword": "stanley cup",
  "scrapedAt": "2026-06-03T18:00:00.000Z"
}
```

***

### FAQ

#### Does this need a TikTok login or API key?

No. The actor only reads publicly available video data through residential proxies — no account, no cookies, no API key, and zero ban risk to any TikTok account.

#### How is this different from a plain hashtag scraper?

It's built for ongoing *monitoring*. You get date filtering (`maxAgeDays`), an ad-vs-organic flag, and a `matchedKeyword` field on every row so you can track multiple brands or competitors in one scheduled job and split the results cleanly.

#### Can I track several brands or competitors at once?

Yes. Add them all to `keywords`; each result is tagged with the `matchedKeyword` it came from, so you can measure share-of-voice across brands by comparing mention counts, views and engagement.

#### How do I keep only fresh mentions?

Set `maxAgeDays` to `1` (or `7`) and schedule a daily run. Each run appends only the newest matching videos to your dataset.

#### Is this a TikTok API alternative?

Yes. TikTok has no public mention-monitoring API, so this works as a TikTok API alternative — it reads public video data by keyword and returns structured rows, no API key required.

#### Can I scrape TikTok without an API key or login?

Yes. The actor scrapes TikTok videos by keyword without any login, cookies or API key, using residential proxies, so there's zero ban risk to a TikTok account.

#### How do I export TikTok video data to CSV or JSON?

Every matching video is saved as one row. Use the Export button to download the dataset as CSV, JSON, Excel or HTML, or pull it through the Apify API.

***

### Pairs well with

- **TikTok Hashtag & Keyword Video Scraper** — deeper, higher-volume video pulls.
- **TikTok Creator Lead Finder** — turn the authors mentioning you into outreach leads.

***

> **Responsible use.** This actor collects publicly available video data only. You are responsible for complying with TikTok's Terms and all applicable laws.

### Changelog

#### 2026-06-07

- Docs: added coverage for TikTok API alternative use, scraping TikTok without an API key or login, and exporting TikTok video data to CSV/JSON.

#### 2026-06-05

- Reliability fix: results are no longer dropped by strict output validation — runs now complete cleanly even at high volume (thousands of results).
- Stability & performance hardening; fresh rebuild.

#### 2026-06-04

- Verified live & refreshed build — reliability/maintenance pass.

# Actor input Schema

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

Brand names, products, campaigns or any keyword to track. Each runs a TikTok search. Examples: \['nike', 'my saas product', '#myhashtag'].

## `maxVideosPerKeyword` (type: `integer`):

How many videos to capture per keyword.

## `maxAgeDays` (type: `integer`):

Keep only videos posted within this many days — ideal for recurring monitoring. 0 = no date filter.

## `includeAds` (type: `boolean`):

Keep promoted/ad videos in the results.

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

Global cap on videos saved across all keywords. 0 = unlimited.

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

TikTok requires residential proxies. Leave the default (Apify Proxy · RESIDENTIAL group).

## Actor input object example

```json
{
  "keywords": [
    "nike",
    "stanley cup",
    "#mybrand"
  ],
  "maxVideosPerKeyword": 30,
  "maxAgeDays": 0,
  "includeAds": true,
  "maxResults": 0,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `matchedKeyword` (type: `string`):

Keyword matched

## `description` (type: `string`):

Video caption

## `playCount` (type: `string`):

Play count

## `likeCount` (type: `string`):

Like count

## `postedAt` (type: `string`):

Post date

## `url` (type: `string`):

Video URL

# 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 = {
    "keywords": [
        "nike"
    ],
    "maxVideosPerKeyword": 30,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/tiktok-brand-mention-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 = {
    "keywords": ["nike"],
    "maxVideosPerKeyword": 30,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("logiover/tiktok-brand-mention-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 '{
  "keywords": [
    "nike"
  ],
  "maxVideosPerKeyword": 30,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call logiover/tiktok-brand-mention-monitor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "TikTok Brand Monitoring & Mention Tracker",
        "description": "TikTok brand mention scraper, no login. Scrape TikTok videos by keyword, get engagement stats, export to CSV/JSON. A TikTok API alternative.",
        "version": "1.0",
        "x-build-id": "Yt4dUF21wjBT5GrxK"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/logiover~tiktok-brand-mention-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-logiover-tiktok-brand-mention-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/logiover~tiktok-brand-mention-monitor/runs": {
            "post": {
                "operationId": "runs-sync-logiover-tiktok-brand-mention-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/logiover~tiktok-brand-mention-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-logiover-tiktok-brand-mention-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",
                "required": [
                    "keywords"
                ],
                "properties": {
                    "keywords": {
                        "title": "Keywords / brands to monitor",
                        "type": "array",
                        "description": "Brand names, products, campaigns or any keyword to track. Each runs a TikTok search. Examples: ['nike', 'my saas product', '#myhashtag'].",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxVideosPerKeyword": {
                        "title": "Max videos per keyword",
                        "minimum": 1,
                        "type": "integer",
                        "description": "How many videos to capture per keyword.",
                        "default": 100
                    },
                    "maxAgeDays": {
                        "title": "Only videos from the last N days",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Keep only videos posted within this many days — ideal for recurring monitoring. 0 = no date filter.",
                        "default": 0
                    },
                    "includeAds": {
                        "title": "Include ads / promoted videos",
                        "type": "boolean",
                        "description": "Keep promoted/ad videos in the results.",
                        "default": true
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Global cap on videos saved across all keywords. 0 = unlimited.",
                        "default": 0
                    },
                    "proxyConfiguration": {
                        "title": "Proxy",
                        "type": "object",
                        "description": "TikTok requires residential proxies. Leave the default (Apify Proxy · RESIDENTIAL group).",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
