# TikTok Creator Videos Scraper — $0.50 per 1K (`funny_ground/tiktok-creator-videos`) Actor

Export public TikTok creator videos with captions, dates, engagement, hashtags, music, and author data. HTTP-first extraction normally starts no browser or proxy and never uses residential IPs. Just $0.50 per 1,000 videos. A run with 0 valid rows is FAILED.

- **URL**: https://apify.com/funny\_ground/tiktok-creator-videos.md
- **Developed by:** [Coor Yu](https://apify.com/funny_ground) (community)
- **Categories:** Videos, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.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.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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 Creator Videos Scraper — $0.50 per 1K

Export public videos from one or many TikTok creators. Each dataset row includes the caption, publish time, views, likes, comments, shares, saves, hashtags, music, cover image, and creator details.

Use it for creator monitoring, competitor research, content analysis, campaign reporting, or building a searchable video library.

> **Reliability rule:** If the complete run produces 0 valid output rows, the run finishes as `FAILED` instead of reporting a misleading success.

### Ready-to-view example

- [Open the saved creator example](https://apify.com/funny_ground/tiktok-creator-videos/examples/get-latest-mrbeast-tiktok-video)
- [View its real sample output without running the Actor](https://api.apify.com/v2/datasets/funny_ground~example-tiktok-creator-videos/items?clean=true)

The public dataset is a read-only snapshot from a successful example run; rerun the saved example whenever you need the latest creator video.

### Why use this Actor

- Paste usernames, `@handles`, or full profile URLs.
- Export a small recent sample or every available public video.
- HTTP-first extraction normally starts **no browser and no proxy**.
- Failed creators can fall back to a browser restricted to non-residential egress.
- One stable, analysis-ready row per video.

### Affordable pay-per-result pricing

- **$0.0005 per returned video — $0.50 per 1,000 videos.**
- A small start event and normal Apify platform usage may also apply; see the **Pricing** tab.
- Private, deleted, unavailable, and filtered-out videos are not billed as results.

Start with `maxVideos: 10` to validate a creator before requesting the full history.

### Quick start

```json
{
  "creators": [
    "mrbeast",
    "@khaby.lame",
    "https://www.tiktok.com/@zachking"
  ],
  "maxVideos": 50,
  "dataSource": "auto",
  "maxConcurrency": 2
}
```

#### Input options

| Field | Default | What it does |
|---|---:|---|
| `creators` | required | Usernames, `@handles`, or TikTok profile URLs. |
| `maxVideos` | `0` | Maximum videos per creator; `0` requests all available videos. |
| `dataSource` | `auto` | HTTP first; only failed creators use browser fallback. |
| `maxConcurrency` | `2` | Creators processed in parallel. |
| `maxRequestRetries` | `2` | Retries for temporary upstream/browser failures. |
| `requestTimeoutSecs` | `45` | Browser fallback timeout; unused on successful HTTP runs. |
| `proxyConfiguration` | DEFAULT | Browser fallback only; residential groups and custom URLs are ignored. |

Choose `dataSource: "tikwm"` when you want a strict HTTP-only run that can never start a browser or proxy. Choose `browser` only for troubleshooting.

### Output

One row represents one public video:

```json
{
  "id": "7665011704031399198",
  "url": "https://www.tiktok.com/@mrbeast/video/7665011704031399198",
  "text": "Video caption",
  "createTime": "2026-07-21T16:00:27.000Z",
  "createTimeUnix": 1784649627,
  "durationSeconds": 18,
  "cover": "https://...",
  "dynamicCover": "https://...",
  "playCount": 27418815,
  "diggCount": 4197002,
  "commentCount": 88777,
  "shareCount": 915807,
  "collectCount": 173007,
  "hashtags": ["challenge"],
  "music": {
    "id": "7506245595482163217",
    "title": "Simple Life",
    "authorName": "Daniela",
    "isOriginal": false
  },
  "isPinned": false,
  "authorUsername": "mrbeast",
  "authorNickname": "MrBeast",
  "authorId": "6614519312189947909"
}
```

### How the low-cost mode works

The default `auto` mode pages through a lightweight public HTTP source first. Successful creators are written immediately, so Playwright, Chromium, and Apify Proxy are never initialized for normal runs. Only failed creators enter the legacy browser path.

The browser fallback is limited to direct egress or Apify's non-residential `DEFAULT` pool. The Actor ignores residential groups and custom proxy URLs, so it cannot create residential-proxy charges.

### 中文速览

输入 TikTok 用户名或主页链接，即可导出该达人的公开视频、发布时间和完整互动数据。默认先走轻量 HTTP，不启动浏览器或代理；单价为 **每 1,000 条 $0.50**。设置 `dataSource=tikwm` 可严格保证不启动浏览器和代理。

### Limitations and responsible use

- Only public, currently available videos can be returned.
- Counts are snapshots and may change after the run.
- The HTTP fast path depends on an independent public upstream service; `auto` mode provides a non-residential browser fallback.
- Collect and use public data in accordance with applicable laws and platform terms.

### Zero-result policy

A run that produces no valid creator-video rows finishes as `FAILED`. In `auto` mode, a zero-result HTTP response first receives the existing non-residential browser fallback.

# Actor input Schema

## `creators` (type: `array`):

TikTok 达人用户名（可带或不带 @）或主页链接，每行一个。TikTok creator usernames (with or without @) or full profile URLs, one per line.

## `maxVideos` (type: `integer`):

每个达人最多抓取的视频数；填 0 表示抓取全部。Maximum number of videos to scrape per creator. Set 0 to scrape all available videos.

## `dataSource` (type: `string`):

auto（推荐）先走轻量 HTTP，仅失败时使用非住宅浏览器兜底；tikwm 严格 HTTP-only；browser 强制浏览器。Auto tries low-cost HTTP first and starts a non-residential browser only for failed creators.

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

HTTP 主页任务并发数；浏览器兜底也会遵守此上限。HTTP fast path is rate-limited automatically.

## `maxRequestRetries` (type: `integer`):

每个达人失败后的重试次数。默认 2，避免非住宅代理下长时间空跑。Retries per creator. Default 2 avoids long empty runs on non-residential IPs.

## `requestTimeoutSecs` (type: `integer`):

页面导航和关键请求超时秒数。默认 45 秒。Timeout for page navigation and key requests in seconds. Default 45.

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

仅供浏览器兜底使用。住宅代理组和自定义代理会被忽略；默认 HTTP 快速通道不启动代理。Used only by browser fallback. Residential groups and custom URLs are ignored.

## Actor input object example

```json
{
  "creators": [
    "charlidamelio",
    "@khaby.lame",
    "https://www.tiktok.com/@zachking"
  ],
  "maxVideos": 0,
  "dataSource": "auto",
  "maxConcurrency": 2,
  "maxRequestRetries": 2,
  "requestTimeoutSecs": 45,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "creators": [
        "mrbeast"
    ],
    "dataSource": "auto",
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("funny_ground/tiktok-creator-videos").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 = {
    "creators": ["mrbeast"],
    "dataSource": "auto",
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("funny_ground/tiktok-creator-videos").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 '{
  "creators": [
    "mrbeast"
  ],
  "dataSource": "auto",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call funny_ground/tiktok-creator-videos --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/4GuLJ2WxsrXww6mrq/builds/pQXyt9fiikKSykUb8/openapi.json
