# Tiktok Profile Scraper (`scrapio/tiktok-profile-scraper`)

Scrapes public TikTok profiles, capturing usernames, bios, follower counts, following, likes, profile images, and recent video data. Ideal for influencer research, competitor analysis, audience insights, and large-scale TikTok profile intelligence

- **URL**: https://apify.com/scrapio/tiktok-profile-scraper.md
- **Developed by:** [Scrapio](https://apify.com/scrapio) (community)
- **Categories:** Lead generation, Social media, Videos
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$14.99/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period.
You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#rental-actors

# README

### 🧠 TikTok Profile Scraper – Extract Complete TikTok User & Video Data Instantly

The TikTok Profile Scraper is a fast, reliable, and fully automated tool for extracting TikTok profile data, video details, and engagement analytics at scale. Whether you’re a marketer, data analyst, or researcher, this scraper helps you collect real-time TikTok profile and post information — no manual effort, no coding headaches.

Built using modern automation frameworks and available via Apify, Python, and GitHub, the TikTok Profile Scraper gives you instant access to structured data for influencer discovery, competitive research, trend analysis, and brand monitoring.

### 🚀 What Is TikTok Profile Scraper?

The TikTok Profile Scraper is a data extraction tool that collects public information from TikTok profiles and their posted videos. It scans and retrieves:

- 👤 User profile data — name, username, bio, follower/following count, region, and verification status

- 🎥 Video information — captions, hashtags, engagement stats (likes, views, shares, comments)

- 🎵 Music metadata — original sound info, artist name, track URL

- 📅 Timestamp & analytics — post date, duration, and performance metrics

Think of it as your personal TikTok profile scanner, delivering detailed datasets for influencer marketing, content insights, and trend monitoring — all while respecting TikTok’s scraping policy and public data terms.

### ⚙️ How TikTok Profile Scraper Works

You can scrape TikTok profiles using different platforms — including Apify, Python scripts, or GitHub open-source projects like tiktok-scraper.

Here’s how to use the Apify TikTok Profile Scraper online:

1. Create a free Apify account

2. Open the TikTok Profile Scraper actor

3. Add usernames or profile URLs (e.g., @gordonramsayofficial)

4. Click “Start” to extract data

5. Download results as JSON, CSV, or Excel

For developers, the tiktok profile scraper python script or GitHub version provides more flexibility to automate scraping and integrate with APIs or data pipelines.

### 🧩 Input Example (JSON):

```json
{
    "excludePinnedPosts": false,
    "proxyConfiguration": {
        "useApifyProxy": false
    },
    "startUrls": [
        "https://www.tiktok.com/@mrbeast"
    ]
}
```

### 📦 Output Example

```json
{
    "text": "Cooking a pizza with powertools! ",
    "diggCount": 887300,
    "shareCount": 115100,
    "playCount": 17000000,
    "commentCount": 58900,
    "contentType": "video",
    "createTimeISO": "2025-09-23T16:49:52.000Z",
    "webVideoUrl": "https://www.tiktok.com/@mrbeast/video/7553327774983802143",
    "authorMeta.avatar": "https://p16-sign-va.tiktokcdn.com/tos-maliva-avt-0068/1e2348ca19d394037718e3b1d3fc2958~tplv-tiktokx-cropcenter:720:720.jpeg?dr=14579&refresh_token=564c2f30&x-expires=1762513200&x-signature=ZN3mBCfYK2QkJU9gNq2HAYDN94A%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my3",
    "authorMeta.name": "mrbeast",
    "videoMeta.duration": 39,
    "musicMeta.musicName": "original sound",
    "musicMeta.musicAuthor": "MrBeast",
    "musicMeta.musicOriginal": true
  },
  {
    "text": "I just got punched by @Mike Tyson #CaneloCrawford #RiyadhSeason ",
    "diggCount": 998400,
    "shareCount": 78900,
    "playCount": 14800000,
    "commentCount": 37900,
    "contentType": "video",
    "createTimeISO": "2025-09-14T01:43:24.000Z",
    "webVideoUrl": "https://www.tiktok.com/@mrbeast/video/7549754449489595679",
    "authorMeta.avatar": "https://p16-sign-va.tiktokcdn.com/tos-maliva-avt-0068/1e2348ca19d394037718e3b1d3fc2958~tplv-tiktokx-cropcenter:720:720.jpeg?dr=14579&refresh_token=564c2f30&x-expires=1762513200&x-signature=ZN3mBCfYK2QkJU9gNq2HAYDN94A%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=my3",
    "authorMeta.name": "mrbeast",
    "videoMeta.duration": 22,
    "musicMeta.musicName": "original sound",
    "musicMeta.musicAuthor": "MrBeast",
    "musicMeta.musicOriginal": true
  },
```

### 💡 Features of TikTok Profile Scraper

| ⚙️ Feature | 🧾 Description |
| --- | --- |
| Profile Data Extraction | Get complete TikTok profile details (bio, region, verification, followers). |
| Video Analytics | Extract likes, views, shares, and comments for each video. |
| Hashtag & Sound Tracking | Collect hashtags and original sound info for trend research. |
| Batch Processing | Scrape multiple TikTok profiles at once. |
| JSON / CSV Output | Export structured datasets ready for automation tools and dashboards. |
| Python & API Integration | Works with tiktok-scraper libraries, REST APIs, or Apify actors. |
| No Proxy Setup | Runs smoothly online with built-in configuration. |
| 100% Public Data | Complies with TikTok’s public scraping policy — no private data extracted. |

***

### 🧠 Use Cases

#### 🎯 Influencer Marketing

Use the Apify TikTok Profile Scraper or Clockworks TikTok Profile Scraper to discover and evaluate influencers based on engagement metrics, niche, and follower growth.

#### 📈 Competitive Analysis

Compare multiple brand or creator accounts using the TikTok Profile Scraper GitHub version to track performance and posting frequency.

#### 🧬 Data Science & Trend Research

Extract profile datasets using the TikTok Video Scraper Python library to power analytics, sentiment analysis, and AI-driven influencer ranking.

#### 💼 Lead Generation

Find business profiles that include websites or emails in their bios — perfect for B2B outreach or PR campaigns.

***

### 🔍 Technical Details

| Parameter | Type | Description |
| --- | --- | --- |
| usernames | Array | TikTok usernames (without @ symbol) |
| startUrls | Array | Direct TikTok profile URLs |
| maxItems | Number | Limit the number of videos scraped per profile |
| since / until | Date | Filter videos within a time range |
| downloadVideos | Boolean | Optionally download video files |

✅ Tip: For better stability, scrape public profiles with at least 10 videos. Empty or private accounts won’t return data.

***

### ⚙️ Integration Options

- Apify: Use apify-client (Node.js or Python) to automate TikTok scraping workflows

- Python: Use the open-source tiktok-scraper library for full control over scripts

- GitHub: Fork and modify the TikTok Profile Scraper GitHub repository for custom automation

- Zapier / Make / Airbyte: Connect Apify datasets directly to your marketing or analytics stack

***

### ⚡ Comparison: TikTok Profile Scraper Tools

| Tool | Platform | Proxy-Free | Price / 1k Posts | Highlight |
| --- | --- | --- | --- | --- |
| Apify TikTok Profile Scraper | Apify Cloud | ✅ | $0.30 | Scalable, structured JSON export |
| Clockworks TikTok Profile Scraper | Clockworks | ❌ | Variable | Slower but customizable |
| Phantombuster TikTok Profile Scraper | Web App | ✅ | Subscription | Best for browser-based automation |
| TikTok-Scraper (GitHub) | Python / CLI | ✅ | Free | Open-source alternative |

***

### 🧠 TikTok Profile Settings & Scraping Policy

Before scraping, make sure the TikTok profiles are public and adhere to TikTok’s scraping policy.\
This scraper does not collect private information, hidden profile data, or anything behind login restrictions.

TikTok allows programmatic access to publicly visible content — such as bios, usernames, and engagement metrics — when used responsibly for research or marketing analytics.

***

### 🛠 Common Questions (FAQ)

#### 🟣 Can I use TikTok Profile Scraper for free?

Yes! You can use the TikTok Profile Scraper online free via the Apify platform with monthly free credits.

#### 🟣 Can I scrape TikTok profiles without login?

Absolutely. The scraper extracts public data without needing to log in to TikTok.

#### 🟣 Does it work with TikTok Shop or business profiles?

Yes, you can extract all public business or shop profiles, including bio links and product-related content.

#### 🟣 Can I automate scraping daily?

Yes — schedule runs with Apify or use a Python cron job for continuous monitoring.

#### 🟣 What about TikTok profile size or image?

Profile images and video thumbnails are included in the dataset. You can also extract profile picture URLs.

#### 🟣 Can you see if someone screenshots your TikTok profile?

No — TikTok doesn’t notify users if someone takes a screenshot of their profile.\
(Surprising? You’re safe during analysis 😉)

### 🧩 Related TikTok Scrapers

| 🧠 Scraper Type | Description |
| --- | --- |
| TikTok Video Scraper Python | Extracts TikTok videos with captions, likes, and hashtags |
| TikTok Hashtag Scraper | Scrapes videos by hashtag for trend tracking |
| TikTok Comments Scraper | Gathers comments for sentiment analysis |
| TikTok Data Extractor | All-in-one scraper for multi-profile research |

### 🧾 Legal & Ethical Notice

The TikTok Profile Scraper only extracts public data.\
It complies with GDPR and global data ethics standards — no private, restricted, or user-sensitive data is collected.

Always use TikTok scraping responsibly for research, analytics, or marketing purposes within ethical and legal boundaries.

### 💬 Final Thoughts

The TikTok Profile Scraper is your complete solution for extracting TikTok profile and video data — fast, structured, and scalable.\
Whether through Apify, Python, or GitHub, it helps creators, brands, and analysts turn public TikTok data into actionable insights.

# Actor input Schema

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

List of TikTok profile URLs (e.g., https://www.tiktok.com/@username) or usernames (e.g., username or @username). Supports bulk input.

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

Maximum number of videos to scrape per profile.

## `excludePinnedPosts` (type: `boolean`):

Exclude pinned posts from the results.

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

Choose which proxies to use. By default, no proxy is used. If TikTok blocks the request, it will automatically fallback to datacenter proxy, then residential proxy.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.tiktok.com/@mrbeast"
  ],
  "maxResults": 10,
  "excludePinnedPosts": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "startUrls": [
        "https://www.tiktok.com/@mrbeast"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapio/tiktok-profile-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 = {
    "startUrls": ["https://www.tiktok.com/@mrbeast"],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapio/tiktok-profile-scraper").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 '{
  "startUrls": [
    "https://www.tiktok.com/@mrbeast"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call scrapio/tiktok-profile-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Tiktok Profile Scraper",
        "description": "Scrapes public TikTok profiles, capturing usernames, bios, follower counts, following, likes, profile images, and recent video data. Ideal for influencer research, competitor analysis, audience insights, and large-scale TikTok profile intelligence",
        "version": "0.1",
        "x-build-id": "lHJr4o93cRNQP7RLu"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapio~tiktok-profile-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapio-tiktok-profile-scraper",
                "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/scrapio~tiktok-profile-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapio-tiktok-profile-scraper",
                "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/scrapio~tiktok-profile-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapio-tiktok-profile-scraper",
                "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": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "TikTok Profile URLs or Usernames",
                        "type": "array",
                        "description": "List of TikTok profile URLs (e.g., https://www.tiktok.com/@username) or usernames (e.g., username or @username). Supports bulk input.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Maximum Results per Profile",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of videos to scrape per profile.",
                        "default": 10
                    },
                    "excludePinnedPosts": {
                        "title": "Exclude Pinned Posts",
                        "type": "boolean",
                        "description": "Exclude pinned posts from the results.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Choose which proxies to use. By default, no proxy is used. If TikTok blocks the request, it will automatically fallback to datacenter proxy, then residential proxy."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
