# TikTok Creative Center Trends Scraper (`symphonic_mullite/tiktok-creative-center-trends`) Actor

Scrape TikTok Creative Center trends: trending hashtags with trend curves, trending videos and top ads by country, period and industry. No login. Pay only per result.

- **URL**: https://apify.com/symphonic\_mullite/tiktok-creative-center-trends.md
- **Developed by:** [Damian Boni](https://apify.com/symphonic_mullite) (community)
- **Categories:** Social media
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 trend items

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What is TikTok Creative Center Trends Scraper?

**TikTok Creative Center Trends Scraper** extracts the public trend rankings from the [TikTok Creative Center](https://ads.tiktok.com/creative/creativeCenter/trends): **trending hashtags**, **trending videos** and **top ads**, for any country the Creative Center covers. Pick the lists, countries, time windows and industries, press **Start**, and download clean JSON, CSV or Excel. There's no TikTok login, no cookies and no API key.

It is built for the **2026 Creative Center redesign** ("TikTok One Creative Suite"), which broke many older TikTok trends scrapers.

- 📈 **Trending hashtags** in 27 countries: rank, post count, view count, a **daily popularity curve**, trend direction, peak date, industry, and the public top creators using each hashtag
- 🎬 **Trending videos** in the US, Japan, Indonesia, Thailand and Vietnam: views (period, lifetime, organic), engagement rate, 6-second view rate, caption, cover, video link and the public author with follower count
- 📺 **Top ads** in 28 countries: ad caption, industry, objective, likes, CTR score, budget level, video length and cover. Optionally adds comments, shares, target countries and CTR percentile.
- 🌍 Every country, period (7/30/90/180 days) and industry filter the Creative Center offers
- 💸 **Pay only for results**: one flat price per trend item, with no charges for failed pages
- 🗓️ Runs on the Apify platform, so you get **scheduling** (daily trend snapshots), **API access**, **integrations** (Google Sheets, Slack, Make, Zapier, n8n, webhooks), proxy rotation and monitoring

### What data can you extract from TikTok Creative Center?

| List | Countries | Filters | Key fields |
|---|---|---|---|
| Trending hashtags | 27 (US, GB, DE, FR, IT, ES, BR, MX, JP, KR, ID, …) | period 7/30/90 days, 15 industries + overall | `rank`, `hashtag`, `postCount`, `viewCount`, `trendCurve[{date,value}]`, `trendDirection`, `peakDate`, `hashtagIndustries`, `topCreators[]` |
| Trending videos | US, JP, ID, TH, VN | period 7/30 days, sort (views, engagement, 6s views), 5 content tags | `rank`, `title`, `url`, `viewCount`, `lifetimeViewCount`, `organicViewCount`, `engagementRate`, `sixSecondViewRate`, `createdAt`, `author{handle,followerCount}` |
| Top ads | 28 (US, GB, DE, FR, BR, JP, …) | period 7/30/180 days, 21 industries, 5 sort orders | `rank`, `title`, `industry`, `objective`, `likeCount`, `ctrScore`, `budgetLevel`, `videoDurationSeconds`, optional `commentCount`, `shareCount`, `targetCountries`, `ctrPercentile` |

Every item also has `type`, `country`, `periodDays`, `category` (the ranking it came from), `sortBy`, `source`, `sourceUrl` and `scrapedAt`, so rows from different lists and days can be combined in one sheet.

### How to scrape TikTok trends

1. Click **Try for free** (or **Start**) on this page.
2. In **What to scrape**, choose Trending hashtags, Trending videos and/or Top ads.
3. Choose one or more **Countries**.
4. Optionally open the section for each list to pick periods, industries, sort orders or content tags.
5. Click **Start**. A default run (US hashtags, last 7 days, all 16 rankings) finishes in under a minute.
6. Download the results as JSON, CSV, Excel or HTML, or connect them to Google Sheets, Slack or your own app through the API.

To track trends over time, save your input as a **task** and **schedule** it daily. Each run adds a dated snapshot.

### How much does it cost to scrape TikTok Creative Center trends?

This Actor uses **pay-per-event pricing**: **$0.003 per trend item** (one row in the dataset), which is **$3 per 1,000 items**. Apify subscribers on Bronze, Silver and Gold plans may get lower tier prices, shown on the **Pricing** tab. There's also a tiny standard Actor start fee set by Apify.

| Run | Items | Cost |
|---|---|---|
| Default: US hashtags, 7 days, all 16 rankings | 48 | $0.14 |
| Hashtags, 27 countries × 16 rankings, 7 days | 1,296 | $3.89 |
| Videos, 5 countries × 3 sorts × 6 content tags, 7 days | 360 | $1.08 |
| Top ads, 1 country × 21 industries × 5 sorts, 30 days | up to 420 | up to $1.26 |

You pay only for items saved to your dataset. Pages that fail cost you nothing. Set **Max items per type**, or the run's **maximum total charge** in the run options, to cap spending. The Actor stops cleanly when either limit is reached.

With the Apify **free plan's** monthly credit you can collect roughly 1,500 trend items per month at no cost.

### Input example

```json
{
    "types": ["hashtags", "videos", "topAds"],
    "countries": ["US", "GB", "JP"],
    "hashtagPeriods": ["7", "30"],
    "hashtagIndustries": ["all", "14000000000", "27000000000"],
    "videoPeriods": ["7"],
    "videoSortBy": ["views", "engagement"],
    "videoContentTags": ["all"],
    "topAdsPeriods": ["30"],
    "topAdsIndustries": ["all"],
    "topAdsSortBy": ["for_you", "like"],
    "topAdsIncludeDetails": false,
    "maxItemsPerType": 1000,
    "proxyConfiguration": { "useApifyProxy": true }
}
```

Countries that a list does not cover are skipped with a warning in the log. Here, Great Britain has no video list.

Industry ids (hashtags): `all` overall, `10000000000` Education, `11000000000` Vehicle & Transportation, `12000000000` Baby, Kids & Maternity, `14000000000` Beauty & Personal Care, `15000000000` Tech & Electronics, `17000000000` Travel, `18000000000` Household Products, `19000000000` Pets, `21000000000` Home Improvement, `22000000000` Apparel & Accessories, `23000000000` News & Entertainment, `25000000000` Games, `27000000000` Food & Beverage, `28000000000` Sports & Outdoor, `29000000000` Health. The input form shows the names, so you only need the ids when calling the API.

### Output example

A trending hashtag (the arrays are shortened):

```json
{
    "type": "hashtag",
    "rank": 1,
    "title": "#mylivejourney",
    "hashtag": "mylivejourney",
    "id": "1663300444413953",
    "url": "https://www.tiktok.com/tag/mylivejourney",
    "postCount": 21695,
    "viewCount": 28509391,
    "trendDirection": "stable",
    "peakDate": "2026-09-22",
    "latestValue": 95.72,
    "trendCurve": [
        { "date": "2026-09-18", "value": 0.59 },
        { "date": "2026-09-22", "value": 100 },
        { "date": "2026-09-24", "value": 95.72 }
    ],
    "hashtagIndustries": ["News & Entertainment"],
    "topCreators": [
        { "rank": 1, "handle": "clipsstonyaguirre", "nickname": "clipsstonyaguirre", "followerCount": 52707, "country": "US", "profileUrl": "https://www.tiktok.com/@clipsstonyaguirre" }
    ],
    "country": "US",
    "countryName": "United States",
    "periodDays": 7,
    "category": "All industries",
    "categoryId": null,
    "source": "TikTok Creative Center",
    "sourceUrl": "https://ads.tiktok.com/creative/creativeCenter/trends/hashtag?region=US&period=7",
    "scrapedAt": "2026-09-27T19:17:24.146Z"
}
```

A trending video:

```json
{
    "type": "video",
    "rank": 1,
    "title": "3 NEW Gemini Live Features That Should Not Be This Good ✨ …",
    "id": "7680342145466780941",
    "url": "https://www.tiktok.com/@renz.sadiwa/video/7680342145466780941",
    "createdAt": "2026-08-31T23:30:28.000Z",
    "viewCount": 37912835,
    "organicViewCount": 759069,
    "lifetimeViewCount": 44560122,
    "engagementRate": 0.000369,
    "sixSecondViewRate": 0.012333,
    "author": { "handle": "renz.sadiwa", "nickname": "Renz Sadiwa", "followerCount": 208391, "profileUrl": "https://www.tiktok.com/@renz.sadiwa" },
    "country": "US",
    "periodDays": 7,
    "periodEndDate": "2026-09-26",
    "sortBy": "views",
    "category": "All content"
}
```

A top ad with details:

```json
{
    "type": "topAd",
    "rank": 1,
    "title": "Gifts they'll actually use. Sorted before the rush.",
    "id": "7501675792766763015",
    "url": "https://ads.tiktok.com/business/creativecenter/topads/7501675792766763015/pc/en",
    "industry": "Life Services > Gifts & Flowers",
    "objective": "Conversions",
    "likeCount": 1,
    "ctrScore": 0.81,
    "budgetLevel": "Low",
    "videoDurationSeconds": 38.5,
    "commentCount": 0,
    "shareCount": 0,
    "targetCountries": ["PK", "GB", "US"],
    "objectives": ["Conversions"],
    "adSource": "TikTok Ads Manager",
    "ctrPercentile": 0.99,
    "country": "US",
    "periodDays": 7,
    "sortBy": "for_you",
    "category": "All industries",
    "detailsIncluded": true
}
```

In the Apify Console **Output** tab, the **Hashtags**, **Videos** and **Top ads** views show the right columns for each list. A `RUN_SUMMARY` record in the key-value store reports items per type, page visits, retries and any failures.

### How many results do I get per ranking?

TikTok shows logged-out visitors a short ranking and asks them to log in for the rest. This Actor collects exactly what the public page shows, per ranking:

- **Hashtags:** top **3** for each country × period × industry, which is 48 per country and period across all 16 rankings.
- **Videos:** top **4** for each country × period × sort order × content tag, which is up to 72 per country and period.
- **Top ads:** the **4** ads the dashboard shows for each country × period × industry × sort order.

To collect more, add rankings: more industries, periods, sort orders, content tags and countries. A daily scheduled run builds a long history quickly.

### Limitations

- **No trending songs or trending creators.** TikTok removed both lists from the public Creative Center in its 2026 redesign; the Creator tab says "Coming soon". The Actor will add them if TikTok brings them back publicly.
- **No rank change or "new to top 100" flag.** The redesigned Creative Center no longer publishes them. Use `trendCurve`, `trendDirection` and daily snapshots to follow movement.
- **Logged-out ranking depth** (3, 4 and 4 rows, see above). The Actor does not log in and does not bypass the login wall.
- `trendCurve` values are TikTok's relative popularity index (0 to 100, where 100 is the peak day in the window), not absolute views.
- Cover and avatar image URLs are signed by TikTok and expire after a few days. Download them promptly if you need the images.
- TikTok rate-limits fast Top Ads browsing ("too many requests"). The Actor backs off and retries with a fresh browser session, so large Top Ads sweeps (hundreds of industry × sort combinations) take longer, but they still complete.
- `ctrPercentile` is the value the ad's detail page reports; for top ads it is almost always 0.99.
- Data is as fresh as the Creative Center itself, which usually updates daily.

### FAQ

#### Is it legal to scrape TikTok Creative Center?

The Actor reads only public, aggregated trend data that TikTok shows to any visitor without an account, and the Creative Center's robots.txt allows crawling. It doesn't log in, doesn't bypass access controls and doesn't collect private profiles. Creator fields are limited to what the Creative Center publicly shows about public creators (handle, nickname, follower count and avatar). You are responsible for how you use the data, including GDPR and TikTok's terms. If in doubt, ask a lawyer.

#### Can I get trending songs or sounds?

Not at the moment. The TikTok Creative Center no longer publishes a public songs ranking; the old Songs page now redirects to hashtags. Actors that still claim to return trending sounds from the Creative Center are either failing or using a different source.

#### Do I need a TikTok account, cookies or an API key?

No. You need only an Apify account.

#### Which proxy should I use?

The default Apify Proxy (datacenter) works. The Actor rotates browser sessions and retries blocked pages automatically. Switch to residential proxies only if your runs report blocked pages.

#### How can I monitor TikTok trends every day?

Save your input as a task, add a daily schedule in Apify Console, and connect the dataset to Google Sheets, Slack, a webhook or your database. Each item carries `scrapedAt`, `country`, `periodDays` and `category`, so daily snapshots line up.

#### Can I use the TikTok trends data through an API or in Python?

Yes. Start the Actor through the [Apify API](https://docs.apify.com/api/v2) or the `apify-client` package for Python or JavaScript, and read the dataset items as JSON. It also works as a tool for AI agents through the Apify MCP server.

#### Why did my run return fewer items than expected?

Check the log. Countries that a list doesn't support are skipped with a warning, and an industry or content tag can be empty for smaller countries. `RUN_SUMMARY` in the key-value store lists items per type and any failed pages.

#### I need something else from the TikTok Creative Center

Open an issue on the **Issues** tab. Bug reports get a reply within days, and feature requests are welcome.

# Changelog

This Actor's version history is a separate document: https://apify.com/symphonic\_mullite/tiktok-creative-center-trends/changelog.md

# Actor input Schema

## `types` (type: `array`):

Trend lists to collect. Trending hashtags (27 countries), trending videos (US, JP, ID, TH, VN) and top ads (28 countries). TikTok removed the public songs and creators lists from the Creative Center, so they are not offered.

## `countries` (type: `array`):

Countries (regions) to collect. Each list type supports its own set; unsupported combinations are skipped with a warning.

Hashtags: US, FR, DE, IT, ES, GB, AR, AU, BR, CA, CO, EG, ID, IL, JP, KR, MY, MX, PH, SA, SG, ZA, TW, TH, TR, AE, VN.
Videos: US, JP, VN, TH, ID.
Top ads: AR, AU, BR, CA, CO, FR, DE, ID, IT, JP, MY, MX, NL, PK, PH, RO, SA, SG, ZA, KR, ES, SE, TH, TR, AE, GB, US, VN.

## `maxItemsPerType` (type: `integer`):

Stops collecting a type once this many items were saved for it. You are charged per saved item, so this also caps the cost of a run.

## `hashtagPeriods` (type: `array`):

Ranking windows: last 7, 30 or 90 days.

## `hashtagIndustries` (type: `array`):

Industry rankings to collect. "All industries" is the overall ranking. Leave empty to collect the overall ranking plus all 15 industry rankings.

## `videoPeriods` (type: `array`):

Ranking windows: last 7 or 30 days.

## `videoSortBy` (type: `array`):

Ranking metrics, as on the Creative Center tabs. Each one is a separate top-4 list.

## `videoContentTags` (type: `array`):

Video content tag filters. Each one is a separate top-4 list. "All content" is the unfiltered ranking.

## `topAdsPeriods` (type: `array`):

Ranking windows: last 7, 30 or 180 days.

## `topAdsIndustries` (type: `array`):

Advertiser industries. "All industries" is the unfiltered dashboard.

## `topAdsSortBy` (type: `array`):

Dashboard sort orders. Each one is a separate list.

## `topAdsIncludeDetails` (type: `boolean`):

Also open each ad's public detail page to add comments, shares, target countries, landing page, keywords and CTR percentile. One extra page visit per ad, so runs take longer; the price per item is the same.

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

Apify Proxy is recommended. Datacenter proxies work for the Creative Center; switch to residential only if you see blocked pages.

## Actor input object example

```json
{
  "types": [
    "hashtags"
  ],
  "countries": [
    "US"
  ],
  "maxItemsPerType": 1000,
  "hashtagPeriods": [
    "7"
  ],
  "hashtagIndustries": [
    "all",
    "10000000000",
    "11000000000",
    "12000000000",
    "14000000000",
    "15000000000",
    "17000000000",
    "18000000000",
    "19000000000",
    "21000000000",
    "22000000000",
    "23000000000",
    "25000000000",
    "27000000000",
    "28000000000",
    "29000000000"
  ],
  "videoPeriods": [
    "7"
  ],
  "videoSortBy": [
    "views"
  ],
  "videoContentTags": [
    "all"
  ],
  "topAdsPeriods": [
    "7"
  ],
  "topAdsIndustries": [
    "all"
  ],
  "topAdsSortBy": [
    "for_you"
  ],
  "topAdsIncludeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

Every item from the run. Use the dataset views to see hashtags, videos or top ads with their own columns.

## `hashtags` (type: `string`):

No description

## `videos` (type: `string`):

No description

## `topAds` (type: `string`):

No description

## `runSummary` (type: `string`):

Counts per type, page visits, failures and charged events.

# 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 = {
    "types": [
        "hashtags"
    ],
    "countries": [
        "US"
    ],
    "maxItemsPerType": 1000,
    "hashtagPeriods": [
        "7"
    ],
    "hashtagIndustries": [
        "all",
        "10000000000",
        "11000000000",
        "12000000000",
        "14000000000",
        "15000000000",
        "17000000000",
        "18000000000",
        "19000000000",
        "21000000000",
        "22000000000",
        "23000000000",
        "25000000000",
        "27000000000",
        "28000000000",
        "29000000000"
    ],
    "videoPeriods": [
        "7"
    ],
    "videoSortBy": [
        "views"
    ],
    "videoContentTags": [
        "all"
    ],
    "topAdsPeriods": [
        "7"
    ],
    "topAdsIndustries": [
        "all"
    ],
    "topAdsSortBy": [
        "for_you"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("symphonic_mullite/tiktok-creative-center-trends").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 = {
    "types": ["hashtags"],
    "countries": ["US"],
    "maxItemsPerType": 1000,
    "hashtagPeriods": ["7"],
    "hashtagIndustries": [
        "all",
        "10000000000",
        "11000000000",
        "12000000000",
        "14000000000",
        "15000000000",
        "17000000000",
        "18000000000",
        "19000000000",
        "21000000000",
        "22000000000",
        "23000000000",
        "25000000000",
        "27000000000",
        "28000000000",
        "29000000000",
    ],
    "videoPeriods": ["7"],
    "videoSortBy": ["views"],
    "videoContentTags": ["all"],
    "topAdsPeriods": ["7"],
    "topAdsIndustries": ["all"],
    "topAdsSortBy": ["for_you"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("symphonic_mullite/tiktok-creative-center-trends").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "types": [
    "hashtags"
  ],
  "countries": [
    "US"
  ],
  "maxItemsPerType": 1000,
  "hashtagPeriods": [
    "7"
  ],
  "hashtagIndustries": [
    "all",
    "10000000000",
    "11000000000",
    "12000000000",
    "14000000000",
    "15000000000",
    "17000000000",
    "18000000000",
    "19000000000",
    "21000000000",
    "22000000000",
    "23000000000",
    "25000000000",
    "27000000000",
    "28000000000",
    "29000000000"
  ],
  "videoPeriods": [
    "7"
  ],
  "videoSortBy": [
    "views"
  ],
  "videoContentTags": [
    "all"
  ],
  "topAdsPeriods": [
    "7"
  ],
  "topAdsIndustries": [
    "all"
  ],
  "topAdsSortBy": [
    "for_you"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call symphonic_mullite/tiktok-creative-center-trends --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,symphonic_mullite/tiktok-creative-center-trends"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/twP2tYvgc4ru5DxmZ/builds/9OngRis955LttcTbQ/openapi.json
