# Tiktok Data Extractor Scraper (`scrapio/tiktok-data-extractor-scraper`) Actor

Collect detailed TikTok content automatically—videos, engagement metrics, comments, profiles, and metadata. Great for analysts, marketers, and developers needing structured TikTok datasets for research, reporting, or AI projects.

- **URL**: https://apify.com/scrapio/tiktok-data-extractor-scraper.md
- **Developed by:** [Scrapio](https://apify.com/scrapio) (community)
- **Categories:** Social media, Lead generation, Videos
- **Stats:** 11 total users, 1 monthly users, 100.0% runs succeeded, 0 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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Data Extractor Scraper do?

A TikTok Data Extractor is a powerful automation tool that collects public TikTok data—including videos, accounts, hashtags, sounds, comments, and engagement metrics—quickly and accurately. Whether you're a marketer, researcher, influencer, or data analyst, this scraper helps you turn TikTok data into actionable insights.

Using a TikTok Data Extractor improves SEO research, trend monitoring, competitor analysis, and influencer campaigns. It eliminates manual searching, making TikTok data extraction fast, scalable, and reliable.

Many users search for tools like TikTok data extractor Apify, TikTok data extractor GitHub, and TikTok scraper Python, but using a ready-made scraper ensures clean structure, API-ready exports, and professional results—all without coding.

* * *

### 📊 What TikTok Data Extractor can I extract?

Below is a table of the most common data fields you can pull using the TikTok Data Extractor (including TikTok Video Data Extractor & TikTok Account Data Extractor functions):

  
  

| Data Category | What You Get |
| --- | --- |
| Video Data | Title, description, hashtags, music, video URL, thumbnails, views, likes, comments, shares |
| User/Account Data | Username, nickname, bios, followers, following, verification status |
| Hashtag Insights | Hashtag volume, related hashtags, trending score |
| Music/Sound Data | Sound title, usage count, trending status |
| Comments | Comment text, username, likes, timestamp |
| Discover Page Data | Discover trends, challenges, popular tags |
| Engagement Metrics | CTR signals, engagement rate, average play duration |
| Metadata | Scrape timestamps, video IDs, account IDs |

This coverage ensures you can perform deep TikTok data extraction for analytics, marketing, and content strategy. It also supports users searching for TikTok Discover Scraper, TikTok scraper extension, TikTok discover scraper free, and more.

### 🧭 How to Use TikTok Data Extractor

Follow this simple step-by-step guide to get started:

#### 🪜 Step-by-Step Guide

1.  Log in to Apify  
    – Create a free account or sign in.  
      
    
2.  Select the Actor  
    – Search for “TikTok Data Extractor” (or TikTok Discover Scraper) in the Apify Store.  
      
    
3.  Enter Input Data  
    – Paste your TikTok video URLs, profile URLs, hashtags, or Discover keywords into the startUrls field.  
      
    
4.  Choose Options  
    – Select whether you want full metadata, comments, profiles, or only summary data.  
      
    
5.  Run the Actor 🚀  
    – Click Start and the scraper will begin TikTok data extraction automatically.  
      
    
6.  Download Results  
    – Export your data in JSON, CSV, Excel, or API format.  
      
    

This workflow makes it easy even for users who previously searched for how to open TikTok data file, how to download TikTok data file, or who owns TikTok data.

### 💎 Why Choose Us?

Here’s what makes our TikTok Data Extractor stand out:

*   Enterprise-Grade Reliability 🏆  
    – Built for scale with automatic retries and dynamic adjustments.  
      
    
*   Easy for Beginners, Powerful for Experts  
    – No-code friendly, yet API-ready for developers using TikTok scraper Python or integrating with custom tools.  
      
    
*   Transparent Pricing + Free Tier  
    – Great for users seeking TikTok data extractor free options.  
      
    
*   Regular Updates  
    – Ensures compatibility even when TikTok updates its UI or endpoints.  
      
    
*   Full Customer Support 🤝  
    – We offer documentation, guides, and real-time assistance.  
      
    
*   Flexible Export Formats  
    – Integrates with Zapier, Excel, Sheets, Make, and BI dashboards.  
      
    

* * *

### 📈 How many results can you scrape with TikTok Data Extractor? 

The TikTok Data Extractor is built with high scalability in mind. Whether you want to scrape 10 videos, 1,000 profiles, or 1,000,000 data points, the tool operates smoothly thanks to parallel processing and optimized data flows.

#### ⚡ Scalability Highlights

*   Unlimited URLs — Add as many TikTok video or profile links as you need.  
      
    
*   Keyword/Discover Scraping — Automatically collects hundreds of trending videos per keyword.  
      
    
*   Batch Mode — Upload bulk datasets for large-scale scraping jobs.  
      
    
*   Smart Queueing — Ensures stable performance even with massive workloads.  
      
    

With the TikTok Discover Scraper, you can track real-time trends and retrieve thousands of discover results daily. This helps businesses monitor the platform’s pulse without manual searching.

While tools like TikTok scraper GitHub or TikTok scraper Python can be limited by proxies or rate limits, a managed solution offers dependable and consistent output.

Expect smooth performance for:

*   Large influencer datasets  
      
    
*   Social listening analytics  
      
    
*   Brand monitoring feeds  
      
    
*   High-volume video trend scraping  
      
    

* * *

### ⚖️ Is it legal to scrape TikTok Data?

Scraping public TikTok data is generally legal when done responsibly and ethically. This scraper only collects publicly available information—never private or sensitive data.

#### Important Principles

*   Respect TikTok’s Terms of Service  
      
    
*   Avoid scraping private accounts  
      
    
*   Use data ethically (research, analysis, marketing)  
      
    
*   Comply with regional data laws like GDPR or CCPA  
      
    

Users often ask who owns TikTok data or how to open TikTok data file—the answer is simple: TikTok owns its data, but public data is accessible for analysis as long as it is not misused.

* * *

### 🧩 Input Parameters

#### JSON Example
```json
{
  "excludePinnedPosts": false,
  "hashtags": [
    "travel"
  ],
  "postURLs": [
    "https://www.tiktok.com/@mrbeast/video/7558512477600861471"
  ],
  "profiles": [
    "https://www.tiktok.com/@mrbeast"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "scrapeRelatedVideos": false,
  "resultsPerPage": 50,
  "profileScrapeSections": [
    "videos"
  ],
  "profileSorting": "latest"
}
````

### 📤 Output Format

#### JSON Example

```json
  {
    "id": "7577692239703313695",
    "text": "coziest spa experiences at the 2-Michelin key resort @Alila Ventana Big Sur 🫶 #sanfranciscolife #sfbayarea #bigsur #californiaadventure #bucketlisttravel ",
    "createTime": 1764318998,
    "createTimeISO": "2025-11-28T08:36:38Z",
    "isAd": false,
    "isMuted": false,
    "authorMeta": {
      "id": "7231354007063462958",
      "name": "janeethefoodie",
      "nickName": "Jane 🥂",
      "verified": false,
      "signature": "just a sf bay area girl opinionated\nabout her food & travels ♡\nig janeethefoodie",
      "bioLink": null,
      "avatar": "https://p16-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/7231354559434604590~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=9640&refresh_token=e609ad26&x-expires=1767967200&x-signature=%2FMApYGM2X5z9INLQtZSm42LvA3U%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=useast5",
      "privateAccount": false,
      "ttSeller": false,
      "following": 16,
      "fans": 5305,
      "heart": 869200,
      "video": 212,
      "digg": 6
    },
    "musicMeta": {
      "musicName": "Glisten by the Wind",
      "musicAuthor": "nick leng",
      "musicOriginal": true,
      "musicAlbum": "",
      "playUrl": "https://v19.tiktokcdn-us.com/011efe64f8bfd69bb3f0c9fa5e279bf5/695ec562/video/tos/useast5/tos-useast5-v-27dcd7-tx/3fb7c32ff05e48a8b78f7645d3e34cc6/?a=1233&bti=ODszNWYuMDE6&ch=0&cr=0&dr=0&er=0&lr=default&cd=0%7C0%7C0%7C0&br=248&bt=124&ds=5&ft=GSDrKInz7ThqKCDPXq8Zmo&mime_type=audio_mp4&qs=13&rc=M3dmbDs6ZjRvOzMzZzU8NEBpM3dmbDs6ZjRvOzMzZzU8NEAvLS1ocjQwNDFgLS1kMS9zYSMvLS1ocjQwNDFgLS1kMS9zcw%3D%3D&vvpl=1&l=2026010714423578D2393AC11FC101AA38&btag=e00048000",
      "coverMediumUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/7352431366337724462~tplv-tiktokx-cropcenter:720:720.jpeg?dr=9640&refresh_token=ecf68512&x-expires=1767967200&x-signature=6m5lc7trWr2f21YzBOa8%2BUHXB08%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=useast5",
      "musicId": "7064269301305576238"
    },
    "webVideoUrl": "https://www.tiktok.com/@janeethefoodie/video/7577692239703313695",
    "mediaUrls": [
      "https://v16-webapp-prime.us.tiktok.com/video/tos/useast8/tos-useast8-ve-0068c002-tx2/oEiuPXkSlQyEBIACdkAsaEFPVxGEJIBRphiyx/?a=1988&bti=ODszNWYuMDE6&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C&cv=1&br=6480&bt=3240&cs=0&ds=3&ft=aEeq8qT0mIoPD12wTrds3wU4EoAbMeF~O5&mime_type=video_mp4&qs=0&rc=aTxoNjozaTo7NjU3Nmc0PEBpajlqZmw5cjRvNzMzaTczNEAtMy9gLy9jNWMxMTQxMjMvYSMvNWBmMmQ0b2hhLS1kMTJzcw%3D%3D&btag=e000b0000&expire=1767969763&l=2026010714423578D2393AC11FC101AA38&ply_type=2&policy=2&signature=f29d213d48da32d03039713b31b4f817&tk=tt_chain_token",
      "https://v19-webapp-prime.us.tiktok.com/video/tos/useast8/tos-useast8-ve-0068c002-tx2/oEiuPXkSlQyEBIACdkAsaEFPVxGEJIBRphiyx/?a=1988&bti=ODszNWYuMDE6&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C&cv=1&br=6480&bt=3240&cs=0&ds=3&ft=aEeq8qT0mIoPD12wTrds3wU4EoAbMeF~O5&mime_type=video_mp4&qs=0&rc=aTxoNjozaTo7NjU3Nmc0PEBpajlqZmw5cjRvNzMzaTczNEAtMy9gLy9jNWMxMTQxMjMvYSMvNWBmMmQ0b2hhLS1kMTJzcw%3D%3D&btag=e000b0000&expire=1767969763&l=2026010714423578D2393AC11FC101AA38&ply_type=2&policy=2&signature=f29d213d48da32d03039713b31b4f817&tk=tt_chain_token",
      "https://www.tiktok.com/aweme/v1/play/?faid=1988&file_id=29615d43744243f887ff2027c32e690f&is_play_url=1&item_id=7577692239703313695&line=0&ply_type=2&signaturev3=dmlkZW9faWQ7ZmlsZV9pZDtpdGVtX2lkLjAxYzc1MzI0ZTZjYmFhNjVjNmI0NjIzZjBlMDVkMTQ5&tk=tt_chain_token&video_id=v15044gf0000d4klr17og65iiccg862g",
      "https://v16-webapp-prime.us.tiktok.com/video/tos/useast8/tos-useast8-pve-0068-tx2/oAfEGMjpVpjfQAEdvIIFJEGDBHFKKIRS2lVAgE/?a=1988&bti=ODszNWYuMDE6&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C&cv=1&br=5944&bt=2972&cs=0&ds=6&ft=aEeq8qT0mIoPD12wTrds3wU4EoAbMeF~O5&mime_type=video_mp4&qs=0&rc=NjQ8Mzs6ZzRoOGlmZzNpNkBpajlqZmw5cjRvNzMzaTczNEBfNmM0LTMxXzMxNTZhLjUvYSMvNWBmMmQ0b2hhLS1kMTJzcw%3D%3D&btag=e000b0000&expire=1767969763&l=2026010714423578D2393AC11FC101AA38&ply_type=2&policy=2&signature=314a703a70b8b7dcadc35deb9095210e&tk=tt_chain_token",
      "https://v19-webapp-prime.us.tiktok.com/video/tos/useast8/tos-useast8-pve-0068-tx2/oAfEGMjpVpjfQAEdvIIFJEGDBHFKKIRS2lVAgE/?a=1988&bti=ODszNWYuMDE6&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C&cv=1&br=5944&bt=2972&cs=0&ds=6&ft=aEeq8qT0mIoPD12wTrds3wU4EoAbMeF~O5&mime_type=video_mp4&qs=0&rc=NjQ8Mzs6ZzRoOGlmZzNpNkBpajlqZmw5cjRvNzMzaTczNEBfNmM0LTMxXzMxNTZhLjUvYSMvNWBmMmQ0b2hhLS1kMTJzcw%3D%3D&btag=e000b0000&expire=1767969763&l=2026010714423578D2393AC11FC101AA38&ply_type=2&policy=2&signature=314a703a70b8b7dcadc35deb9095210e&tk=tt_chain_token",
      "https://www.tiktok.com/aweme/v1/play/?faid=1988&file_id=238f10dd9c8f456eb14d670870f991b3&is_play_url=1&item_id=7577692239703313695&line=0&ply_type=2&signaturev3=dmlkZW9faWQ7ZmlsZV9pZDtpdGVtX2lkLmY0NmM3YzdhOGM1NTM0N2U0Y2I0MzhkYjgzODNkYjEz&tk=tt_chain_token&video_id=v15044gf0000d4klr17og65iiccg862g",
      "https://v16-webapp-prime.us.tiktok.com/video/tos/useast8/tos-useast8-ve-0068c004-tx2/oklYIJSIjqGeQsZUvAArvReUgATSQKG0OJeILC/?a=1988&bti=ODszNWYuMDE6&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C&cv=1&br=5792&bt=2896&cs=2&ds=4&ft=aEeq8qT0mIoPD12wTrds3wU4EoAbMeF~O5&mime_type=video_mp4&qs=15&rc=OjQ4NDkzOzRoZDZlPGc2OEBpajlqZmw5cjRvNzMzaTczNEAuMS8yMjIuNl4xMi8xNDQyYSMvNWBmMmQ0b2hhLS1kMTJzcw%3D%3D&btag=e000b0000&expire=1767969763&l=2026010714423578D2393AC11FC101AA38&ply_type=2&policy=2&signature=b23ae627fd4aa100aafa7cd576550bd0&tk=tt_chain_token",
      "https://v19-webapp-prime.us.tiktok.com/video/tos/useast8/tos-useast8-ve-0068c004-tx2/oklYIJSIjqGeQsZUvAArvReUgATSQKG0OJeILC/?a=1988&bti=ODszNWYuMDE6&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C&cv=1&br=5792&bt=2896&cs=2&ds=4&ft=aEeq8qT0mIoPD12wTrds3wU4EoAbMeF~O5&mime_type=video_mp4&qs=15&rc=OjQ4NDkzOzRoZDZlPGc2OEBpajlqZmw5cjRvNzMzaTczNEAuMS8yMjIuNl4xMi8xNDQyYSMvNWBmMmQ0b2hhLS1kMTJzcw%3D%3D&btag=e000b0000&expire=1767969763&l=2026010714423578D2393AC11FC101AA38&ply_type=2&policy=2&signature=b23ae627fd4aa100aafa7cd576550bd0&tk=tt_chain_token",
      "https://www.tiktok.com/aweme/v1/play/?faid=1988&file_id=55737d492b534aae9118505651254117&is_play_url=1&item_id=7577692239703313695&line=0&ply_type=2&signaturev3=dmlkZW9faWQ7ZmlsZV9pZDtpdGVtX2lkLmM5MDY5MGI4NzM3ZmZjMjNjYWRhYTE1NjlkYTRmNTNk&tk=tt_chain_token&video_id=v15044gf0000d4klr17og65iiccg862g",
      "https://v16-webapp-prime.us.tiktok.com/video/tos/useast8/tos-useast8-pve-0068-tx2/oUapPABG2IASkBVkTviEdigQEEXxBh7RlUyFb/?a=1988&bti=ODszNWYuMDE6&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C&cv=1&br=3330&bt=1665&cs=2&ds=3&ft=aEeq8qT0mIoPD12wTrds3wU4EoAbMeF~O5&mime_type=video_mp4&qs=14&rc=M2VoZTw8Nmg4NTY8ZGdmZUBpajlqZmw5cjRvNzMzaTczNEAuMDNjYzU0NTExNjMxXjU0YSMvNWBmMmQ0b2hhLS1kMTJzcw%3D%3D&btag=e000b0000&expire=1767969763&l=2026010714423578D2393AC11FC101AA38&ply_type=2&policy=2&signature=ebd7edff9b595a4250365d0a964fe302&tk=tt_chain_token",
      "https://v19-webapp-prime.us.tiktok.com/video/tos/useast8/tos-useast8-pve-0068-tx2/oUapPABG2IASkBVkTviEdigQEEXxBh7RlUyFb/?a=1988&bti=ODszNWYuMDE6&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C&cv=1&br=3330&bt=1665&cs=2&ds=3&ft=aEeq8qT0mIoPD12wTrds3wU4EoAbMeF~O5&mime_type=video_mp4&qs=14&rc=M2VoZTw8Nmg4NTY8ZGdmZUBpajlqZmw5cjRvNzMzaTczNEAuMDNjYzU0NTExNjMxXjU0YSMvNWBmMmQ0b2hhLS1kMTJzcw%3D%3D&btag=e000b0000&expire=1767969763&l=2026010714423578D2393AC11FC101AA38&ply_type=2&policy=2&signature=ebd7edff9b595a4250365d0a964fe302&tk=tt_chain_token",
      "https://www.tiktok.com/aweme/v1/play/?faid=1988&file_id=7b8cad4a699342458e7389f9fb6e3b10&is_play_url=1&item_id=7577692239703313695&line=0&ply_type=2&signaturev3=dmlkZW9faWQ7ZmlsZV9pZDtpdGVtX2lkLmZlNzc4ZTY5NmE5MTQ1NDVkMWQ4YThkZWVlYzViNGM4&tk=tt_chain_token&video_id=v15044gf0000d4klr17og65iiccg862g",
      "https://v16-webapp-prime.us.tiktok.com/video/tos/useast8/tos-useast8-pve-0068-tx2/oEfjEIfDVQlgRIpEJvAK5KMVSBqAYE2PFgCEIA/?a=1988&bti=ODszNWYuMDE6&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C&cv=1&br=2618&bt=1309&cs=2&ds=6&ft=aEeq8qT0mIoPD12wTrds3wU4EoAbMeF~O5&mime_type=video_mp4&qs=11&rc=OTY3ZDNpZDU3ZGVpNTdmPEBpajlqZmw5cjRvNzMzaTczNEBgYTJgXzBeXjQxLl4zYF8vYSMvNWBmMmQ0b2hhLS1kMTJzcw%3D%3D&btag=e000b0000&expire=1767969763&l=2026010714423578D2393AC11FC101AA38&ply_type=2&policy=2&signature=e5f4d35e6b63d4e9dce9fb8e5210fcc6&tk=tt_chain_token",
      "https://v19-webapp-prime.us.tiktok.com/video/tos/useast8/tos-useast8-pve-0068-tx2/oEfjEIfDVQlgRIpEJvAK5KMVSBqAYE2PFgCEIA/?a=1988&bti=ODszNWYuMDE6&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C&cv=1&br=2618&bt=1309&cs=2&ds=6&ft=aEeq8qT0mIoPD12wTrds3wU4EoAbMeF~O5&mime_type=video_mp4&qs=11&rc=OTY3ZDNpZDU3ZGVpNTdmPEBpajlqZmw5cjRvNzMzaTczNEBgYTJgXzBeXjQxLl4zYF8vYSMvNWBmMmQ0b2hhLS1kMTJzcw%3D%3D&btag=e000b0000&expire=1767969763&l=2026010714423578D2393AC11FC101AA38&ply_type=2&policy=2&signature=e5f4d35e6b63d4e9dce9fb8e5210fcc6&tk=tt_chain_token",
      "https://www.tiktok.com/aweme/v1/play/?faid=1988&file_id=29bcc462af1b4a74a2aa3fb0ca54d3c6&is_play_url=1&item_id=7577692239703313695&line=0&ply_type=2&signaturev3=dmlkZW9faWQ7ZmlsZV9pZDtpdGVtX2lkLjQzMzMzMDRhZTM1NGMyYTZlYjYyYWIwMWU0OTE1OGQ5&tk=tt_chain_token&video_id=v15044gf0000d4klr17og65iiccg862g",
      "https://v16-webapp-prime.us.tiktok.com/video/tos/useast8/tos-useast8-ve-0068c004-tx2/okhSapBuGEpVMExBXlEPAxkyiRAo2kLqdxiFI/?a=1988&bti=ODszNWYuMDE6&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C&cv=1&br=1706&bt=853&cs=0&ds=6&ft=aEeq8qT0mIoPD12wTrds3wU4EoAbMeF~O5&mime_type=video_mp4&qs=5&rc=OzszZjM0aGY0NDszNzdlOUBpajlqZmw5cjRvNzMzaTczNEAvMS8uLTBhXmExY14tMV4zYSMvNWBmMmQ0b2hhLS1kMTJzcw%3D%3D&btag=e000b0000&expire=1767969763&l=2026010714423578D2393AC11FC101AA38&ply_type=2&policy=2&signature=6cdad0ddb3490ede5fbe249f7e752392&tk=tt_chain_token",
      "https://v19-webapp-prime.us.tiktok.com/video/tos/useast8/tos-useast8-ve-0068c004-tx2/okhSapBuGEpVMExBXlEPAxkyiRAo2kLqdxiFI/?a=1988&bti=ODszNWYuMDE6&ch=0&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C&cv=1&br=1706&bt=853&cs=0&ds=6&ft=aEeq8qT0mIoPD12wTrds3wU4EoAbMeF~O5&mime_type=video_mp4&qs=5&rc=OzszZjM0aGY0NDszNzdlOUBpajlqZmw5cjRvNzMzaTczNEAvMS8uLTBhXmExY14tMV4zYSMvNWBmMmQ0b2hhLS1kMTJzcw%3D%3D&btag=e000b0000&expire=1767969763&l=2026010714423578D2393AC11FC101AA38&ply_type=2&policy=2&signature=6cdad0ddb3490ede5fbe249f7e752392&tk=tt_chain_token",
      "https://www.tiktok.com/aweme/v1/play/?faid=1988&file_id=66ab4404a0f841d1acde31001c204828&is_play_url=1&item_id=7577692239703313695&line=0&ply_type=2&signaturev3=dmlkZW9faWQ7ZmlsZV9pZDtpdGVtX2lkLmUxOWFlNDIyZDZlOWI2MjNhMjIyNjBmMzczZWYzOGU3&tk=tt_chain_token&video_id=v15044gf0000d4klr17og65iiccg862g"
    ],
    "videoMeta": {
      "height": 1280,
      "width": 720,
      "duration": 7,
      "coverUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/okBFEBExRypx2cCldBkXGkAViXaP6hAkdiSIE~tplv-tiktokx-origin.image?dr=9636&x-expires=1767967200&x-signature=Ryerd%2BNuS4EEg5jLt6bZ%2BxHeZHE%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=useast5",
      "originalCoverUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/oQpRDEAIQJpEI9EiQBScMVF1jKKDvEfVleA62E~tplv-tiktokx-origin.image?dr=9636&x-expires=1767967200&x-signature=4N6FVw82u%2BZileUJi2MVN2VLSrE%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=useast5",
      "definition": "720p",
      "format": "mp4",
      "originalDownloadAddr": "",
      "downloadAddr": ""
    },
    "diggCount": 127900,
    "shareCount": 18500,
    "playCount": 1200000,
    "collectCount": 36000,
    "commentCount": 201,
    "mentions": [],
    "hashtags": [
      {
        "name": "sanfranciscolife"
      },
      {
        "name": "sfbayarea"
      },
      {
        "name": "bigsur"
      },
      {
        "name": "californiaadventure"
      },
      {
        "name": "bucketlisttravel"
      }
    ],
    "sourceType": "hashtag",
    "hashtag": "travel"
  },
```

### ❓ FAQ

#### 1. Is the TikTok Data Extractor free?

Yes! A free tier is available for small jobs.

#### 2. Can I scrape TikTok Discover trends?

Absolutely — this tool works as a TikTok Discover Scraper.

#### 3. Do I need coding skills?

No coding needed. Works instantly.

#### 4. Can developers integrate it with Python?

Yes! API-friendly, perfect for TikTok scraper Python users.

#### 5. Is scraping TikTok legal?

Public data scraping is generally allowed when used ethically.

#### 6. Can I scrape TikTok accounts?

Yes — use it as a TikTok account data extractor.

#### 7. How do I download TikTok data files?

Export results in JSON, CSV, or Excel from your Apify run.

#### 8. Does it work for bulk URLs?

Yes — you can scrape thousands of links at once.

### 🏁 Conclusion

The TikTok Data Extractor is the ultimate solution for fast, accurate, and scalable TikTok data extraction. Whether you're analyzing trends, researching competitors, or running influencer campaigns, this tool delivers clean, reliable insights. Perfect for marketers, analysts, and creators who want smarter, data-driven decisions. 🚀

# Actor input Schema

## `hashtags` (type: `array`):

Just add one or more TikTok hashtags and the scraper will collect data about videos containing this hashtag: likes, users, followers and more. You can enter the hashtags one by one, or use the Bulk edit section to add a prepared list.

## `resultsPerPage` (type: `integer`):

Add the number of tiktoks you want to scrape per hashtag or profile. Also used as: max video results per keyword search and max related videos per input video URL.

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

Alternatively, add one or multiple TikTok usernames whose videos and profile data you want to scrape. Don't forget to fill out the 💯 Number of videos you want to scrape in the section above.

## `profileScrapeSections` (type: `array`):

If a profile has reposted videos, you can scrape them by selecting 'Reposts'

## `profileSorting` (type: `string`):

Select Latest to scrape the most recent videos first, Oldest - the oldest videos first, Popular - the most popular videos first. Date filters only work with Latest and Oldest. Only supported for Videos section

## `oldestPostDateUnified` (type: `string`):

Use Absolute tab for specific dates (YYYY-MM-DD) or Relative tab for days ago (e.g., 7 for last 7 days)

## `newestPostDate` (type: `string`):

Use Absolute tab for specific dates (YYYY-MM-DD) or Relative tab for days ago (e.g., 0 for today)

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

Tick to exclude pinned posts from profiles. Pinned posts are usually the first videos on a profile's page.

## `postURLs` (type: `array`):

Add the URLs of tiktok videos you want to scrape. You can paste video URLs one by one, or use the Bulk edit section to add a prepared list.

## `scrapeRelatedVideos` (type: `boolean`):

If enabled, for every provided video URL the actor will also collect 'related' videos visible on the page (up to the Number of videos setting).

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

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

## Actor input object example

```json
{
  "hashtags": [
    "travel"
  ],
  "resultsPerPage": 50,
  "profiles": [
    "https://www.tiktok.com/@mrbeast"
  ],
  "profileScrapeSections": [
    "videos"
  ],
  "profileSorting": "latest",
  "excludePinnedPosts": false,
  "postURLs": [
    "https://www.tiktok.com/@mrbeast/video/7558512477600861471"
  ],
  "scrapeRelatedVideos": 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 = {
    "hashtags": [
        "travel"
    ],
    "profiles": [
        "https://www.tiktok.com/@mrbeast"
    ],
    "postURLs": [
        "https://www.tiktok.com/@mrbeast/video/7558512477600861471"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

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

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Tiktok Data Extractor Scraper",
        "description": "Collect detailed TikTok content automatically—videos, engagement metrics, comments, profiles, and metadata. Great for analysts, marketers, and developers needing structured TikTok datasets for research, reporting, or AI projects.",
        "version": "0.1",
        "x-build-id": "oad6Nm6eyqTDM7rQP"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapio~tiktok-data-extractor-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapio-tiktok-data-extractor-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-data-extractor-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapio-tiktok-data-extractor-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-data-extractor-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapio-tiktok-data-extractor-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",
                "properties": {
                    "hashtags": {
                        "title": "#️⃣ Videos with this hashtag",
                        "type": "array",
                        "description": "Just add one or more TikTok hashtags and the scraper will collect data about videos containing this hashtag: likes, users, followers and more. You can enter the hashtags one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "resultsPerPage": {
                        "title": "💯 Number of videos per hashtag, profile, search, or related",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Add the number of tiktoks you want to scrape per hashtag or profile. Also used as: max video results per keyword search and max related videos per input video URL.",
                        "default": 50
                    },
                    "profiles": {
                        "title": "😎 Profiles",
                        "type": "array",
                        "description": "Alternatively, add one or multiple TikTok usernames whose videos and profile data you want to scrape. Don't forget to fill out the 💯 Number of videos you want to scrape in the section above.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "profileScrapeSections": {
                        "title": "Profile sections to scrape",
                        "type": "array",
                        "description": "If a profile has reposted videos, you can scrape them by selecting 'Reposts'",
                        "items": {
                            "type": "string",
                            "enum": [
                                "videos",
                                "reposts"
                            ]
                        },
                        "default": [
                            "videos"
                        ]
                    },
                    "profileSorting": {
                        "title": "Profile video sorting",
                        "enum": [
                            "latest",
                            "popular",
                            "oldest"
                        ],
                        "type": "string",
                        "description": "Select Latest to scrape the most recent videos first, Oldest - the oldest videos first, Popular - the most popular videos first. Date filters only work with Latest and Oldest. Only supported for Videos section",
                        "default": "latest"
                    },
                    "oldestPostDateUnified": {
                        "title": "Scrape profile videos published after [date]",
                        "type": "string",
                        "description": "Use Absolute tab for specific dates (YYYY-MM-DD) or Relative tab for days ago (e.g., 7 for last 7 days)"
                    },
                    "newestPostDate": {
                        "title": "Scrape videos published before [date]",
                        "type": "string",
                        "description": "Use Absolute tab for specific dates (YYYY-MM-DD) or Relative tab for days ago (e.g., 0 for today)"
                    },
                    "excludePinnedPosts": {
                        "title": "Exclude pinned posts",
                        "type": "boolean",
                        "description": "Tick to exclude pinned posts from profiles. Pinned posts are usually the first videos on a profile's page.",
                        "default": false
                    },
                    "postURLs": {
                        "title": "🔗 Video URLs",
                        "type": "array",
                        "description": "Add the URLs of tiktok videos you want to scrape. You can paste video URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "scrapeRelatedVideos": {
                        "title": "Include related videos for each URL",
                        "type": "boolean",
                        "description": "If enabled, for every provided video URL the actor will also collect 'related' videos visible on the page (up to the Number of videos setting).",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Choose which proxies to use. By default, no proxy is used. If TikTok rejects or blocks the request, the actor will automatically fallback to datacenter proxy, then residential proxy if needed."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
