# TikTok Creative Center Trends - Public Hashtag Rankings (`dami_studio/tiktok-creative-center-trends`) Actor

Get verified public TikTok Creative Center hashtag rankings by region and period. No login or cookies are used. Includes popularity curves, posts, views, industries, and top creators. Direct HTTP first with optional proxy fallback.

- **URL**: https://apify.com/dami\_studio/tiktok-creative-center-trends.md
- **Developed by:** [Dami's Studio](https://apify.com/dami_studio) (community)
- **Categories:** Social media, Marketing
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$8.00 / 1,000 tiktok trends

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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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 Creative Center Trends

Get verified public TikTok Creative Center hashtag rankings without a TikTok login, cookies, or an API key. The actor fetches TikTok's public server-rendered Creative Center trend page and returns the anonymous records TikTok actually exposes: rank, hashtags, posts, views, popularity curve, industries, and top creators.

### What works today

- Public hashtag rankings by region and 7 or 30 day period
- Rank, posts, views, popularity curve, industry IDs, and visible top creator metadata
- A local industry-ID filter over the public records TikTok returns
- Direct HTTP first, with optional Apify Proxy only when a direct request is blocked
- One `trend` pay-per-event charge for each verified real trend row saved

### Current Creative Center source limits

TikTok changes Creative Center independently of this actor. At the time this version was validated:

- The old `creative_radar_api` trend JSON routes return `40101 no permission` to anonymous callers.
- The public Creative Center hashtag page includes stable server-rendered data and is the only source used for chargeable output.
- The Video page displays a small browser preview but does not include stable anonymous video records in the direct public page response used by the actor.
- Creator is marked `Coming soon`, Song or Music is absent from the current public Trends page, and the current Top Ads route resolves to 404 for anonymous traffic.

Selecting `video`, `creator`, `song`, or `ad` creates an explicit `PUBLIC_SOURCE_UNAVAILABLE` diagnostic. Diagnostics are never charged. This avoids presenting login-gated or absent data as a working product.

### Input

| Field | Default | Description |
|---|---:|---|
| `trendTypes` | `["hashtag"]` | Trend types to attempt. Only `hashtag` currently produces chargeable public records. |
| `region` | `US` | Country code supported by anonymous hashtag rankings. |
| `periodDays` | `7` | `7` or `30` day Creative Center comparison period. |
| `industryIds` | empty | Optional exact industry-ID filter applied to returned public hashtag results. |
| `maxResults` | `3` | Up to three anonymous rankings currently exposed by Creative Center. |
| `requestTimeoutSecs` | `25` | HTTP request timeout, from 8 to 60 seconds. |
| `proxyConfiguration` | off | Optional Apify Proxy configuration. |

Example:

```json
{
  "trendTypes": ["hashtag"],
  "region": "US",
  "periodDays": 7,
  "maxResults": 3,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
````

### Output

Each verified public ranking produces one row:

```json
{
  "ok": true,
  "trendType": "hashtag",
  "rank": 1,
  "region": "US",
  "periodDays": 7,
  "hashtag": "#exampletrend",
  "posts": 17111,
  "views": 28789647,
  "industryIds": ["23000000000"],
  "popularityCurve": [
    { "timestamp": "2026-07-19T00:00:00.000Z", "value": 54.2 }
  ],
  "topCreators": [
    { "rank": 1, "handle": "examplecreator", "followers": 120000, "country": "US" }
  ],
  "source": "tiktok_creative_center_public_ssr",
  "sourceUrl": "https://ads.tiktok.com/creative/creativeCenter/trends/hashtag?region=US&period=7"
}
```

Empty input returns a labeled sample row for automated Apify checks and Store previews. Bad input, a source block, no matching industry, unavailable types, and parsing failures return `ok: false` diagnostic rows. No sample or diagnostic row is charged.

### Proxy and cost guidance

Start with direct HTTP. The validated US anonymous page returned HTTP 200 without a proxy. Enable a proxy only after a 403 or 429 response, because a residential proxy adds bandwidth cost to an otherwise small HTML response.

Residential proxy traffic does not make unavailable trend types profitable: it cannot turn the permission-denied legacy API, Coming soon Creator tab, absent Song tab, or missing Top Ads route into a verified anonymous source. Before setting a Store event price, run direct and residential benchmark batches with the exact response sizes and require the post-platform-fee margin to stay positive.

### Run locally

```bash
npm ci
npm test
npm run check
npm run test:live
```

`npm run test:live` calls the public US hashtag page and fails unless it receives at least one real normalized row. It makes no Apify event charges.

# Actor input Schema

## `trendTypes` (type: `array`):

Hashtag is supported from TikTok's anonymous public Creative Center page. Video, creator, song, and ad requests are probed only through documented availability checks and never charged when public data is unavailable.

## `region` (type: `string`):

ISO country code. Hashtag rankings currently support 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, and VN.

## `periodDays` (type: `integer`):

Creative Center comparison period in days.

## `industryIds` (type: `array`):

Optional local filter. TikTok returns industry IDs with public hashtag results; only matching returned hashtags are kept. Use IDs such as 11000000000 or 23000000000 exactly as exposed by Creative Center.

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

Anonymous public Creative Center currently exposes up to three hashtag rankings. Higher values do not cause login-gated paging.

## `requestTimeoutSecs` (type: `integer`):

Maximum time for the Creative Center page request.

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

Optional. Direct requests are used by default. Enable Apify Proxy only after a direct block; residential proxy use adds bandwidth cost and does not unlock login-gated or unavailable trend types.

## Actor input object example

```json
{
  "trendTypes": [
    "hashtag"
  ],
  "region": "US",
  "periodDays": 7,
  "maxResults": 3,
  "requestTimeoutSecs": 25,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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 = {
    "trendTypes": [
        "hashtag"
    ],
    "region": "US",
    "periodDays": 7
};

// Run the Actor and wait for it to finish
const run = await client.actor("dami_studio/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 = {
    "trendTypes": ["hashtag"],
    "region": "US",
    "periodDays": 7,
}

# Run the Actor and wait for it to finish
run = client.actor("dami_studio/tiktok-creative-center-trends").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 '{
  "trendTypes": [
    "hashtag"
  ],
  "region": "US",
  "periodDays": 7
}' |
apify call dami_studio/tiktok-creative-center-trends --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "TikTok Creative Center Trends - Public Hashtag Rankings",
        "description": "Get verified public TikTok Creative Center hashtag rankings by region and period. No login or cookies are used. Includes popularity curves, posts, views, industries, and top creators. Direct HTTP first with optional proxy fallback.",
        "version": "0.1",
        "x-build-id": "D1gbUheiBhQQlLadC"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/dami_studio~tiktok-creative-center-trends/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-dami_studio-tiktok-creative-center-trends",
                "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/dami_studio~tiktok-creative-center-trends/runs": {
            "post": {
                "operationId": "runs-sync-dami_studio-tiktok-creative-center-trends",
                "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/dami_studio~tiktok-creative-center-trends/run-sync": {
            "post": {
                "operationId": "run-sync-dami_studio-tiktok-creative-center-trends",
                "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": {
                    "trendTypes": {
                        "title": "Trend types",
                        "type": "array",
                        "description": "Hashtag is supported from TikTok's anonymous public Creative Center page. Video, creator, song, and ad requests are probed only through documented availability checks and never charged when public data is unavailable.",
                        "items": {
                            "type": "string"
                        },
                        "default": [
                            "hashtag"
                        ]
                    },
                    "region": {
                        "title": "Region",
                        "enum": [
                            "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"
                        ],
                        "type": "string",
                        "description": "ISO country code. Hashtag rankings currently support 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, and VN.",
                        "default": "US"
                    },
                    "periodDays": {
                        "title": "Time period",
                        "minimum": 7,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Creative Center comparison period in days.",
                        "default": 7
                    },
                    "industryIds": {
                        "title": "Industry IDs",
                        "type": "array",
                        "description": "Optional local filter. TikTok returns industry IDs with public hashtag results; only matching returned hashtags are kept. Use IDs such as 11000000000 or 23000000000 exactly as exposed by Creative Center.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Maximum results",
                        "minimum": 1,
                        "maximum": 3,
                        "type": "integer",
                        "description": "Anonymous public Creative Center currently exposes up to three hashtag rankings. Higher values do not cause login-gated paging.",
                        "default": 3
                    },
                    "requestTimeoutSecs": {
                        "title": "Request timeout",
                        "minimum": 8,
                        "maximum": 60,
                        "type": "integer",
                        "description": "Maximum time for the Creative Center page request.",
                        "default": 25
                    },
                    "proxyConfiguration": {
                        "title": "Proxy",
                        "type": "object",
                        "description": "Optional. Direct requests are used by default. Enable Apify Proxy only after a direct block; residential proxy use adds bandwidth cost and does not unlock login-gated or unavailable trend types.",
                        "default": {
                            "useApifyProxy": 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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
