# TikTok Scraper: Shop, Emails & Influencer Leads (`intelscrape/tiktok-scraper-shop-emails-influencer-leads`) Actor

The most advanced TikTok Scraper on Apify. Bypass captchas to instantly extract TikTok videos, hashtags, profiles, and trending TikTok Shop products. Features a built-in B2B engine to automatically scrape verified influencer emails, Instagram handles, and calculate Virality & Engagement metrics.

- **URL**: https://apify.com/intelscrape/tiktok-scraper-shop-emails-influencer-leads.md
- **Developed by:** [IntelScrape](https://apify.com/intelscrape) (community)
- **Categories:** AI, Social media, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## 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

## TikTok Scraper & Data Extractor

Extract data from TikTok videos, hashtags, profiles, and search queries. Get **likes, shares, comments, plays, author info, music metadata, video URLs**, and more — all via TikTok's internal API for maximum reliability.

### What does it do?

- Scrape videos by **hashtag** (#fyp, #viral, #tiktok)
- Extract all posts from **user profiles** with sorting (latest, oldest, popular)
- **Search TikTok** by keyword and filter by videos or profiles
- Scrape specific **video URLs** for full metadata
- **Download** TikTok videos and cover images
- Filter by **date range** and **popularity** (min/max likes)
- Pay-per-result pricing — you only pay for data returned

### What data can you get?

| Data Point | Description |
|-----------|-------------|
| 👤 Author profile | Name, nickname, bio, avatar, followers, following, hearts |
| ▶️ Video stats | Plays, likes, shares, comments, collects |
| 🎵 Music metadata | Song name, author, original sound flag, play URL |
| 📹 Video metadata | Duration, resolution, cover image, download URL |
| 🏷️ Hashtags | All hashtags used in the video |
| 📝 Description | Full video caption text |
| 📍 Mentions | All @mentioned users |
| 📌 Flags | Pinned, sponsored, ad, slideshow detection |
| 🕐 Timestamps | Creation time (Unix + ISO format) |

### How to use

1. Open the **Input** tab
2. Add hashtags, usernames, search queries, or video URLs
3. Set how many results you want per input
4. Click **Start**
5. Download results as JSON, CSV, Excel, or HTML

### Input options

#### Hashtags
Add TikTok hashtags to scrape videos. Example: `fyp`, `viral`, `cooking`

#### Profiles
Add TikTok usernames to scrape their videos. Example: `charlidamelio`, `khaby.lame`

#### Search
Enter keywords to search TikTok. Filter by Top, Videos only, or Profiles only.

#### Video URLs
Paste specific TikTok video URLs for full metadata extraction.

#### Filters
- **Date range**: Only scrape videos between specific dates
- **Popularity**: Set min/max likes to filter results

### Sample output

```json
{
  "id": "7543693751290481942",
  "text": "ootd ☁️ #foruyou #outfit #viral",
  "createTimeISO": "2025-08-28T17:44:35.000Z",
  "isAd": false,
  "authorMeta": {
    "name": "fashionista",
    "nickName": "Fashion Daily",
    "verified": false,
    "fans": 51200,
    "heart": 3000000
  },
  "musicMeta": {
    "musicName": "original sound",
    "musicAuthor": "DJ Mix",
    "musicOriginal": true
  },
  "webVideoUrl": "https://www.tiktok.com/@fashionista/video/7543693751290481942",
  "videoMeta": {
    "duration": 15,
    "format": "mp4"
  },
  "diggCount": 23400,
  "shareCount": 145,
  "playCount": 145900,
  "commentCount": 46,
  "hashtags": [
    { "name": "foruyou" },
    { "name": "outfit" },
    { "name": "viral" }
  ],
  "isSlideshow": false,
  "isPinned": false
}
````

### 💰 How to Make Money (The "TikTokMadeMeBuyIt" Technique)

This scraper is specifically optimized for **eCommerce product research and dropshipping**. Here is the exact playbook our top users use to find winning products:

1. **Find viral products:** Enter hashtags like `#tiktokmademebuyit`, `#amazonfinds`, or `#musthaves` in the input.
2. **Filter for high engagement:** Set the **Video Search Sorting** to `Most liked` and set the **Search date filter** to `This month` or `This week`.
3. **Extract TikTok Shop Links:** Keep the **"Extract TikTok Shop Links"** enterprise feature enabled. The scraper will automatically pull the actual product links (Anchors) attached to the viral videos.
4. **Sort by Virality:** Download your results to Excel/CSV and sort by the calculated `viralityScore` or `engagementRate`. This highlights videos that went incredibly viral relative to the creator's small audience — the holy grail of product research.
5. **Source & Sell:** You now have a list of hyper-viral, trending products and the direct links to where they are being sold. Source them on Alibaba/AliExpress and launch your own store.

### Use cases

- 💸 **Dropshipping Product Research** — find trending products via #tiktokmademebuyit
- 🎯 **Influencer research** — find creators by niche, engagement, and follower count
- 🏪 **eCommerce intelligence** — discover trending products on TikTok Shop
- 📊 **Competitor monitoring** — track what content your competitors post
- 🔬 **Academic research** — collect data for social media studies
- 📋 **Marketing leads** — build outreach lists of active creators

### Pricing

Pay-per-result — **from $1.50 / 1,000 results**. You only pay for data returned. No charge for failed extractions.

### Error handling

When the scraper can't retrieve data (private profile, deleted video), it returns a structured error item:

```json
{
  "input": "someuser",
  "error": "Profile is private",
  "errorCode": "PROFILE_PRIVATE"
}
```

### Support

Maintained by **IntelScrape**. Open an issue on the **Issues** tab for help.

# Actor input Schema

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

💡 TIP: For product research, use tags like 'tiktokmademebuyit', 'amazonfinds', or 'viralproducts'. The scraper will extract TikTok Shop anchors automatically.
Just add one or more TikTok hashtags and the scraper will collect data about videos containing this hashtag.

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

Add the number of TikToks you want to scrape per hashtag, profile, or search query. This field is applicable to #️⃣ Hashtags, 😎 Profiles, and 🔍 Search.

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

Add one or multiple TikTok usernames or user IDs you want to scrape. You can enter the usernames one by one, or use the Bulk edit section to add a prepared list.

## `scrapeReposts` (type: `boolean`):

Tick to scrape reposted videos from user profiles in addition to their own videos. (Note: May require specific API conditions)

## `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.

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

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

## `searchQueries` (type: `array`):

Your keyword will apply to both videos and profiles. Use the Search sorting field below to specify whether you want your search to apply to top content, videos or users.
As for your query's format, you can use any query that works on TikTok.

## `searchSection` (type: `string`):

By default, this scraper will sort the search results by whatever shows up in the Top section of TikTok search. But you can narrow it down: if you want to apply your search query to just videos, use Video, just profiles — Profile.

## `maxProfilesPerQuery` (type: `integer`):

Only applies to profile searches. In this case ignore the 💯 Number of videos section and choose the number of profiles you want to scrape here.

## `videoSearchSorting` (type: `string`):

Select how you want the search results to be sorted when searching for videos. Only valid with Video search section.

## `videoSearchDateFilter` (type: `string`):

Select a date range in which to search for videos. Only valid with Video search section.

## `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`):

Tick to scrape related videos for the post URLs you provide. The maximum number of scraped related videos is set by the resultsPerPage count. Note that this only works for direct video URLs from the postURLs field.

## `shouldDownloadVideos` (type: `boolean`):

This is a charged add-on. Tick to download TikTok videos to the key-value store.

## `shouldDownloadCovers` (type: `boolean`):

Tick to download TikTok video cover images (thumbnails).

## `shouldDownloadSlideshowImages` (type: `boolean`):

Tick to download TikTok slideshow images.

## `shouldDownloadAvatars` (type: `boolean`):

Tick to download authors' profile pictures.

## `shouldDownloadMusicCovers` (type: `boolean`):

Tick to download cover images of sounds used in posts.

## `shouldDownloadSubtitles` (type: `boolean`):

Download subtitles provided by TikTok for videos that have them.

## `commentsPerPost` (type: `integer`):

The number of comments extracted from every result. Due to TikTok API limitations, the actual number of scraped comments may differ, especially for posts with thousands of comments. The link to the dataset will be under a field commentsDatasetURL in the output.

## `oldestPostDate` (type: `string`):

Only videos uploaded after or on this date will be scraped. Format: YYYY-MM-DD. Alternatively, specify how old the scraped videos should be in days. Putting 1 will get you only today's posts, 2 — yesterday's and today's, and so on.

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

Only videos uploaded before or on this date will be scraped. Format: YYYY-MM-DD.

## `minLikes` (type: `integer`):

Only scrape videos with no less hearts than the number you add. Doesn't work with date filters.

## `maxLikes` (type: `integer`):

Only scrape videos with less hearts than the number you add. Doesn't work with date filters.

## `proxyCountryCode` (type: `string`):

This is an additional charged filter. By selecting a proxy country, the Actor will use residential proxy group to get country-specific data. Note that using proxies might slow down your runs.

## `extractContactInfo` (type: `boolean`):

💡 TIP: Use this to build influencer outreach lists. Automatically parses user bios to extract verified emails and Instagram handles.

## `extractShopAnchors` (type: `boolean`):

💡 TIP: This is your money-maker. Extracts attached TikTok Shop products, app links, and other external anchors to find winning products.

## `calculateAnalytics` (type: `boolean`):

Automatically calculate Engagement Rate and Virality Score for every video so you don't have to use Excel.

## Actor input object example

```json
{
  "hashtags": [
    "tiktokmademebuyit",
    "amazonfinds"
  ],
  "resultsPerPage": 100,
  "scrapeReposts": false,
  "profileSorting": "latest",
  "excludePinnedPosts": false,
  "searchSection": "",
  "maxProfilesPerQuery": 10,
  "videoSearchSorting": "MOST_RELEVANT",
  "videoSearchDateFilter": "ALL_TIME",
  "scrapeRelatedVideos": false,
  "shouldDownloadVideos": false,
  "shouldDownloadCovers": false,
  "shouldDownloadSlideshowImages": false,
  "shouldDownloadAvatars": false,
  "shouldDownloadMusicCovers": false,
  "shouldDownloadSubtitles": false,
  "commentsPerPost": 0,
  "proxyCountryCode": "None",
  "extractContactInfo": true,
  "extractShopAnchors": true,
  "calculateAnalytics": true
}
```

# Actor output Schema

## `id` (type: `string`):

TikTok video ID

## `text` (type: `string`):

Video description text

## `webVideoUrl` (type: `string`):

Web URL of the TikTok video

## `playCount` (type: `string`):

Number of video plays

## `diggCount` (type: `string`):

Number of likes

## `shareCount` (type: `string`):

Number of shares

## `commentCount` (type: `string`):

Number of comments

## `engagementRate` (type: `string`):

Calculated engagement rate

## `viralityScore` (type: `string`):

Calculated virality score relative to follower count

## `extractedEmail` (type: `string`):

Extracted email address

## `extractedInstagram` (type: `string`):

Extracted Instagram handle

## `createTimeISO` (type: `string`):

Video creation timestamp

# 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": [
        "tiktokmademebuyit",
        "amazonfinds"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("intelscrape/tiktok-scraper-shop-emails-influencer-leads").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": [
        "tiktokmademebuyit",
        "amazonfinds",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("intelscrape/tiktok-scraper-shop-emails-influencer-leads").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": [
    "tiktokmademebuyit",
    "amazonfinds"
  ]
}' |
apify call intelscrape/tiktok-scraper-shop-emails-influencer-leads --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "TikTok Scraper: Shop, Emails & Influencer Leads",
        "description": "The most advanced TikTok Scraper on Apify. Bypass captchas to instantly extract TikTok videos, hashtags, profiles, and trending TikTok Shop products. Features a built-in B2B engine to automatically scrape verified influencer emails, Instagram handles, and calculate Virality & Engagement metrics.",
        "version": "2.0",
        "x-build-id": "eGR5yGLoY0cbZsKRe"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/intelscrape~tiktok-scraper-shop-emails-influencer-leads/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-intelscrape-tiktok-scraper-shop-emails-influencer-leads",
                "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/intelscrape~tiktok-scraper-shop-emails-influencer-leads/runs": {
            "post": {
                "operationId": "runs-sync-intelscrape-tiktok-scraper-shop-emails-influencer-leads",
                "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/intelscrape~tiktok-scraper-shop-emails-influencer-leads/run-sync": {
            "post": {
                "operationId": "run-sync-intelscrape-tiktok-scraper-shop-emails-influencer-leads",
                "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": "💡 TIP: For product research, use tags like 'tiktokmademebuyit', 'amazonfinds', or 'viralproducts'. The scraper will extract TikTok Shop anchors automatically.\nJust add one or more TikTok hashtags and the scraper will collect data about videos containing this hashtag.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "resultsPerPage": {
                        "title": "💯 Number of videos per hashtag, profile or search",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Add the number of TikToks you want to scrape per hashtag, profile, or search query. This field is applicable to #️⃣ Hashtags, 😎 Profiles, and 🔍 Search.",
                        "default": 100
                    },
                    "profiles": {
                        "title": "Usernames",
                        "type": "array",
                        "description": "Add one or multiple TikTok usernames or user IDs you want to scrape. You can enter the usernames one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "scrapeReposts": {
                        "title": "Scrape reposts",
                        "type": "boolean",
                        "description": "Tick to scrape reposted videos from user profiles in addition to their own videos. (Note: May require specific API conditions)",
                        "default": false
                    },
                    "profileSorting": {
                        "title": "Profile video sorting",
                        "enum": [
                            "latest",
                            "oldest",
                            "popular"
                        ],
                        "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.",
                        "default": "latest"
                    },
                    "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
                    },
                    "searchQueries": {
                        "title": "Search queries",
                        "type": "array",
                        "description": "Your keyword will apply to both videos and profiles. Use the Search sorting field below to specify whether you want your search to apply to top content, videos or users.\nAs for your query's format, you can use any query that works on TikTok.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchSection": {
                        "title": "Search sorting",
                        "enum": [
                            "",
                            "video",
                            "user"
                        ],
                        "type": "string",
                        "description": "By default, this scraper will sort the search results by whatever shows up in the Top section of TikTok search. But you can narrow it down: if you want to apply your search query to just videos, use Video, just profiles — Profile.",
                        "default": ""
                    },
                    "maxProfilesPerQuery": {
                        "title": "Max profiles per search query",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Only applies to profile searches. In this case ignore the 💯 Number of videos section and choose the number of profiles you want to scrape here.",
                        "default": 10
                    },
                    "videoSearchSorting": {
                        "title": "Video search sorting",
                        "enum": [
                            "MOST_RELEVANT",
                            "MOST_LIKED",
                            "NEWEST"
                        ],
                        "type": "string",
                        "description": "Select how you want the search results to be sorted when searching for videos. Only valid with Video search section.",
                        "default": "MOST_RELEVANT"
                    },
                    "videoSearchDateFilter": {
                        "title": "Video search date filter",
                        "enum": [
                            "ALL_TIME",
                            "LAST_DAY",
                            "THIS_WEEK",
                            "THIS_MONTH",
                            "LAST_THREE_MONTHS",
                            "LAST_SIX_MONTHS"
                        ],
                        "type": "string",
                        "description": "Select a date range in which to search for videos. Only valid with Video search section.",
                        "default": "ALL_TIME"
                    },
                    "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": "Scrape related videos",
                        "type": "boolean",
                        "description": "Tick to scrape related videos for the post URLs you provide. The maximum number of scraped related videos is set by the resultsPerPage count. Note that this only works for direct video URLs from the postURLs field.",
                        "default": false
                    },
                    "shouldDownloadVideos": {
                        "title": "Download TikTok videos",
                        "type": "boolean",
                        "description": "This is a charged add-on. Tick to download TikTok videos to the key-value store.",
                        "default": false
                    },
                    "shouldDownloadCovers": {
                        "title": "Download cover images (thumbnails)",
                        "type": "boolean",
                        "description": "Tick to download TikTok video cover images (thumbnails).",
                        "default": false
                    },
                    "shouldDownloadSlideshowImages": {
                        "title": "Download slideshow images",
                        "type": "boolean",
                        "description": "Tick to download TikTok slideshow images.",
                        "default": false
                    },
                    "shouldDownloadAvatars": {
                        "title": "Download profile avatars",
                        "type": "boolean",
                        "description": "Tick to download authors' profile pictures.",
                        "default": false
                    },
                    "shouldDownloadMusicCovers": {
                        "title": "Download music covers",
                        "type": "boolean",
                        "description": "Tick to download cover images of sounds used in posts.",
                        "default": false
                    },
                    "shouldDownloadSubtitles": {
                        "title": "Download subtitles",
                        "type": "boolean",
                        "description": "Download subtitles provided by TikTok for videos that have them.",
                        "default": false
                    },
                    "commentsPerPost": {
                        "title": "Comments per post",
                        "minimum": 0,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "The number of comments extracted from every result. Due to TikTok API limitations, the actual number of scraped comments may differ, especially for posts with thousands of comments. The link to the dataset will be under a field commentsDatasetURL in the output.",
                        "default": 0
                    },
                    "oldestPostDate": {
                        "title": "Oldest post date",
                        "type": "string",
                        "description": "Only videos uploaded after or on this date will be scraped. Format: YYYY-MM-DD. Alternatively, specify how old the scraped videos should be in days. Putting 1 will get you only today's posts, 2 — yesterday's and today's, and so on."
                    },
                    "newestPostDate": {
                        "title": "Newest post date",
                        "type": "string",
                        "description": "Only videos uploaded before or on this date will be scraped. Format: YYYY-MM-DD."
                    },
                    "minLikes": {
                        "title": "Minimum likes (hearts)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only scrape videos with no less hearts than the number you add. Doesn't work with date filters."
                    },
                    "maxLikes": {
                        "title": "Maximum likes (hearts)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only scrape videos with less hearts than the number you add. Doesn't work with date filters."
                    },
                    "proxyCountryCode": {
                        "title": "Proxy country",
                        "enum": [
                            "None",
                            "US",
                            "GB",
                            "DE",
                            "FR",
                            "ES",
                            "IT",
                            "NL",
                            "PL",
                            "JP",
                            "KR",
                            "BR",
                            "MX",
                            "IN",
                            "AU",
                            "CA",
                            "TH",
                            "VN",
                            "ID",
                            "PH",
                            "MY",
                            "SG",
                            "AE",
                            "SA",
                            "TR",
                            "ZA",
                            "NG",
                            "EG"
                        ],
                        "type": "string",
                        "description": "This is an additional charged filter. By selecting a proxy country, the Actor will use residential proxy group to get country-specific data. Note that using proxies might slow down your runs.",
                        "default": "None"
                    },
                    "extractContactInfo": {
                        "title": "Extract Emails & Socials",
                        "type": "boolean",
                        "description": "💡 TIP: Use this to build influencer outreach lists. Automatically parses user bios to extract verified emails and Instagram handles.",
                        "default": true
                    },
                    "extractShopAnchors": {
                        "title": "Extract TikTok Shop Links",
                        "type": "boolean",
                        "description": "💡 TIP: This is your money-maker. Extracts attached TikTok Shop products, app links, and other external anchors to find winning products.",
                        "default": true
                    },
                    "calculateAnalytics": {
                        "title": "Calculate AI-Ready Metrics",
                        "type": "boolean",
                        "description": "Automatically calculate Engagement Rate and Virality Score for every video so you don't have to use Excel.",
                        "default": true
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
