# TikTok Profile Scraper (`schnellscrapers/tiktok-profile-snapshot`) Actor

Extract TikTok profile snapshots from usernames or URLs: followers, following, total likes, video count, bio, bio links, verification, commerce flags, account age, and stable IDs. One flat row per public profile, filter before billing, no login or video crawling.

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

## Pricing

from $4.00 / 1,000 profile records

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

### What does TikTok Profile Scraper do?

TikTok Profile Scraper turns a list of public TikTok handles or profile URLs into one flat profile row per account. It returns creator identity, follower and following counts, total likes, video count, bio, bio link, verification, commerce flags, account age, and stable TikTok IDs for influencer research, brand monitoring, and CRM enrichment.

Use it when you already have the accounts to check and need a consistent snapshot. This actor focuses on profile data; it does not crawl recent videos, comments, followers, or media downloads.

### What data can you extract from TikTok profiles?

- Identity — username, display name, user ID, secure user ID, profile URL, and avatar URL
- Reach — follower count, following count, total likes, video count, and friend count
- Bio — public bio text and external bio link
- Account signals — verified, private, organization, commerce, and TikTok Shop seller flags
- Metadata — language, region, account creation time, original input, source URL, and snapshot time

### How to use TikTok Profile Scraper

1. Open the actor and click the Input tab.
2. Add handles such as `mrbeast` or `@charlidamelio`, or paste full TikTok profile URLs.
3. Set the maximum number of profiles and optional follower or verification filters.
4. Click Run and wait for the profile rows to appear in the dataset.
5. Download JSON, CSV, or Excel, or connect the dataset through the Apify API.

### How much does TikTok Profile Scraper cost?

The actor uses pay-per-event pricing at $4.00 per 1,000 profile records. One successful profile row is one billable result; invalid, unavailable, blocked, duplicate, and filtered profiles are not written as results. The free run cap is 100 profile inputs per run. For a lower bill, pass only handles you need and use the follower filters before writing.

### Input

The required `profiles` list accepts bare usernames, @handles, and full public profile URLs in the same run. `maxProfiles` caps unique inputs. Set `minFollowers`, `maxFollowers`, or `verifiedOnly` when you want a focused creator list; these filters are applied before dataset output.

```json
{
  "profiles": [
    "mrbeast",
    "@charlidamelio",
    "https://www.tiktok.com/@tiktok"
  ],
  "maxProfiles": 100,
  "minFollowers": 1000000,
  "maxFollowers": 0,
  "verifiedOnly": false
}
```

### Output

Each dataset item is a flat profile snapshot. Counts are numeric when TikTok returns them, and optional fields that are not present on the public profile are omitted from that row.

```json
{
  "inputValue": "mrbeast",
  "sourceUrl": "https://www.tiktok.com/@mrbeast",
  "profileUrl": "https://www.tiktok.com/@mrbeast",
  "username": "mrbeast",
  "userId": "6614519312189947909",
  "secUid": "MS4wLjABAAAABKjQkOz_IIzXXzEAl_9LGsWhvK-gBnlczwRPXK8EmxAp6K3X0qiaP5_OEqmm0XwG",
  "nickname": "MrBeast",
  "bio": "Checkout My New Book!👇",
  "bioLink": "http://themostdangerousgames.com",
  "avatarUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/avatar.jpeg",
  "followerCount": 138363901,
  "followingCount": 354,
  "heartCount": 1426765154,
  "videoCount": 466,
  "friendCount": 285,
  "verified": true,
  "privateAccount": false,
  "isCommerceUser": false,
  "ttSeller": false,
  "language": "en",
  "accountCreatedAt": "2018-06-20T18:39:36.000Z",
  "scrapedAt": "2026-08-24T00:00:00.000Z"
}
```

### Integrations

Use the default dataset URL in the Apify API, webhooks, scheduled runs, Make, n8n, or Zapier. The same dataset can be downloaded as JSON, CSV, or Excel and loaded into a CRM, spreadsheet, or analytics workflow.

### Related actors

- [YouTube Channel Stats Scraper](https://apify.com/schnellscrapers/youtube-channel-stats-scraper) — snapshot subscriber, view, and video counts for YouTube channels.
- [YouTube Shorts Scraper](https://apify.com/schnellscrapers/youtube-shorts-monitor) — monitor short-form video output from selected channels.

### FAQ

#### How does TikTok Profile Scraper work?

It fetches each public profile page and reads the profile state that TikTok publishes with that page. The actor normalizes that state into the same flat field set for every successful profile.

#### Can I use TikTok Profile Scraper as an API?

Yes. Start a run with the Apify API, then read the default dataset URL returned by the run. The Input and API tabs in the actor console include ready-to-use request details.

#### Can I use TikTok Profile Scraper in Python or Node.js?

Yes. Use the `apify-client` package to start a run and download its dataset.

```js
const run = await apify.actor("schnellscrapers/tiktok-profile-snapshot").call({
  profiles: ["mrbeast", "@charlidamelio"]
});
const rows = await apify.dataset(run.defaultDatasetId).listItems();
```

#### Is it legal to scrape TikTok profile data?

This actor is intended for public profile data. Public profiles can include names, images, bios, and other user-provided information, so you are responsible for having a legitimate use and following the laws and policies that apply to your workflow. Do not use this actor to access private accounts or bypass access controls.

#### What does this actor access?

It accesses the public TikTok profile page for each supplied handle or URL. No TikTok login, session cookie, or API key is required. TikTok can return a downgrade page or omit a field for some accounts; unavailable profiles are skipped and are not written as results.

#### Does it scrape videos or comments?

No. TikTok Profile Scraper is intentionally limited to one profile snapshot per input. Use a video or comments actor when you need content-level records.

### Your feedback

Please report source changes, missing public fields, or useful filter requests through the Issues tab on the actor page. Include a sample input and the run ID when reporting a problem so it can be reproduced.

# Actor input Schema

## `profiles` (type: `array`):

Add TikTok usernames, @handles, or full public profile URLs. Example: `mrbeast`, `@charlidamelio`, or `https://www.tiktok.com/@tiktok`.

## `maxProfiles` (type: `integer`):

Cap the number of unique profile inputs fetched in one run. Keep the default for the free run cap; duplicates and invalid inputs do not create rows.

## `minFollowers` (type: `integer`):

Only write profiles with at least this follower count. Use `0` to disable the lower bound; filtering happens before dataset billing.

## `maxFollowers` (type: `integer`):

Only write profiles at or below this follower count. Use `0` to disable the upper bound; filtering happens before dataset billing.

## `verifiedOnly` (type: `boolean`):

When enabled, write only profiles whose public TikTok card is verified. Leave off to return all public profiles.

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

Apify residential proxy is enabled by default because TikTok may return a downgrade page to direct cloud requests. Disable it only when your network path returns the profile JSON; proxy transfer affects run cost.

## Actor input object example

```json
{
  "profiles": [
    "mrbeast",
    "@charlidamelio"
  ],
  "maxProfiles": 100,
  "minFollowers": 0,
  "maxFollowers": 0,
  "verifiedOnly": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `profiles` (type: `string`):

The default dataset contains username, profile URL, follower count, following count, total likes, video count, bio, verification, commerce flags, account age, and stable TikTok IDs.

# 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 = {
    "profiles": [
        "mrbeast",
        "@charlidamelio"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("schnellscrapers/tiktok-profile-snapshot").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 = { "profiles": [
        "mrbeast",
        "@charlidamelio",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("schnellscrapers/tiktok-profile-snapshot").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 '{
  "profiles": [
    "mrbeast",
    "@charlidamelio"
  ]
}' |
apify call schnellscrapers/tiktok-profile-snapshot --silent --output-dataset

```

## MCP server setup

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

```

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/lpYqYWsgT5eE9c8kp/builds/yjzF8DvEdU10En0x1/openapi.json
