# TikTok Video & Brand Scraper (`rastriq/tiktok-video-brand-scraper`) Actor

Extract video metadata, engagement metrics, and brand account data from TikTok. Get profiles, video lists, video details, and music metadata — no API key or login needed.

- **URL**: https://apify.com/rastriq/tiktok-video-brand-scraper.md
- **Developed by:** [Rastriq — Structured data from the world](https://apify.com/rastriq) (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 $1.25 / 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 Video & Brand Scraper

Extract video metadata, engagement metrics, and brand account data from TikTok — without an API key or login. TikTok Video & Brand Scraper lets you scrape profiles, video lists, individual video details, and music metadata at scale, and export to JSON, CSV, or Excel.

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

### 📌 What is TikTok Video & Brand Scraper?

**TikTok Video & Brand Scraper** is an unofficial TikTok data extraction tool that gives you structured access to public TikTok data. Unlike the official TikTok API — which requires developer registration, has strict rate limits, and restricts access to many data points — this scraper works with any public profile or video URL, no authentication needed.

Use TikTok Video & Brand Scraper to:

- 🔍 **Monitor brand accounts** — track follower growth, video output, and engagement metrics for competitive intelligence
- 📊 **Analyze video performance** — extract play counts, likes, shares, and comments across entire creator catalogs
- 🎵 **Research trending sounds** — pull music metadata to identify viral audio trends before they peak
- 🏆 **Identify sponsored content** — detect ad-flagged videos and commercial accounts for influencer vetting
- 🔄 **Automate recurring workflows** — schedule runs, set up webhooks, and keep your datasets fresh without manual intervention

The Apify platform gives TikTok Video & Brand Scraper 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 Video & Brand Scraper extract?

TikTok Video & Brand Scraper operates in **4 modes**, each returning structured data:

#### 👤 Profiles mode

|                          |                                    |
| ------------------------ | ---------------------------------- |
| 🔗 Username & URL        | 📝 Bio and display name            |
| 👥 Followers / following | ❤️ Total likes                     |
| 🎬 Video count           | ✅ Verified badge status            |
| 🏪 Commerce / business   | 🔗 Website link                    |

#### 🎬 Videos mode

|                          |                                    |
| ------------------------ | ---------------------------------- |
| 🔗 Video URL & username  | 📝 Caption & hashtags              |
| ▶️ Views                 | ❤️ Likes, shares, comments         |
| ⏱️ Duration (seconds)    | 🏷️ Ad / sponsored flag             |
| 🎵 Music title used      | 📅 Creation date                   |
| 📌 Pinned video flag     | 💾 Saves & reposts                 |

#### 📹 Video Detail mode

Same fields as Videos mode, optimized for extracting details from specific video URLs — ideal when you already have the video links you want to analyze.

#### 🎵 Music Detail mode

|                          |                                    |
| ------------------------ | ---------------------------------- |
| 🎵 Music ID & title      | 🎤 Original artist / creator       |
| ⏱️ Duration              | 🎬 Video count using this sound    |
| 🎼 Original sound flag   | 📅 Extraction timestamp            |

### 🚀 How to use TikTok Video & Brand Scraper

Extracting TikTok data takes under two minutes:

1. **Create a free Apify account** at [apify.com](https://apify.com) — your first $5 is free
2. **Open TikTok Video & Brand Scraper** in Apify Console or click **Try for free** on this page
3. **Choose your mode** — select profiles, videos, video\_detail, or music\_detail
4. **Add your inputs** — paste TikTok profile URLs, video URLs, or music IDs depending on the mode
5. **Set max results** (optional) — control how many items to extract per input
6. **Click Save & Start** and wait a few seconds
7. **Download your results** in JSON, CSV, Excel, or XML — or access them via API

**Example**: to scrape a brand's full video catalog, select **videos** mode, paste the profile URL (e.g. `https://www.tiktok.com/@redbull`), set max results to 100, and click Start.

### ⚙️ Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `mode` | string | ✅ | `profiles` | Extraction mode: `profiles`, `videos`, `video_detail`, or `music_detail` |
| `profileUrls` | array | — | — | TikTok profile URLs or @usernames (for profiles and videos modes) |
| `videoUrls` | array | — | — | TikTok video URLs (for video\_detail mode) |
| `musicIds` | array | — | — | Numeric music IDs (for music\_detail mode) |
| `maxResults` | integer | ❌ | `100` | Maximum items per input. Use 5–10 for testing. |
| `maxRunSeconds` | integer | ❌ | `3600` | Run time limit in seconds |
| `proxyConfiguration` | object | ❌ | Apify Proxy | Proxy settings. Residential or MOBILE proxies recommended. |
| `maxConcurrency` | integer | ❌ | `1` | Concurrent browser pages. Keep 1–3 to avoid rate limiting. |

TikTok Video & Brand Scraper accepts multiple input formats:

**Profile URLs** (profiles and videos modes):

```
https://www.tiktok.com/@redbull
https://www.tiktok.com/@nike
redbull
@adidas
```

**Video URLs** (video\_detail mode):

```
https://www.tiktok.com/@redbull/video/7607401470505405718
https://www.tiktok.com/@nike/video/7401234567890123456
```

**Music IDs** (music\_detail mode):

```
6745169966498259970
7298374985612345678
```

**Example input (profiles mode):**

```json
{
  "mode": "profiles",
  "profileUrls": ["https://www.tiktok.com/@redbull", "@nike", "adidas"],
  "maxResults": 5
}
```

**Example input (videos mode):**

```json
{
  "mode": "videos",
  "profileUrls": ["https://www.tiktok.com/@redbull"],
  "maxResults": 50
}
```

### 📦 Output example

Each result is a structured JSON object. Here's a sample **profile** result:

```json
{
  "type": "profile",
  "id": "160822079959736320",
  "url": "https://www.tiktok.com/@redbull",
  "username": "redbull",
  "displayName": "Red Bull",
  "avatarUrl": "https://p16-sign-sg.tiktokcdn.com/aweme/...",
  "bio": "welcome to the world of Red Bull",
  "websiteUrl": "https://win.gs/redbullbio",
  "verified": true,
  "privateAccount": false,
  "region": "AT",
  "isOrganization": false,
  "commerceUser": true,
  "followers": 22292877,
  "following": 537,
  "totalLikes": 589397912,
  "videos": 3202,
  "scrapedAt": "2026-08-30T22:22:24.845590+00:00"
}
```

And a sample **video** result:

```json
{
  "type": "video",
  "id": "7607401470505405718",
  "url": "https://www.tiktok.com/@redbull/video/7607401470505405718",
  "caption": "world first: a landing no one has seen before ✈️ #redbull #givesyouwiiings",
  "username": "redbull",
  "displayName": "Red Bull",
  "verified": true,
  "views": 9500000,
  "likes": 406300,
  "shares": 14500,
  "comments": 7268,
  "saves": 15984,
  "engagementRate": 0.045,
  "duration": 46,
  "isAd": false,
  "isCommercialSound": false,
  "musicId": "7607401395930659606",
  "musicTitle": "original sound - Red Bull",
  "hashtags": "redbull, givesyouwiiings",
  "createTime": "2026-02-16T10:03:09+00:00",
  "scrapedAt": "2026-08-30T23:02:00.020179+00:00"
}
```

Download results in **JSON, CSV, Excel, XML, or HTML** from the Output tab, or pull them programmatically using the Apify API (see the API tab for ready-to-use code snippets in Python and Node.js).

### 💰 How much does it cost to scrape TikTok?

TikTok Video & Brand Scraper uses a **pay-per-result pricing model** — you only pay for the data you extract:

| Result type | Cost per 1,000 results |
|-------------|------------------------|
| **Profiles** | $2.50 |
| **Videos** | $3.50 |
| **Video details** | $2.50 |
| **Music metadata** | $3.50 |

> 💡 **Tip**: Run a small test with 5–10 inputs first to validate costs before scaling. Your first $5 of usage is free — enough for thousands of profiles or hundreds of video listings.

#### Is scraping TikTok free?

Your first $5 of Apify platform credit is free — no credit card required. That's enough to extract ~2,000 profiles or ~1,400 video records at no cost.

### 🔗 Related TikTok Actors by Rastriq

Build a complete TikTok intelligence stack with the [Rastriq TikTok portfolio](https://apify.com/rastriq):

| Actor | Description |
|-------|-------------|
| [TikTok Search Scraper](https://apify.com/rastriq/tiktok-search-scraper) | Search TikTok by keyword and extract matching videos, users, and sounds |
| [TikTok Brand Monitor](https://apify.com/rastriq/tiktok-brand-monitor) | Track brand mentions, sentiment, and competitor activity on TikTok |
| [TikTok Trends Scraper](https://apify.com/rastriq/tiktok-trends-scraper) | Extract trending hashtags by country — spot viral trends early |
| [TikTok Trending Videos Scraper](https://apify.com/rastriq/tiktok-trending-videos-scraper) | Get viral videos and creator data from TikTok's trending feed |
| [TikTok Top Ads Scraper](https://apify.com/rastriq/tiktok-top-ads-scraper) | Extract top-performing ads from TikTok's Creative Center |
| [TikTok Ad Library Scraper](https://apify.com/rastriq/tiktok-ad-library-scraper) | Scrape ads, targeting details, and spend data from TikTok's Ad Library |

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

### ❓ Frequently Asked Questions

#### Is scraping TikTok legal?

TikTok Video & Brand Scraper only accesses **publicly available data** on TikTok — information visible to any visitor without logging in. The scraper respects reasonable rate limiting to avoid overloading TikTok's 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 Video & Brand Scraper require a TikTok account?

No. TikTok Video & Brand Scraper works entirely with **public data** and does not require any TikTok account, API key, or developer registration.

#### How many results can I get?

Each run can extract up to 10,000 items per input (configurable via `maxResults`). For video lists, pagination captures the full public catalog of a creator's videos. There is no hard limit on the number of profiles or videos you can process in a single run.

#### What proxy configuration should I use?

For best results, we recommend using **Apify residential proxies** or **MOBILE proxies**. TikTok has rate limiting that may affect datacenter proxies. The actor handles proxy rotation automatically.

#### What's the difference between "videos" and "video\_detail" modes?

- **videos** mode extracts a list of all videos from a profile. It captures engagement metrics for each video in bulk — great for analyzing a creator's full catalog.
- **video\_detail** mode extracts detailed metadata for specific video URLs. Use it when you already have the video links you want to analyze.

#### 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`):

What to extract.<br><br><b>👤 Profiles</b> — account stats, bio, follower count, verified badge.<br><b>🎬 User Videos</b> — all videos from a profile with engagement metrics.<br><b>📹 Video Detail</b> — detailed metadata for specific video URLs.<br><b>🎵 Music Detail</b> — sound/music metadata and usage stats.

## `profileUrls` (type: `array`):

TikTok profiles to extract. Used in <b>Profiles</b> and <b>User Videos</b> modes.<br><br>Accepts multiple formats:<br>• Full URL: <code>https://www.tiktok.com/@nike</code><br>• With @: <code>@nike</code><br>• Username only: <code>nike</code><br><br>Add one per line. You can mix formats in the same run.

## `videoUrls` (type: `array`):

TikTok video URLs to extract. Used in <b>Video Detail</b> mode.<br><br>Accepts:<br>• Full URL: <code>https://www.tiktok.com/@user/video/7523135205314514183</code><br>• Mobile share link: <code>https://vm.tiktok.com/ZMhK9xABC/</code><br><br>Add one per line.

## `musicIds` (type: `array`):

Sound or music IDs to look up. Used in <b>Music Detail</b> mode.<br><br><b>Where to find a music ID:</b><br>1. Open any TikTok video that uses the sound<br>2. Tap the sound name at the bottom → the URL will look like:<br><code>tiktok.com/music/sound-name-<b>6745169966498259970</b></code><br>3. Copy the number at the end — that's the music ID<br><br>💡 You can also get music IDs automatically by running <b>Video Detail</b> mode first — each video result includes a <code>musicId</code> field.

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

Maximum number of items to extract per profile or input.<br><br>💡 <b>Tip:</b> Start with 5–10 for a quick test, then scale up once you're happy with the results.

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

Maximum total run time in seconds. The extraction stops gracefully when this limit is reached.

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

Connection settings. The default configuration works for most runs. Change only if you experience connection issues.

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

How many extractions to run in parallel. Keep at 1–3 for best reliability.

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

Enable detailed logging for troubleshooting. Recommended only when diagnosing issues with Apify support.

## Actor input object example

```json
{
  "mode": "profiles",
  "profileUrls": [
    "https://www.tiktok.com/@charlidamelio"
  ],
  "maxResults": 10,
  "maxRunSeconds": 3600,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "maxConcurrency": 1,
  "debugMode": false
}
```

# Actor output Schema

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

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "profileUrls": [
        "https://www.tiktok.com/@charlidamelio"
    ],
    "maxResults": 10,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rastriq/tiktok-video-brand-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "profileUrls": ["https://www.tiktok.com/@charlidamelio"],
    "maxResults": 10,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("rastriq/tiktok-video-brand-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "profileUrls": [
    "https://www.tiktok.com/@charlidamelio"
  ],
  "maxResults": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call rastriq/tiktok-video-brand-scraper --silent --output-dataset

```

## MCP server setup

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

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/sHhjig2TthnqBeOcs/builds/ANplQDl674F1PBhbC/openapi.json
