# TikTok Creative Center — Top Ads Spy (CTR + Video URL) (`dltik/tiktok-creative-center`) Actor

Scrape TikTok's official Creative Center Top Ads — winning ad creatives with CTR, likes, MP4 video URL (720p), cover, duration, industry. Filter country/period/industry, sort by CTR/likes/cost. Headless bootstrap + HTTP pagination. Dropshipper goldmine.

- **URL**: https://apify.com/dltik/tiktok-creative-center.md
- **Developed by:** [Walid](https://apify.com/dltik) (community)
- **Categories:** Marketing, Lead generation
- **Stats:** 71 total users, 35 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$3.50 / 1,000 ad scrapeds

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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## TikTok Creative Center — Top Ads Spy (CTR + Video URL)

**TikTok Creative Center Scraper** extracts winning ad creatives from TikTok's **official Creative Center** — with the performance metrics that matter for dropshippers and agencies: **CTR, likes, direct MP4 video URL (720p), cover image, duration, industry, objective**. Filter by country, period and industry; sort by For You / CTR / likes / cost. No TikTok account needed.

> ⭐ **Found this useful?** Click the **Bookmark** button at the top of [this page](https://apify.com/dltik/tiktok-creative-center) — it's the single strongest signal that keeps this actor visible to others. One click. No signup beyond your existing Apify account.

***

### What can TikTok Creative Center Scraper do?

- 🎬 **Top Ads list** — TikTok's officially-ranked winning ads, exactly as shown in the Creative Center UI
- 📊 **CTR + likes** — performance metrics the public ad libraries (FB, Google, LinkedIn) don't expose
- 🎥 **MP4 video URL (720p)** — direct downloadable URL of the ad creative
- 🖼️ **Cover image** — high-resolution thumbnail
- 🌍 **Country filter** — US, FR, GB, DE, IT, ES, JP, BR, MX, and any ISO code
- 📅 **Period** — last 7 / 30 / 180 days
- 🎯 **Industry filter** — pinpoint your niche (E-commerce > Beauty, etc.) via the industry key
- 📈 **Sort modes** — For You, CTR, Cost, Likes, Like rate, 6s play rate
- ⚡ **Fast** — 60 ads in ~20s; one-shot Chromium bootstrap then pure HTTP pagination

***

### What data can you extract per TikTok ad?

| Field | Description |
|-------|-------------|
| `ad_id` | TikTok material ID |
| `ad_title` | Ad copy / hook line |
| `brand_name` | Brand / advertiser when available |
| `industry_key` | Creative Center industry classification |
| `objective_key` | Campaign objective (conversion, traffic, …) |
| `ctr` | Click-through rate (0–1) |
| `likes` | Total likes |
| `cost_score` | Relative cost score |
| `duration_sec` | Video duration in seconds |
| `video_id` | TikTok video ID |
| `video_url_720p` | **Direct MP4 URL (720p)** |
| `video_url_540p` / `video_url_360p` | Lower-quality MP4 URLs (when present) |
| `cover_url` | Cover image (CDN) |
| `width`, `height` | Video pixel dimensions |
| `country_code`, `period_days` | Filters echoed back |
| `detail_url` | Creative Center detail page |

***

### How to spy on TikTok ads

1. **[Create a free Apify account](https://apify.com/sign-up)** — no credit card required
2. **Open [TikTok Creative Center Scraper](https://apify.com/dltik/tiktok-creative-center)** in Apify Store
3. **Pick a country** (default `US`) and **period** (default 30 days)
4. **Optional**: a specific **industry** key or a different **sort** (CTR for best click rates)
5. **Click Start** — ads stream in within seconds
6. **Download** as JSON, CSV, or Excel; the MP4 URLs are direct-download links

***

### How much does it cost to spy on TikTok ads?

**$0.002 per ad** ($2 per 1,000 ads). One-shot Chromium bootstrap (~10–15s once per run) then pure HTTP pagination.

| Run size | Ads | Apify cost | Time |
|----------|-----|------------|------|
| Quick test | 10 | ~$0.02 | ~15s |
| Standard | 60 | ~$0.12 | ~20s |
| Deep sweep | 200 | ~$0.40 | ~30s |
| Full scan | 500 | ~$1.00 | ~1min |

***

### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `countryCode` | string | `US` | ISO 2-letter code (US, FR, GB, DE, IT, ES, JP, BR, MX, …) |
| `period` | integer | `30` | `7`, `30`, or `180` days |
| `orderBy` | string | `for_you` | `for_you`, `ctr`, `cost`, `like`, `like_rate`, `play_6s_rate` |
| `industry` | string | — | Industry key from the Creative Center URL (e.g. `22102000000`); empty = all |
| `maxResults` | integer | `60` | Cap on total ads (paginated, ~20 per page) |
| `useResidentialProxy` | boolean | `false` | Enable only if you hit rate limits |

***

### Output example

```json
{
  "ad_id": "7634600921591185426",
  "ad_title": "today is pink @SCUFFERS",
  "brand_name": null,
  "industry_key": "label_30101000000",
  "objective_key": "campaign_objective_conversion",
  "ctr": 0.21,
  "likes": 8184,
  "cost_score": 1,
  "duration_sec": 15.02,
  "video_id": "v24044gl0000d7khibnog65ujb3buq60",
  "video_url_720p": "https://v16m-default.tiktokcdn.com/.../video.mp4",
  "cover_url": "https://p16-common-sign.tiktokcdn.com/.../cover.image",
  "width": 576,
  "height": 1024,
  "country_code": "US",
  "period_days": 30,
  "detail_url": "https://ads.tiktok.com/business/creativecenter/topads/7634600921591185426/pc/en?countryCode=US&period=30"
}
```

***

### Use cases

- **Dropshipping research** — find winning product creatives sorted by CTR / likes
- **Creative inspiration** — download the actual MP4 video URLs of top-performing ads
- **Agency competitive intel** — track TikTok ad trends per country and industry
- **AI training data** — collect performance-labeled video creatives at scale
- **Trend tracking** — refresh weekly to see what's winning right now

***

### Use the actor via API

**Python:**

```python
import requests

run = requests.post(
    "https://api.apify.com/v2/acts/dltik~tiktok-creative-center/runs",
    headers={"Authorization": "Bearer YOUR_APIFY_TOKEN"},
    json={
        "countryCode": "US",
        "period": 30,
        "orderBy": "ctr",
        "maxResults": 60
    }
).json()
print("Run started:", run["data"]["id"])
```

**curl:**

```bash
curl -X POST "https://api.apify.com/v2/acts/dltik~tiktok-creative-center/runs" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"countryCode":"US","period":30,"orderBy":"ctr","maxResults":60}'
```

***

### FAQ

**Do I need a TikTok account or developer key?**
No. The Creative Center is TikTok's public marketing transparency tool. The scraper bootstraps a single signed-request triplet via a headless browser then paginates via the public JSON API — no login, no token.

**Why the brief headless step?**
TikTok signs each Creative Center API request with a per-session `user-sign` header. We capture one valid triplet by loading the page in a headless browser, then reuse it for many fast HTTP calls. Total bootstrap ~10–15s once per run.

**How do I get an `industry` key?**
Open the Creative Center, apply an industry filter in the UI, copy the `industry=...` number from the URL into the actor input.

**Does it return real-time data?**
TikTok refreshes the Creative Center rankings hourly–daily. Run the actor as often as you need fresh rankings.

**Does it download the videos?**
No — to keep the per-ad cost low and the dataset light, the actor returns the direct MP4 URL. Drop those URLs into any downloader (yt-dlp, ffmpeg, your own script) to grab the binaries when needed.

**Advanced: refresh signing without redeploy.**
If TikTok ever rotates and the bundled fallback triplet expires, you can update three actor env vars in the Apify console without redeploying: `TT_USER_SIGN`, `TT_WEB_ID`, `TT_TIMESTAMP` (and optionally `TT_ANONYMOUS_USER_ID`, `TT_UA`) — copy the values from the request headers of any `creative_radar_api` call in your browser's DevTools.

***

### Connect with Make, Zapier & n8n

This actor integrates with any automation platform via the Apify API.

#### Make (Integromat)

1. Add an **Apify module** in your Make scenario
2. Select **Run Actor** → choose this actor
3. Configure the input (paste your JSON)
4. Add a **Get Dataset Items** module to retrieve results
5. Send top ads to Google Sheets, your CRM, Slack, etc.

#### Zapier

1. Use the **Apify integration** on Zapier
2. Trigger: **Actor Run Finished**
3. Action: **Get Dataset Items**
4. Pipe results into your spreadsheet or BI tool

#### n8n

1. Add an **HTTP Request** node to call the Apify API
2. POST to `https://api.apify.com/v2/acts/dltik~tiktok-creative-center/runs`
3. Wait for completion, then fetch dataset items
4. Route the MP4 URLs to a downloader node

***

⭐ **Found this TikTok Creative Center Scraper useful? Bookmark it** — Apify ranks actors by bookmarks, so it's the strongest single signal for Store visibility. One click = directly helps this actor stay surfaced.

### Other scrapers by dltik

| Actor | What it does | Price |
|-------|-------------|-------|
| [Facebook Ads Library Scraper](https://apify.com/dltik/facebook-ads-scraper) | Meta (Facebook + Instagram) ad library spy with DSA detail enrichment | $0.75/1K |
| [Google Ads Transparency Scraper](https://apify.com/dltik/google-ads-transparency) | Google Search, YouTube, Display ad spy via official Ad Transparency Center | $1/1K |
| [LinkedIn Ad Library Scraper](https://apify.com/dltik/linkedin-ad-library) | B2B competitor ad spy from LinkedIn's public Ad Library | $2/1K |
| [TikTok Scraper](https://apify.com/dltik/tiktok-scraper) | Profiles, videos, hashtags, search, trending | $8/1K |

# Actor input Schema

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

ISO 2-letter country code (US, FR, GB, DE, IT, ES, JP, BR, MX, etc.).

## `period` (type: `string`):

Lookback window for top ads. TikTok Creative Center supports 7, 30, 180.

## `orderBy` (type: `string`):

How to rank the top ads.

## `industry` (type: `string`):

Industry filter key from the Creative Center URL (e.g. '22102000000' = E-commerce > Beauty). Leave empty for all industries.

## `maxResults` (type: `integer`):

Cap on total ads to fetch (paginated, ~20 per page).

## `enrichDetails` (type: `boolean`):

For each ad, also fetch its detail page: landing-page URL, CTA, per-second retention/keyframe data and like/CTR percentiles vs industry. The landing page reveals the exact product/offer behind each winning ad. Billed per ad enriched.

## `useResidentialProxy` (type: `boolean`):

Enable only if you hit rate limits on large runs — the public Creative Center API serves cold datacenter requests just fine.

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

Advanced: override the proxy. Only honored when 'Use residential proxy' is enabled.

## Actor input object example

```json
{
  "countryCode": "US",
  "period": "30",
  "orderBy": "for_you",
  "maxResults": 60,
  "enrichDetails": false,
  "useResidentialProxy": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

List of top TikTok ads with performance metrics and media URLs.

# 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 = {
    "countryCode": "US"
};

// Run the Actor and wait for it to finish
const run = await client.actor("dltik/tiktok-creative-center").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 = { "countryCode": "US" }

# Run the Actor and wait for it to finish
run = client.actor("dltik/tiktok-creative-center").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 '{
  "countryCode": "US"
}' |
apify call dltik/tiktok-creative-center --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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