# TikTok Creative Center Top Ads Scraper (`parseforge/tiktok-creative-center-top-ads-scraper`) Actor

Scrape top-performing TikTok ads from Creative Center. Get ad copy, video URLs, thumbnails, industry, objective, target country, and keywords. Filter by country, period, objective, and sort order.

- **URL**: https://apify.com/parseforge/tiktok-creative-center-top-ads-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Marketing, Social media, Lead generation
- **Stats:** 4 total users, 2 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$10.00/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period.You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#rental-actors

## What's an Apify Actor?

Actors are 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

![ParseForge Banner](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)

## 📺 TikTok Creative Center Top Ads Scraper

Extract top-performing TikTok ads from the Creative Center without coding. Collect ad copy, video URLs, thumbnails, industry codes, campaign objectives, and targeting data. Filter by country, time period, objective, language, and keywords. Download as CSV, JSON, or Excel.

> **The TikTok Creative Center Top Ads Scraper collects high-performing auction ad data, with video URLs, thumbnails, and campaign details, plus filters by country, objective, and time period.**

### ✨ What Does It Do

- 📝 **Ad Headlines** captures the primary headline and all title variations so you can study winning ad copy.
- 🎬 **Video URLs** pulls direct links to ad videos in the best available quality so you can review creatives.
- 🖼️ **Thumbnails** collects cover images for each ad so you can preview creatives at a glance.
- 🌍 **Country Targeting** records the target country and country name so you can analyze regional ad strategies.
- 🎯 **Campaign Objectives** captures the objective type (Traffic, Conversions, Reach, etc.) so you can see what goals top advertisers prioritize.
- 🏭 **Industry Codes** collects TikTok's internal industry classification for each ad.
- 📐 **Video Specs** records duration, width, and height so you can identify the most effective video formats.
- 🔑 **Keywords & Details** (optional) collects keyword lists, all target countries, and objectives for enriched competitive analysis.

### 🎬 Demo Video

Demo video coming soon.

### 🔧 Input

- **Max Items**: Number of ads to collect. Free users are limited to 10 ads.
- **Country Code**: Filter ads by target country (e.g. US, GB, DE, FR, JP). Leave empty for global results.
- **Time Period**: Choose between Last 7 days, Last 30 days, or Last 180 days for the ranking window.
- **Campaign Objective**: Filter by Traffic, Conversions, Lead Generation, Reach, Video View, or Product Sales. Leave empty for all.
- **Sort By**: Sort ads by Popular, Most Likes, Highest CTR, Most Reach, Most Impressions, Most Shares, or Most Comments.
- **Keyword**: Search ads by keyword. Changes ranking by relevance.
- **Ad Language**: Filter by ad language code (e.g. en, es, ja). Leave empty for all languages.
- **Include Details**: Enable to collect enriched data for each ad (keywords, all target countries, objectives). Adds extra requests.

Example input:
```json
{
  "maxItems": 50,
  "countryCode": "US",
  "period": 7,
  "objectiveKey": "campaign_objective_conversion",
  "sortBy": "popular"
}
````

### 📊 Output

Each ad includes the following fields. Download as JSON, CSV, or Excel.

| Field | Field | Field |
| - | - | - |
| 📝 Ad ID | 📝 Headline | 📝 All Titles |
| 🖼️ Thumbnail URL | 🎬 Video URL | ⏱️ Video Duration |
| 📐 Video Width | 📐 Video Height | 🌍 Country |
| 🌍 Country Name | 🏭 Industry Code | 🎯 Objective |
| 🎯 Objective Key | 🔑 Keywords | 🌐 All Countries |
| 🌐 All Objectives | 📅 Scraped At | |

Example output:

```json
{
  "adId": "7213160569871581185",
  "headline": "Grow your community with Promote today!",
  "allTitles": ["Grow your community with Promote today!", "Digital Marketing"],
  "thumbnailUrl": "https://p16-sign-sg.tiktokcdn.com/...",
  "videoUrl": "https://v16m-default.tiktokcdn.com/...",
  "videoDuration": 13.352,
  "videoWidth": 576,
  "videoHeight": 1024,
  "country": "US",
  "countryName": "United States",
  "industryCode": "label_24112000000",
  "objective": "Traffic",
  "objectiveKey": "campaign_objective_traffic",
  "keywords": null,
  "allCountries": null,
  "allObjectives": null,
  "scrapedAt": "2026-03-28T00:48:23.842Z"
}
```

### 💎 Why Choose the TikTok Creative Center Top Ads Scraper?

| Feature | Our Actor | Manual Browsing |
| - | - | - |
| Collect hundreds of ads at once | ✔️ | ❌ |
| Direct video download URLs | ✔️ | ❌ |
| Filter by country, objective, period | ✔️ | ✔️ |
| Sort by CTR, reach, impressions | ✔️ | ✔️ |
| Keyword search | ✔️ | ✔️ |
| Structured data export (CSV, JSON, Excel) | ✔️ | ❌ |
| Scheduled recurring runs | ✔️ | ❌ |
| Enriched details (keywords, all countries) | ✔️ | ❌ |

### 📋 How to Use

1. Sign Up: [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp)
2. Find the Tool: Search for "TikTok Creative Center Top Ads Scraper" in the Apify Store and configure your input
3. Run It: Click "Start" and watch your results appear

### 🎯 Business Use Cases

- 📊 **Media Buyers** analyze top-performing ad creatives by country and objective to benchmark their own campaigns against market leaders.
- 🎨 **Creative Teams** study winning ad headlines, video formats, and durations to inform new creative briefs and storyboards.
- 🏢 **Ad Agencies** track competitor ad strategies across industries and regions to deliver data-backed recommendations to clients.

### ❓ FAQ

**🔍 How does it work?**
The scraper collects top-performing ad data from TikTok's Creative Center. It supports filtering by country, time period, campaign objective, language, and keywords.

**📊 What are industry codes?**
Industry codes like "label\_24112000000" are TikTok's internal classification system. They identify the industry category of each ad but are not mapped to human-readable names by TikTok's Creative Center.

**📋 How many ads can I collect?**
The Creative Center returns up to 400 ads per filter combination (8 pages of 50). For more variety, run multiple times with different filters.

**📅 Can I schedule runs?**
Yes. Set up recurring runs in Apify to track trending ads daily or weekly and spot new creative patterns over time.

**⚡ How long does a run take?**
A typical run collecting 100 ads takes 10-30 seconds. Enabling "Include Details" adds extra time for enrichment requests.

**🔑 What does "Include Details" add?**
It collects additional data per ad: keyword lists, all target countries, and all campaign objectives. Note that only about 10% of ads return enriched detail data due to TikTok Creative Center limitations.

**🛡️ Are there rate limits?**
TikTok may temporarily limit requests from the same IP. If you experience issues, try again after a few minutes or use Apify's residential proxy service.

### 🔗 Integrate TikTok Creative Center Top Ads Scraper with any app

- [Make](https://docs.apify.com/platform/integrations/make)
- [Zapier](https://docs.apify.com/platform/integrations/zapier)
- [GitHub](https://docs.apify.com/platform/integrations/github)
- [Slack](https://docs.apify.com/platform/integrations/slack)
- [Airbyte](https://docs.apify.com/platform/integrations/airbyte)
- [Google Drive](https://docs.apify.com/platform/integrations/drive)

### 💡 More ParseForge Actors

- [Booking Reviews Scraper](https://apify.com/parseforge/booking-com-reviews-scraper)
- [Etsy Scraper](https://apify.com/parseforge/etsy-scraper)
- [Amazon Reviews Scraper](https://apify.com/parseforge/amazon-reviews-scraper)

### 🚀 Ready to Start?

[Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) and collect your first results for free.

### 🆘 Need Help?

Contact us to request a new scraper, propose a custom data project, or report a technical issue with this actor at [tally.so/r/BzdKgA](https://tally.so/r/BzdKgA)

### ⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by TikTok, ByteDance, or any of their subsidiaries. All trademarks mentioned are the property of their respective owners.

# Actor input Schema

## `maxItems` (type: `integer`):

Number of ads to collect. Free users: limited to 10 (preview). Paid users: up to 400 per run (TikTok Creative Center limit).

## `countryCode` (type: `string`):

Filter ads by target country (e.g. US, GB, DE, FR, JP). Leave empty for global results.

## `period` (type: `integer`):

Time period for top ads ranking: 7, 30, or 180 days.

## `objectiveKey` (type: `string`):

Filter by campaign objective. Leave empty for all objectives.

## `sortBy` (type: `string`):

Sort order for the ads.

## `keyword` (type: `string`):

Search ads by keyword. Changes ranking by relevance.

## `adLanguage` (type: `string`):

Filter by ad language code (e.g. en, es, ja). Leave empty for all languages.

## `includeDetails` (type: `boolean`):

Fetch enriched details for each ad (keywords, all target countries, objectives). Adds extra requests but only ~10% of ads return detail data due to TikTok API limitations.

## Actor input object example

```json
{
  "maxItems": 10,
  "countryCode": "US",
  "period": 7,
  "objectiveKey": "",
  "sortBy": "popular",
  "includeDetails": false
}
```

# Actor output Schema

## `overview` (type: `string`):

Overview of top ads

## `fullData` (type: `string`):

Complete dataset with all ad fields

# 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 = {
    "maxItems": 10,
    "countryCode": "US",
    "period": 7,
    "sortBy": "popular"
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/tiktok-creative-center-top-ads-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 = {
    "maxItems": 10,
    "countryCode": "US",
    "period": 7,
    "sortBy": "popular",
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/tiktok-creative-center-top-ads-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 '{
  "maxItems": 10,
  "countryCode": "US",
  "period": 7,
  "sortBy": "popular"
}' |
apify call parseforge/tiktok-creative-center-top-ads-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "TikTok Creative Center Top Ads Scraper",
        "description": "Scrape top-performing TikTok ads from Creative Center. Get ad copy, video URLs, thumbnails, industry, objective, target country, and keywords. Filter by country, period, objective, and sort order.",
        "version": "1.0",
        "x-build-id": "bmdCDnkeLgQOwjDEd"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~tiktok-creative-center-top-ads-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-tiktok-creative-center-top-ads-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/parseforge~tiktok-creative-center-top-ads-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-tiktok-creative-center-top-ads-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/parseforge~tiktok-creative-center-top-ads-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-tiktok-creative-center-top-ads-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": {
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 400,
                        "type": "integer",
                        "description": "Number of ads to collect. Free users: limited to 10 (preview). Paid users: up to 400 per run (TikTok Creative Center limit)."
                    },
                    "countryCode": {
                        "title": "Country Code",
                        "type": "string",
                        "description": "Filter ads by target country (e.g. US, GB, DE, FR, JP). Leave empty for global results.",
                        "default": "US"
                    },
                    "period": {
                        "title": "Time Period (days)",
                        "minimum": 7,
                        "maximum": 180,
                        "type": "integer",
                        "description": "Time period for top ads ranking: 7, 30, or 180 days.",
                        "default": 7
                    },
                    "objectiveKey": {
                        "title": "Campaign Objective",
                        "enum": [
                            "",
                            "campaign_objective_traffic",
                            "campaign_objective_conversion",
                            "campaign_objective_lead_generation",
                            "campaign_objective_reach",
                            "campaign_objective_video_view",
                            "campaign_objective_product_sales"
                        ],
                        "type": "string",
                        "description": "Filter by campaign objective. Leave empty for all objectives.",
                        "default": ""
                    },
                    "sortBy": {
                        "title": "Sort By",
                        "enum": [
                            "popular",
                            "like",
                            "ctr",
                            "reach",
                            "impression",
                            "share",
                            "comment"
                        ],
                        "type": "string",
                        "description": "Sort order for the ads.",
                        "default": "popular"
                    },
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Search ads by keyword. Changes ranking by relevance."
                    },
                    "adLanguage": {
                        "title": "Ad Language",
                        "type": "string",
                        "description": "Filter by ad language code (e.g. en, es, ja). Leave empty for all languages."
                    },
                    "includeDetails": {
                        "title": "Include Details",
                        "type": "boolean",
                        "description": "Fetch enriched details for each ad (keywords, all target countries, objectives). Adds extra requests but only ~10% of ads return detail data due to TikTok API limitations.",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
