# TikTok Video Data Scraper (`jeremy_frost/tiktok-video-data-scraper`) Actor

Extract TikTok video data at scale with our powerful TikTok Scraper. Get views, likes, hashtags, and more in JSON, CSV, or Excel — perfect for analytics, reports, and dashboards.

- **URL**: https://apify.com/jeremy\_frost/tiktok-video-data-scraper.md
- **Developed by:** [Jeremy Frost](https://apify.com/jeremy_frost) (community)
- **Categories:** AI, Automation, Social media
- **Stats:** 97 total users, 0 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

$25.00/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

## 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 Video Data Scraper do?

This TikTok scraper, a powerful and efficient unofficial TikTok API will give you TikTok data at scale to be used in your own data projects, reports, and as a basis for new applications.
Whether you're analyzing trends, tracking tiktok influencers, this tool gets you the structured TikTok data you need! With this best TikTok Scraper you can
scrape all videos data from a profile with author and music data included.

You can download your results in Excel, HTML, XML, CSV, or JSON to use in your data projects, dashboards, spreadsheets, or custom applications.

### How do I use TikTok Video Data Scraper?

TikTok Video Data Scraper was designed to be easy to use, even for beginners. Here's how to get started:

1. Create a free Apify account. https://console.apify.com/sign-up
2. Open TikTok Video Data Scraper on Apify.
3. Add one or more profile URLs. Example: https://www.tiktok.com/@f1
4. Click **"Start"** and wait for the data extraction to finish.
5. Download your dataset in your preferred format (JSON, CSV, Excel, etc.).

### What TikTok data can I extract?

| Field                  | Description         |
|------------------------|---------------------|
| `url`                 | Video URL  |
| `video_id`                 | Video ID  |
| `title`                 | Video description  |
| `hashtags`                 | Hashtags used in description  |
| `created`                 | Video post date  |
| `plays`                 | Number of views  |
| `diggs`            | Number of likes    |
| `comments`            | Number of comments     |
| `shares`           | Number of shares    |
| `collects`         | Number of collects |
| `duration`         | Length of the video |
| `timestamp`         | Post timestamp |
| `ad`         | Advertised video or not |
| `lang`         | TikTok Video language |
| `music/id`      | Music ID |
| `music/title`      | Title of the music |
| `music/author`      | Music's author |
| `music/duration`      | Music's duration |
| `music/playurl`      | Music PlayURL address |
| `music/original`      | Music original |
| `music/copyright`      | Copyright |
| `music/thumbnail`      | Music thumb |
| `author/id`      | Author profile ID |
| `author/name`      | Author Username |
| `author/nickname`    | Author name |
| `author/signature`    | Author's signature |
| `author/diggs`    | Author diggs |
| `author/followers`    | Author followers|
| `author/followings`    | Author followings |
| `author/hearts`    | Author hearts |
| `author/verified`    | Author verified? |
| `author/private`    | Author private |

### Input

To start TikTok web scraping, simply fill in the input form:

```json
{
    "maxRequestsPerCrawl": 55,
    "startUrls": [
        {
            "url": "https://www.tiktok.com/@f1",
            "method": "GET"
        },
        {
            "url": "https://www.tiktok.com/@checkeredflagedit",
            "method": "GET"
        }
    ]
}
```

**starUrls** - which URLs do you want to scrape
**maxRequestsPerCrawl** - Maximum number of videos to scrape per profile listed in the startUrls

### Output

Once your Apify Actor has completed its execution, all output is automatically saved in a dataset. The size of this dataset will match the number of results you've configured the scraper or automation to collect.

```json
  {
    "video_id": "7508043712040029462",
    "url": "https://www.tiktok.com/@f1/video/7508043712040029462/",
    "title": "charles and lando battled for pole right until the end 😱 #f1 #formula1 #monacogp #landonorris #charlesleclerc #mclaren #ferrari ",
    "author": {
      "id": "6746088991441454085",
      "name": "f1",
      "nickname": "Formula 1",
      "signature": "risk takers, late brakers, history makers\nnext: spain! 🇪🇸 may 30 - june 1",
      "diggs": 682,
      "followers": 11100000,
      "followings": 48,
      "hearts": 507400000,
      "videos": 1866,
      "verified": true,
      "private": false
    },
    "music": {
      "id": "7508043699398953750",
      "title": "original sound",
      "author": "Formula 1",
      "duration": 60,
      "playurl": "https://v16m.tiktokcdn-us.com/1bcc2658f8aa4a76b5da62e9afac741a/683aa4ff/video/tos/no1a/tos-no1a-v-2370-no/ow85t2fgjMsXWqkQAQgAEASexefAfBLgMhNHQD/?a=1233&bti=ODszNWYuMDE6&ch=0&cr=0&dr=0&er=0&lr=default&cd=0%7C0%7C0%7C0&br=250&bt=125&ds=5&ft=GSDrKInz7ThFc8MKXq8Zmo&mime_type=audio_mpeg&qs=13&rc=amZwdHI5cnl4MzMzbzU8NUBpamZwdHI5cnl4MzMzbzU8NUBgZC1nMmRzb2xhLS1kMTFzYSNgZC1nMmRzb2xhLS1kMTFzcw%3D%3D&vvpl=1&l=20250531004211C1F4F446409987229BC3&btag=e00050000",
      "original": true,
      "copyright": false,
      "thumbnail": "https://p16-common-sign-va.tiktokcdn-us.com/tos-maliva-avt-0068/81679768057c8abbfa8c19a5cea5ec89~tplv-tiktokx-cropcenter:100:100.jpeg?dr=9640&refresh_token=089c7a2f&x-expires=1748822400&x-signature=ZOxiL4xXF8JkYEI%2BtDgb6lmruz8%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=useast8"
    },
    "hashtags": "#f1 #formula1 #monacogp #landonorris #charlesleclerc #mclaren #ferrari",
    "created": "2025-05-24 16:04",
    "plays": 825100,
    "duration": 60,
    "diggs": 97500,
    "comments": 548,
    "shares": 1795,
    "collects": 3741,
    "timestamp": 1748102653,
    "ad": false,
    "lang": "en"
  }
```

### 🔍 Seamlessly Integrate TikTok Video Data Scraper with the Apify API

If you're looking to automate data extraction from TikTok, the Apify API offers a powerful way to interact with the platform programmatically. Built on robust RESTful HTTP endpoints, the API enables developers to effortlessly manage, trigger, and monitor Apify actors, including the popular TikTok Scraper.
Through the API, you can perform essential tasks such as:

Running actors on-demand or on a schedule
Accessing and managing datasets
Retrieving scraping results programmatically
Tracking performance metrics
Creating or updating actor versions and configurations

To get started with Node.js, simply install the apify-client package from NPM. Python developers can use the equivalent apify-client module available via PyPI.
📘 Explore the official Apify API documentation to unlock the full potential of the platform. You’ll also find dedicated TikTok Scraper API examples that show you exactly how to implement it in your code.

### Is it legal to scrape public TikTok data using a scraper?

Our TikTok data scrapers are designed with privacy and ethics in mind. They strictly collect publicly available information — meaning they do not access or extract sensitive user details such as email addresses, physical location.

The scraper can only retrieve data that users have intentionally made visible on their TikTok profiles or in public content. Despite this, it's important to understand that the output may still contain personally identifiable information (PII), depending on what the content creators have shared.

Always review and handle scraped data responsibly, especially when it includes any form of user-generated content.

# Actor input Schema

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

Profile URLs to scrape thw videos from.

## `maxRequestsPerCrawl` (type: `integer`):

Maximum number of videos that you want to crawl from a profile.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://tiktok.com/@f1"
    }
  ],
  "maxRequestsPerCrawl": 10
}
```

# 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": [
        {
            "url": "https://tiktok.com/@f1"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("jeremy_frost/tiktok-video-data-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": [{ "url": "https://tiktok.com/@f1" }] }

# Run the Actor and wait for it to finish
run = client.actor("jeremy_frost/tiktok-video-data-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": [
    {
      "url": "https://tiktok.com/@f1"
    }
  ]
}' |
apify call jeremy_frost/tiktok-video-data-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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