# TikTok Profile Scraper: Fast Bulk Video Extractor (`scrapepilot/tiktok-profile-scraper-fast-bulk-video-extractor`) Actor

Fast bulk TikTok profile scraper. Extract all creator videos, views, likes, comments, shares, saves, hashtags, audio & bio. No login or cookies needed. Pay-per-result ($3/1k) with built-in anti-bot bypass. Export to Excel, CSV, or JSON instantly.

- **URL**: https://apify.com/scrapepilot/tiktok-profile-scraper-fast-bulk-video-extractor.md
- **Developed by:** [Scrape Pilot](https://apify.com/scrapepilot) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 scraped results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 🎵 TikTok Profile & Video Scraper (Fast Bulk Metadata Extractor)

> **The most cost-effective and reliable TikTok Profile Scraper on Apify.** Extract complete video feeds, creator metrics, high-res thumbnails, direct media URLs, engagement statistics (views, likes, comments, shares, bookmarks), hashtags, captions, and audio details from any TikTok profile — in bulk. No login required. No session cookies needed. Advanced anti-bot bypass & residential proxy ready.

***

### 📌 Table of Contents

- [What Is This Actor?](#what-is-this-actor)
- [Why Choose This TikTok Scraper?](#why-choose-this-tiktok-scraper)
- [Key Features](#key-features)
- [Use Cases](#use-cases)
- [Input Parameters](#input-parameters)
- [Output Fields & Data Schema](#output-fields--data-schema)
- [Example Input & Output](#example-input--output)
- [Pricing & Pay-Per-Event (PPE)](#pricing--pay-per-event-ppe)
- [Performance & Scale](#performance--scale)
- [FAQ](#faq)
- [Changelog](#changelog)
- [Legal & Terms of Use](#legal--terms-of-use)

***

### 🔍 What Is This Actor?

**TikTok Profile & Video Scraper** is a high-speed, enterprise-grade cloud scraping solution built for marketers, researchers, AI developers, and businesses looking to extract comprehensive creator data from TikTok at scale.

Simply provide a list of **TikTok profile URLs** (e.g., `https://www.tiktok.com/@username`) or plain **usernames** (e.g., `username` or `@username`), and the actor automatically pulls their full public catalog. For every post, you receive granular engagement metrics (views, likes, comments, shares, saves), creator channel stats (followers, total likes, video counts), sound/music info, hashtags, and direct stream/download URLs.

Whether monitoring viral campaigns, building machine learning datasets, or tracking competitor performance — this actor provides clean, structured data in seconds.

***

### 🚀 Why Choose This TikTok Scraper?

| Feature | This Actor | Other Store Actors | Manual Copy-Paste | Official TikTok API |
|---|---|---|---|---|
| **Pricing** | **$3.00 / 1,000 items ($0.10 start)** | $5.00–$15.00 / 1,000 | Free (Hours wasted) | High Enterprise Cost |
| **Pay-Per-Event (Fair Billing)** | ✅ Pay only for scraped items | ❌ Pay for run time/failures | ❌ | ❌ Monthly commitments |
| **No Login / Cookies Needed** | ✅ 100% Session-Free | ⚠️ Frequently breaks | ✅ | ❌ Complex OAuth & vetting |
| **Anti-Bot Challenge Bypass** | ✅ Built-in Cloud Bypass | ⚠️ Often blocked | ❌ Captcha hell | ❌ Restricted access |
| **Engagement Metrics** | ✅ Views, Likes, Comments, Shares, Saves | ⚠️ Often missing saves/views | ❌ Incomplete | ⚠️ Heavily throttled |
| **Multi-Image Carousel Support** | ✅ Full image slideshow URLs | ❌ Video-only | ❌ | ⚠️ Limited |
| **Creator Channel Overview** | ✅ Bio, Followers, Total Likes | ⚠️ Separate run needed | ❌ | ⚠️ Restricted |
| **Export Formats** | ✅ JSON, CSV, Excel, XML | ⚠️ Basic JSON | ❌ Manual entry | ⚠️ Raw API only |

> **Bottom Line:** Most scrapers charge for server uptime even when blocked. This actor uses a transparent **Pay-Per-Result model**: you only pay **$0.003 per valid scraped post**, backed by intelligent cloud anti-bot mitigation and residential proxy support.

***

### ✨ Key Features

- **Profile & Post Ingestion**: Accept full profile URLs or simple `@handles`.
- **Rich Engagement Analytics**: Instant tracking of `views`, `likes`, `comments`, `shares`, and `bookmarks` (saves).
- **Creator Channel Profiling**: Capture follower count, following count, total video count, aggregate heart count, bio, and verified badge.
- **Audio & Music Metadata**: Extract track ID, song title, artist, audio duration, and album artwork.
- **Hashtag & Caption Extraction**: Normalized challenge tags and full unescaped descriptions.
- **Multi-Media Support**: Handles standard video posts as well as TikTok photo carousel slideshows.
- **Subtitles & Closed Captions**: Pulls multi-language auto-generated and original captions (WebVTT).
- **Collab & Location Data**: Scrapes co-creator / collaborator tags and POI geolocation data when available.
- **Flexible Batching & Speed Control**: Configure total max items, per-profile limits, and customizable rate delays.

***

### 🎯 Use Cases

#### 📈 Influencer Marketing & Talent Scouting

- Analyze historical engagement rates (likes, comments, views, saves) before signing creator contracts.
- Filter high-performing creators based on follower-to-view ratios.
- Track brand sponsorship campaigns across multiple TikTok creators simultaneously.

#### 🔍 Competitor Benchmarking & Trend Analysis

- Monitor your competitors' posting frequency, top-performing video hooks, and viral hashtags.
- Identify breakout trends and trending sounds in your niche before they saturate.
- Study content performance benchmarks across different global regions.

#### 🤖 AI & Machine Learning Training Datasets

- Collect thousands of video captions and hashtag clusters for NLP sentiment analysis and trend prediction.
- Build training datasets for video recommendation engines, viral potential predictors, and computer vision models.
- Gather subtitle tracks and audio references for speech recognition and language modeling.

#### 🛍️ E-Commerce & Viral Product Research

- Discover organic trending products and viral review videos on TikTok.
- Analyze customer feedback and comment sentiment on influencer product reviews.
- Automate creative research for TikTok Ads and UGC (User Generated Content) campaigns.

***

### ⚙️ Input Parameters

The actor accepts clean, intuitive input parameters in the Apify Console or via the Apify API:

```json
{
  "usernames": [
    "khaby.lame",
    "@charlidamelio"
  ],
  "startUrls": [
    "https://www.tiktok.com/@mrbeast"
  ],
  "maxItems": 1000,
  "maxPostsPerProfile": 50,
  "delaySeconds": 0.5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

| Parameter | Type | Default | Description |
|---|---|---|---|
| `usernames` | array | `[]` | List of TikTok usernames (with or without `@`). |
| `startUrls` | array | `[]` | List of full TikTok profile URLs (`https://www.tiktok.com/@handle`). |
| `maxItems` | integer | `1000` | Global cap on total items across all profiles in the run. |
| `maxPostsPerProfile` | integer | `null` | Maximum posts to scrape per individual creator profile (leave empty for unlimited). |
| `delaySeconds` | float | `0.5` | Politeness delay between batch requests (recommended: `0.5` to `1.5`). |
| `proxyConfiguration` | object | Residential | Apify Proxy configuration (Residential recommended for high reliability). |

> 💡 **Pro-Tip**: You can mix `usernames` and `startUrls` in the same execution. The scraper automatically deduplicates handles and normalizes URLs.

***

### 📋 Output Fields & Data Schema

Each scraped video or photo post generates a rich, structured record:

| Field Name | Type | Description | Example |
|---|---|---|---|
| `inputSource` | string | The input username or query identifier | `"abisashifa11"` |
| `id` | string | Unique TikTok post ID | `"7685765001113537810"` |
| `title` | string | Clean post caption/description | `"#viral_video #foryoupage❤️❤️"` |
| `views` | integer | Total video view count | `679` |
| `likes` | integer | Total like count (digg count) | `165` |
| `comments` | integer | Total comment count | `13` |
| `shares` | integer | Total share count | `19` |
| `bookmarks` | integer | Total bookmarks/saves count | `25` |
| `hashtags` | array | List of extracted hashtag tags | `["viral_video", "foryoupage"]` |
| `channel` | object | Complete author profile information | *See Channel Object below* |
| `uploadedAt` | integer | Unix timestamp (seconds) | `1757945620` |
| `uploadedAtFormatted` | string | ISO 8601 UTC timestamp | `"2026-09-15T14:13:40.000Z"` |
| `video` | object | Video stream URL, dimensions & covers | *See Video Object below* |
| `images` | array | List of photo slide URLs (for carousel posts) | `[{"url": "...", "width": 1080}]` |
| `song` | object | Soundtrack info (title, artist, cover) | *See Song Object below* |
| `subtitleInformation` | array | Available captions & translations | Subtitle URL & language specs |
| `postPage` | string | Direct web URL to the TikTok post | `"https://www.tiktok.com/@user/video/..."` |
| `collabInfo` | object | Co-creator / collaborator details | Collaborator names & profile links |
| `poi` | object | Geolocation / Point of Interest data | City name, coordinates, address |

#### Nested Objects

##### Channel Object

```json
{
  "id": "71239849201948",
  "name": "Abisa Shifa",
  "username": "abisashifa11",
  "bio": "Official TikTok Creator ✨",
  "avatar": "https://p16-sign-va.tiktokcdn.com/...",
  "verified": false,
  "url": "https://www.tiktok.com/@abisashifa11",
  "followers": 15400,
  "following": 120,
  "videos": 142,
  "likes": 285400
}
```

##### Video Object

```json
{
  "width": 720,
  "height": 1280,
  "ratio": "720p",
  "duration": 15.4,
  "url": "https://v16-webapp-prime.tiktokcdn.com/...",
  "cover": "https://p16-sign-va.tiktokcdn.com/...",
  "thumbnail": "https://p16-sign-va.tiktokcdn.com/..."
}
```

***

### 📦 Example Input & Output

#### Example Input

```json
{
  "usernames": ["abisashifa11"],
  "maxPostsPerProfile": 2,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

#### Example Output

```json
[
  {
    "inputSource": "abisashifa11",
    "id": "7685765001113537810",
    "title": "#viral_video #foryoupage❤️❤️ #tiktokbangladesh",
    "views": 679,
    "likes": 165,
    "comments": 13,
    "shares": 19,
    "bookmarks": 25,
    "hashtags": [
      "viral_video",
      "foryoupage❤️❤️",
      "tiktokbangladesh"
    ],
    "channel": {
      "id": "71239849201948",
      "name": "Abisa Shifa",
      "username": "abisashifa11",
      "bio": "Official TikTok Creator ✨",
      "avatar": "https://p16-sign-va.tiktokcdn.com/avatar.jpeg",
      "verified": false,
      "url": "https://www.tiktok.com/@abisashifa11",
      "followers": 15400,
      "following": 120,
      "videos": 142,
      "likes": 285400
    },
    "uploadedAt": 1757945620,
    "uploadedAtFormatted": "2026-09-15T14:13:40.000Z",
    "video": {
      "width": 720,
      "height": 1280,
      "ratio": "720p",
      "duration": 14.5,
      "url": "https://v16-webapp-prime.tiktokcdn.com/video.mp4",
      "cover": "https://p16-sign-va.tiktokcdn.com/cover.jpeg",
      "thumbnail": "https://p16-sign-va.tiktokcdn.com/thumb.jpeg"
    },
    "song": {
      "id": 718293849102,
      "title": "original sound - Abisa Shifa",
      "artist": "Abisa Shifa",
      "album": null,
      "duration": 15,
      "cover": "https://p16-sign-va.tiktokcdn.com/music.jpeg"
    },
    "subtitleInformation": null,
    "postPage": "https://www.tiktok.com/@abisashifa11/video/7685765001113537810",
    "poi": null
  }
]
```

***

### 💰 Pricing & Pay-Per-Event (PPE)

This actor utilizes Apify's **Pay-Per-Event (PPE)** monetization model to give you the fairest, most predictable pricing available on the Apify Store:

| Metric | Cost | Details |
|---|---|---|
| **Actor Start** | **$0.10** | One-time base initiation fee per run |
| **Per Scraped Result** | **$0.003** ($3.00 / 1,000 items) | Charged ONLY for successfully delivered post records |

#### Why Pay-Per-Event is Better:

- 🛡️ **Zero Waste**: If an invalid username is entered or a profile has zero posts, you are **not** billed for scraped results.
- 🛑 **Budget Safety Limit**: You can set a maximum spending limit (`ACTOR_MAX_TOTAL_CHARGE_USD`) in your Apify settings. The scraper automatically stops when your spending ceiling is reached, preventing accidental overages.
- ⚡ **No Compute Surcharges**: You do not have to worry about long-running proxy latency eating into your compute unit credits.

> 🎁 **Free Trial Available**: Try the actor with Apify's trial tier. Click **Try for free** at the top right to test your target creators without entering credit card details.

***

### ⚡ Performance & Scale

| Profile Size | Post Count | Approx. Duration |
|---|---|---|
| Quick Sample | 10 posts | ~10–20 seconds |
| Moderate Profile | 100 posts | ~1–2 minutes |
| Deep Catalog | 1,000 posts | ~10–15 minutes |
| Massive Batch | 10,000+ posts | Continuous streaming via Apify scheduler |

- **Real-Time Data Streaming**: Results are pushed to the Apify dataset record-by-record. You can monitor live data or consume output via webhooks while the actor runs.
- **Fail-Safe Isolation**: If one profile is private or unavailable, the scraper logs the notice and immediately moves to the next profile in your list.
- **Automated Anti-Bot Defense**: Intelligent session emulation and retry mechanisms keep runs resilient against sudden platform changes.

***

### ❓ FAQ

**Q: Do I need a TikTok account or cookies to use this actor?**\
A: No! The scraper operates completely session-free. You do not need to provide personal cookies or log in with your credentials.

**Q: Can it scrape private TikTok accounts?**\
A: No. TikTok enforces strict privacy rules. Only publicly accessible profiles and videos can be scraped.

**Q: Are the video download URLs permanent?**\
A: TikTok CDN URLs are cryptographically signed and expire after several hours. If you intend to archive the video files, we recommend saving or processing the media URLs immediately after extraction.

**Q: Does it support TikTok photo / image slideshows?**\
A: Yes! When a creator posts a photo carousel instead of a single video, the actor returns the full collection of image URLs in the `images` array with resolutions.

**Q: What proxy should I use?**\
A: Apify Residential Proxies (`RESIDENTIAL`) provide the highest success rate and prevent geo-restrictions or IP blocks when scraping hundreds of creator profiles.

**Q: How do I export my data to Excel or Google Sheets?**\
A: Once the run finishes (or even while it is running), open the **Storage** tab in your Apify Console and click **Export**. You can download your data in JSON, CSV, Excel, XML, or HTML table format with a single click.

***

### 📜 Changelog

#### v1.0.0

- ✅ Full TikTok creator profile catalog extraction
- ✅ Granular engagement metrics: views, likes, comments, shares, and bookmarks
- ✅ Pay-Per-Event (PPE) integration ($3 / 1,000 results with $0.10 start)
- ✅ Anti-bot challenge bypass and automated session management
- ✅ Multi-image photo carousel support
- ✅ Closed captions & WebVTT subtitle metadata
- ✅ Live dataset streaming & budget ceiling protection

***

### ⚖️ Legal & Terms of Use

This actor extracts publicly available data from TikTok in compliance with standard fair-use and web data extraction principles.

- Please use this tool ethically for research, archiving, competitive intelligence, and marketing analysis.
- Respect copyright: ensure you have appropriate rights before republishing or redistributing downloaded media.
- Do not use this tool to harvest personal private information or facilitate harassment.
- The developer assumes no liability for misuse of this tool or violation of third-party terms of service.

***

### 🤝 Support & Feedback

- 🐞 **Found an issue?** Open a ticket via the **Issues** tab on Apify.
- 💡 **Need a custom feature?** Leave a comment in the Apify Community discussions.
- ⭐ **Loving this scraper?** Please leave a 5-star rating on Apify! It helps more users discover this actor.

***

<p align="center">
  <strong>Built with ❤️ for High-Performance Web Scraping on Apify</strong><br/>
  <em>Fast · Reliable · Pay-Per-Result · No Login Required</em><br/><br/>
  <strong>💰 $0.10 Start · $3.00 per 1,000 Scraped Posts</strong>
</p>

# Actor input Schema

## `startUrls` (type: `array`):

List of TikTok profile URLs to scrape. Example: https://www.tiktok.com/@gordonramsayofficial or https://www.tiktok.com/@billieeilish

## `usernames` (type: `array`):

List of TikTok handles or usernames (with or without @). Example: 'nike', 'selenagomez'.

## `maxItems` (type: `integer`):

Total maximum number of video/photo items to scrape across all targeted profiles.

## `maxPostsPerProfile` (type: `integer`):

Maximum number of posts to retrieve from each individual profile. Leave empty to use maxItems.

## `delaySeconds` (type: `number`):

Politeness pause in seconds between fetching pagination pages or switching accounts.

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

Select Apify Proxy (Automatic, Residential, or Custom proxies) for maximum uptime and reliability.

## Actor input object example

```json
{
  "startUrls": [],
  "usernames": [],
  "maxItems": 1000,
  "delaySeconds": 0.5
}
```

# Actor output Schema

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

Collection of extracted TikTok posts including engagement statistics, channel info, HD videos, audio/songs, subtitles, and photo slides.

# 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 = {
    "maxItems": 1000
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapepilot/tiktok-profile-scraper-fast-bulk-video-extractor").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 = { "maxItems": 1000 }

# Run the Actor and wait for it to finish
run = client.actor("scrapepilot/tiktok-profile-scraper-fast-bulk-video-extractor").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 '{
  "maxItems": 1000
}' |
apify call scrapepilot/tiktok-profile-scraper-fast-bulk-video-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapepilot/tiktok-profile-scraper-fast-bulk-video-extractor"
        }
    }
}
```

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/epmGhUWs4E3Y90QOw/builds/EOhqUPnOPw8AbLGZt/openapi.json
