# Tiktok Profile Scraper (`scrapapi/tiktok-profile-scraper`) Actor

Scrape TikTok profile data in seconds 🎵👤 Extract usernames, bios, followers, following, likes, profile links, videos, and more from public profiles. Perfect for influencer research, competitor analysis, audience insights, and creator discovery. Get valuable TikTok data fast 🚀

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

## Pricing

$19.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

### Tiktok Profile Scraper

Tiktok Profile Scraper is a fast, reliable Apify actor that extracts public TikTok profile posts and engagement data at scale. It solves the manual, error-prone task of collecting post-level insights by automating profile parsing, pagination, sorting, and filtering — ideal for marketers, developers, data analysts, and researchers. With configurable sorting, time windows, and engagement thresholds, it enables large-scale influencer research, competitive monitoring, and audience analysis — all saved to your Apify dataset in real time.

### What data / output can you get?

Below are examples of the structured fields this actor saves for each post it collects. Fields use real keys exactly as they appear in the output.

| Data type | Description | Example value |
| --- | --- | --- |
| id | Unique post identifier | "7330123456789012345" |
| text | Post caption/description | "New video just dropped! 🚀" |
| createTimeISO | Post creation time in ISO format | "2026-03-01T12:34:56Z" |
| webVideoUrl | Public URL to the post | "https://www.tiktok.com/@mrbeast/video/7330123456789012345" |
| authorMeta.name | Author’s username | "mrbeast" |
| authorMeta.avatar | Medium avatar URL | "https://p16-sign-va.tiktokcdn.com/.../avatar-200x200.jpeg" |
| videoMeta.duration | Video duration in seconds | 21 |
| diggCount | Number of likes/hearts | 152340 |
| playCount | Number of views | 4821930 |
| commentCount | Number of comments | 1287 |
| musicMeta.musicName | Music title (or “original sound”) | "original sound" |
| hashtags | Extracted hashtags (array of objects) | [{"name":"giveaway"}] |

Bonus metadata includes nested authorMeta (e.g., verified, follower counts), musicMeta (author, original, playUrl), videoMeta (dimensions, cover URLs, subtitleLinks), locationMeta, mentions, effectStickers, and flags such as isPinned, isSlideshow, and isSponsored. Results are stored in your Apify dataset and mirrored to an actor.json file for convenient consumption.

### Key features

- ⚡ Robust proxy fallback & resilience — Automatic proxy handling escalates from direct to datacenter to residential on 403/429 or empty/blocked responses, with residential retries for tough pages.
- 🔀 Flexible video sorting — Choose profileSorting: latest, oldest, or popular to organize posts by chronology or engagement signal.
- 🧰 Precise filters — Limit by date range (oldestPostDateUnified, newestPostDate), engagement thresholds (mostDiggs, leastDiggs), and excludePinnedPosts to avoid pinned content.
- 📦 Real-time dataset streaming — Posts are pushed to the Apify dataset as they’re scraped, plus an actor.json file is saved at the end of the run.
- 👥 Multi-profile input — Supply multiple usernames in profiles to process accounts in one run.
- 🛡️ Controlled access — Configure proxyConfiguration to fit your environment; the actor starts with no proxy by default and escalates only when needed.
- 🧑‍💻 Developer-friendly — Clear JSON inputs/outputs, deterministic field names, and predictable sorting/filtering behavior for pipeline integration.

### How to use Tiktok Profile Scraper - step by step

1. Sign in to Apify and open the Tiktok Profile Scraper actor.
2. Add input data:
   - In profiles, enter TikTok usernames (one per line). “@” is optional; the actor normalizes it.
   - Optionally adjust profileSorting (latest, popular, oldest) and resultsPerPage.
   - Optionally set date filters (oldestPostDateUnified, newestPostDate) and engagement filters (mostDiggs, leastDiggs).
   - Toggle excludePinnedPosts if you want to skip pinned videos.
   - Configure proxyConfiguration if needed; by default, the actor starts without a proxy and escalates automatically only when blocked.
3. Start the run. The actor fetches each profile page, extracts initial posts, and uses TikTok’s item_list API for additional pagination when available.
4. During the run, items are streamed into your Apify dataset.
5. After completion, the actor saves a consolidated actor.json file with all unique posts collected.
6. Download results from the Apify dataset or retrieve the actor.json file from the run’s storage for your workflows.

Pro tip: Popular sorting combined with date filters may produce limited results due to how TikTok returns popularity-based pages. Consider using latest or oldest when applying time windows.

### Use cases

| Use case name | Description |
| --- | --- |
| Influencer discovery & vetting | Identify creators by scraping recent posts and engagement (likes, views, comments) to qualify partners quickly. |
| Competitor content tracking | Monitor competitor profiles with consistent sorting and filters to analyze cadence and performance over time. |
| Trend & sound analysis | Collect musicMeta and hashtags to study content themes and sound usage across posts from target creators. |
| Campaign performance snapshots | Pull a filtered set of posts within a date window to measure impact before and after campaigns. |
| Audience insights for research | Aggregate post-level engagement metrics across multiple profiles for academic or market research. |
| Data pipeline ingestion (API/ETL) | Feed deterministic JSON into downstream systems; results are pushed to datasets and actor.json for ingestion. |

### Why choose Tiktok Profile Scraper?

- 🎯 Precision-first scraping: Extracts structured, post-level data with stable field names and nested metadata.
- 🌍 Sorting & filtering control: Apply time windows and engagement thresholds; choose latest, oldest, or popular ordering.
- 📈 Scales to many profiles: Accepts multiple usernames and streams results as they’re found.
- 🧑‍💻 Built for developers: Clean JSON I/O and predictable behavior make it easy to integrate into pipelines and analytics.
- 🔒 Safe & reliable: Starts direct and escalates to datacenter/residential proxies on blocks for maximum success.
- 💾 Storage flexibility: Writes to the Apify dataset in real time and produces a final actor.json file for convenience.
- 🧩 Better than manual/browser tools: No unstable extensions; production-grade network handling and dataset storage.

### Is it legal / ethical to use Tiktok Profile Scraper?

Yes — when done responsibly. This actor extracts publicly available profile content and does not log in or access private profiles. Users should:
- Scrape only public data and respect platform terms.
- Avoid collecting sensitive or non-public information.
- Ensure compliance with applicable regulations (e.g., GDPR/CCPA) and internal policies.
- Consult legal counsel for edge cases in your jurisdiction or use case.

The tool does not access private profiles or authenticated data and operates without login.

### Input parameters & output format

#### Example input (JSON)
```json
{
  "profiles": ["mrbeast", "charlidamelio"],
  "profileScrapeSections": ["videos"],
  "profileSorting": "latest",
  "resultsPerPage": 20,
  "oldestPostDateUnified": "2026-03-01",
  "newestPostDate": "0",
  "mostDiggs": 500000,
  "leastDiggs": 10000,
  "excludePinnedPosts": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
````

#### Parameters

| Field | Type | Description | Default | Required |
| --- | --- | --- | --- | --- |
| profiles | array | Add TikTok usernames you want to scrape (one per line). Examples: mrbeast, khaby.lame, charlidamelio | Not set | Yes |
| profileScrapeSections | array | Choose which content to scrape: Videos (original posts) or Reposts. | \["videos"] | No |
| profileSorting | string | Choose how videos are sorted: Latest | Popular | Oldest. Note: Date filters work only with Latest and Oldest. | "latest" | No |
| resultsPerPage | integer | Maximum number of posts to scrape from each profile. | 20 | No |
| oldestPostDateUnified | string | Start date filter (videos published after). Accepts YYYY-MM-DD or relative days (e.g., "7"). | Not set | No |
| newestPostDate | string | End date filter (videos published before). Accepts YYYY-MM-DD or relative days (e.g., "0"). | Not set | No |
| mostDiggs | integer | Maximum hearts filter (<). Disabled when date filters are enabled. | Not set | No |
| leastDiggs | integer | Minimum hearts filter (≥). Disabled when date filters are enabled. | Not set | No |
| excludePinnedPosts | boolean | Skip pinned posts. | false | No |
| proxyConfiguration | object | Configure proxies for secure scraping. Falls back automatically when blocked. | Not set | No |

Notes:

- The actor normalizes usernames with or without “@”.
- Internally, date inputs are parsed into Unix timestamps for filtering.
- Sorting applies to videos; the actor sets fromProfileSection to "videos" in outputs.

#### Example output (JSON)

```json
[
  {
    "id": "7330123456789012345",
    "text": "New video just dropped! 🚀",
    "textLanguage": "en",
    "createTime": 1740832496,
    "createTimeISO": "2026-03-01T12:34:56Z",
    "isAd": false,
    "authorMeta": {
      "id": "1234567890",
      "name": "mrbeast",
      "profileUrl": "https://www.tiktok.com/@mrbeast",
      "nickName": "MrBeast",
      "verified": true,
      "signature": "",
      "bioLink": null,
      "originalAvatarUrl": "https://p16-sign-va.tiktokcdn.com/.../avatar-720x720.jpeg",
      "avatar": "https://p16-sign-va.tiktokcdn.com/.../avatar-200x200.jpeg",
      "commerceUserInfo": { "commerceUser": false },
      "privateAccount": false,
      "roomId": "",
      "ttSeller": false,
      "followDatasetUrl": null,
      "following": 0,
      "friends": 0,
      "fans": 0,
      "heart": 0,
      "video": 0,
      "digg": 0
    },
    "musicMeta": {
      "musicName": "original sound",
      "musicAuthor": "MrBeast",
      "musicOriginal": true,
      "playUrl": "https://sf16-ies-music-sg.tiktokcdn.com/obj/...mp3",
      "coverMediumUrl": "https://p16.tiktokcdn.com/.../cover.jpg",
      "originalCoverMediumUrl": "https://p16.tiktokcdn.com/.../cover.jpg",
      "musicId": "7123456789012345678"
    },
    "locationMeta": {
      "address": "",
      "city": "",
      "cityCode": "",
      "countryCode": "",
      "locationName": "",
      "locationId": ""
    },
    "webVideoUrl": "https://www.tiktok.com/@mrbeast/video/7330123456789012345",
    "mediaUrls": [],
    "commentsDatasetUrl": null,
    "videoMeta": {
      "height": 1920,
      "width": 1080,
      "duration": 21,
      "coverUrl": "https://p16-sign.tiktokcdn.com/obj/...jpeg",
      "originalCoverUrl": "https://p16-sign.tiktokcdn.com/obj/...jpeg",
      "definition": "high",
      "format": "mp4",
      "subtitleLinks": []
    },
    "diggCount": 152340,
    "shareCount": 4200,
    "playCount": 4821930,
    "collectCount": 800,
    "commentCount": 1287,
    "repostCount": 0,
    "mentions": [],
    "detailedMentions": [],
    "hashtags": [
      { "name": "giveaway" }
    ],
    "effectStickers": [],
    "isSlideshow": false,
    "isPinned": false,
    "isSponsored": false,
    "input": "mrbeast",
    "fromProfileSection": "videos"
  }
]
```

Field notes:

- hashtags is an array of objects with “name”.
- mentions and detailedMentions include user identifiers when present.
- subtitleLinks may contain language, downloadLink, tiktokLink, source, sourceUnabbreviated, and version.
- createTimeISO is null if createTime is missing.

### Related tools

| Tool | Description |
| --- | --- |
| TikTok Hashtag Scraper | Collects posts by hashtag for trend tracking and content research. |
| TikTok Comments Scraper | Gathers comments from public posts for sentiment and engagement analysis. |
| TikTok Video Scraper | Focuses on post-level extraction across various discovery surfaces. |

### FAQ

#### Do I need to log in to use this scraper?

No. The actor does not require login and targets publicly available profile content only.

#### Can I sort by popularity instead of time?

Yes. Set profileSorting to "popular". Note that combining popularity sorting with date filters may limit results due to how TikTok serves popularity-ordered pages.

#### How many posts can I collect per profile?

Use resultsPerPage to set the maximum number of posts to collect per profile. The actor also removes duplicates and stops when pagination yields no progress.

#### Can I filter by date range or hearts?

Yes. Use oldestPostDateUnified and newestPostDate for time windows, and mostDiggs or leastDiggs for hearts thresholds. Hearts filters are disabled when date filters are enabled.

#### Does it handle pinned posts?

Yes. Set excludePinnedPosts to true to skip pinned videos at the top of a profile.

#### What about proxies — are they required?

Not initially. The actor starts with a direct connection and automatically escalates to datacenter and then residential proxies if it encounters blocks (403/429) or empty/blocked responses.

#### What formats can I use to consume results?

Data is pushed to your Apify dataset during the run, and a final actor.json file is written on completion. You can integrate these into your pipelines or download from the run’s storage.

#### Does it scrape reposts?

The input supports selecting content sections, but outputs include fromProfileSection: "videos" to reflect collected items. Sorting applies to the Videos section.

### Final thoughts

Tiktok Profile Scraper is built to extract structured, post-level TikTok data quickly and reliably. With configurable sorting, robust filtering, resilient proxy fallback, and real-time dataset streaming, it’s ideal for marketers, developers, analysts, and researchers. Automate runs, consume actor.json or datasets in your pipelines, and start turning public TikTok profile posts into actionable insights today.

# Actor input Schema

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

📝 Add TikTok usernames you want to scrape (one per line). Examples: mrbeast\nkhaby.lame\ncharlidamelio

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

🎯 Choose which content to scrape: Videos (original posts) or Reposts. Select 'Reposts' to include reposted content from profiles.

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

📊 Choose how videos are sorted: Latest (newest first) 🆕 | Popular (most liked) 🔥 | Oldest (oldest first) 📜

⚠️ Note: Date filters work only with Latest and Oldest. Sorting applies to Videos section only.

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

🎯 Set the maximum number of posts to scrape from each profile. Higher numbers = more data but longer processing time.

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

🗓️ Set the earliest date for videos to scrape. Use Absolute tab for specific dates (YYYY-MM-DD) or Relative tab for days ago (e.g., 7 = last 7 days)

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

🗓️ Set the latest date for videos to scrape. Use Absolute tab for specific dates (YYYY-MM-DD) or Relative tab for days ago (e.g., 0 = today)

## `mostDiggs` (type: `integer`):

🎯 Scrape only videos with fewer hearts than this number. Perfect for finding less popular content.

⚠️ Note: This filter doesn't work when date filters are enabled.

## `leastDiggs` (type: `integer`):

🔥 Scrape only videos with at least this many hearts. Great for finding viral or popular content.

⚠️ Note: This filter doesn't work when date filters are enabled.

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

✅ Enable this to skip pinned posts (usually the first videos displayed on a profile). Useful for avoiding duplicate or promotional content.

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

🛡️ Configure proxy settings for secure scraping. Automatically falls back to residential proxies if requests are blocked.

## Actor input object example

```json
{
  "profiles": [
    "mrbeast"
  ],
  "profileScrapeSections": [
    "videos"
  ],
  "profileSorting": "latest",
  "resultsPerPage": 20,
  "excludePinnedPosts": 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 = {
    "profiles": [
        "mrbeast"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

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

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Tiktok Profile Scraper",
        "description": "Scrape TikTok profile data in seconds 🎵👤 Extract usernames, bios, followers, following, likes, profile links, videos, and more from public profiles. Perfect for influencer research, competitor analysis, audience insights, and creator discovery. Get valuable TikTok data fast 🚀",
        "version": "0.1",
        "x-build-id": "gKycAWmXORWy0wOme"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapapi~tiktok-profile-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapapi-tiktok-profile-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/scrapapi~tiktok-profile-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapapi-tiktok-profile-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/scrapapi~tiktok-profile-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapapi-tiktok-profile-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",
                "required": [
                    "profiles"
                ],
                "properties": {
                    "profiles": {
                        "title": "👤 TikTok Profile(s) to Scrape",
                        "type": "array",
                        "description": "📝 Add TikTok usernames you want to scrape (one per line). Examples: mrbeast\\nkhaby.lame\\ncharlidamelio",
                        "items": {
                            "type": "string"
                        }
                    },
                    "profileScrapeSections": {
                        "title": "📂 Content Sections to Scrape",
                        "type": "array",
                        "description": "🎯 Choose which content to scrape: Videos (original posts) or Reposts. Select 'Reposts' to include reposted content from profiles.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "videos",
                                "reposts"
                            ]
                        },
                        "default": [
                            "videos"
                        ]
                    },
                    "profileSorting": {
                        "title": "🔀 Video Sorting Order",
                        "enum": [
                            "latest",
                            "popular",
                            "oldest"
                        ],
                        "type": "string",
                        "description": "📊 Choose how videos are sorted: Latest (newest first) 🆕 | Popular (most liked) 🔥 | Oldest (oldest first) 📜\n\n⚠️ Note: Date filters work only with Latest and Oldest. Sorting applies to Videos section only.",
                        "default": "latest"
                    },
                    "resultsPerPage": {
                        "title": "📊 Maximum Posts per Profile",
                        "minimum": 1,
                        "type": "integer",
                        "description": "🎯 Set the maximum number of posts to scrape from each profile. Higher numbers = more data but longer processing time.",
                        "default": 20
                    },
                    "oldestPostDateUnified": {
                        "title": "📅 Start Date - Videos Published After",
                        "type": "string",
                        "description": "🗓️ Set the earliest date for videos to scrape. Use Absolute tab for specific dates (YYYY-MM-DD) or Relative tab for days ago (e.g., 7 = last 7 days)"
                    },
                    "newestPostDate": {
                        "title": "📅 End Date - Videos Published Before",
                        "type": "string",
                        "description": "🗓️ Set the latest date for videos to scrape. Use Absolute tab for specific dates (YYYY-MM-DD) or Relative tab for days ago (e.g., 0 = today)"
                    },
                    "mostDiggs": {
                        "title": "❤️ Maximum Hearts Filter (<)",
                        "minimum": 1,
                        "type": "integer",
                        "description": "🎯 Scrape only videos with fewer hearts than this number. Perfect for finding less popular content.\n\n⚠️ Note: This filter doesn't work when date filters are enabled."
                    },
                    "leastDiggs": {
                        "title": "❤️ Minimum Hearts Filter (≥)",
                        "minimum": 1,
                        "type": "integer",
                        "description": "🔥 Scrape only videos with at least this many hearts. Great for finding viral or popular content.\n\n⚠️ Note: This filter doesn't work when date filters are enabled."
                    },
                    "excludePinnedPosts": {
                        "title": "📌 Exclude Pinned Posts",
                        "type": "boolean",
                        "description": "✅ Enable this to skip pinned posts (usually the first videos displayed on a profile). Useful for avoiding duplicate or promotional content.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "🔒 Proxy & Security Settings",
                        "type": "object",
                        "description": "🛡️ Configure proxy settings for secure scraping. Automatically falls back to residential proxies if requests are blocked."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
