# TikTok Trend Keyword Finder (`myagizm/tiktok-trend-keyword-finder`) Actor

Discover related TikTok keywords from search suggestions, hashtags and video captions. Rank 0–100 popularity scores with views, engagement, recency and real examples.

- **URL**: https://apify.com/myagizm/tiktok-trend-keyword-finder.md
- **Developed by:** [MYM](https://apify.com/myagizm) (community)
- **Categories:** Social media, Marketing
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 ranked keywords

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## TikTok Trend Keyword Finder

Discover related TikTok keywords from live autocomplete and public search videos. Rank hashtags, caption phrases, and search suggestions using a transparent 0–100 popularity score. Export flat columns to CSV, Excel or JSON, with real video examples and thumbnails.

### Contents

- Inputs and quick start
- Output fields
- Scoring and interpretation
- Pricing and limits
- API, automation and FAQ
- 中文说明

### Quick start

```json
{"seedKeywords":["coffee","kahve","aquascaping"],"maxKeywords":50,"sampleSize":30,"includeExamples":true,"language":"en"}
```

Choose one interest area per seed. Up to 10 seeds per run; maxKeywords applies to each seed. Results are normalized to lowercase, diacritic-insensitive spelling and no leading #. The exact seed is excluded. Generic discovery tags such as fyp and foryou are excluded. Caption n-grams contain 2–3 words and require repeated usage or inclusion of the seed. Keywords are deduplicated within each seed, and sampled videos are deduplicated by video ID.

### Inputs

| Input | Default | Meaning |
|---|---|---|
| seedKeywords | \[] | One or more keywords, up to 10, 100 characters each |
| maxKeywords | 50 | Maximum ranked rows per seed, 1–200 |
| sampleSize | 30 | Up to 5–30 public search videos per seed |
| includeExamples | true | Include video links, captions and thumbnail images |
| country | empty | Optional autocomplete country hint, e.g. TR; not a guaranteed location filter |
| language | en | Autocomplete language hint; public video search remains global/multilingual |

### Output fields

| Field | Description |
|---|---|
| rank | Descending position within the seed |
| score | Relative popularity 0–100; not official search volume |
| keyword | Normalized related keyword |
| sources | Evidence types: autocomplete, hashtag, title_ngram |
| avgLikes | Matching sample metric or example metadata; null when unavailable |
| avgViews | Matching sample metric or example metadata; null when unavailable |
| platform | Matching sample metric or example metadata; null when unavailable |
| relation | Primary evidence type |
| frequency | Unique sampled videos containing this keyword |
| scrapedAt | Matching sample metric or example metadata; null when unavailable |
| totalViews | Sum of known views on matching sampled videos |
| avgComments | Matching sample metric or example metadata; null when unavailable |
| sampleCount | Unique videos sampled for this seed |
| seedKeyword | Original seed |
| topExamples | Up to three highest-view matching videos with URL/title/views/publishedAt/thumbnail |
| growthSignal | Null: historical growth is not measured |
| recencyScore | 0–1 weighted recent-content share |
| thumbnailUrl | Image from the leading example; may expire |
| topExampleUrl | Matching sample metric or example metadata; null when unavailable |
| engagementRate | Percent interactions / views on samples with known likes, comments and views |
| recent7DayShare | Share of dated matching samples posted in last 7 days |
| topExampleTitle | Matching sample metric or example metadata; null when unavailable |
| datedSampleCount | Matching sample metric or example metadata; null when unavailable |
| recent30DayShare | Share of dated matching samples posted in last 30 days |
| suggestionPosition | One-based autocomplete position, or null |
| growthSignalAvailable | False until real historical measurements exist |

### Scoring formula

score = 100 × (0.35 V + 0.20 E + 0.20 F + 0.15 R + 0.10 S), rounded to two decimals.

- V = log(1 + known totalViews) / log(1 + largest totalViews among candidates for the seed).
- E = min(1, engagementRate / 10). engagementRate = 100 × (likes + comments + known shares + known saves) / views, only for matching videos with known views, likes and comments.
- F = frequency / largest candidate frequency for this seed.
- R = 0.65 × recent7DayShare + 0.35 × recent30DayShare, among matching videos with valid dates.
- S = 1 / suggestionPosition for autocomplete candidates; otherwise 0.
  Unavailable inputs contribute zero to the score, but missing metrics stay null in the dataset. Recency is a share, not a growth estimate. Growth stays null because a single snapshot cannot establish growth. Autocomplete-only keywords can have frequency=0, null view metrics and a low score: this does not mean zero platform popularity. Scores compare candidates within the current seed/sample, not between different seeds or runs. Search samples may contain older popular content and are not a chronological or exhaustive feed. Views are sampled totals, not total hashtag views or search volumes.

### Pricing

Pay per result on paid plans: $0.001 per keyword ($1 per 1,000 rows), with no actor-start charge. FREE-tier event price is $0.01 per keyword. Eligible paid plans have no free-user quota. Free Apify plans share a 40-requested-result allowance per actor/user/UTC day and may have an additional shared platform budget. Requested, not returned, results consume that allowance.
Input errors finish SUCCEEDED with no results and no charge; see OUTPUT for the reason. Genuine no-results outcomes are uncharged. Service failures are FAILED and uncharged; do not interpret them as no interest in the seed.

### API and automation

```bash
curl -X POST 'https://api.apify.com/v2/acts/myagizm~tiktok-trend-keyword-finder/runs?token=YOUR_APIFY_TOKEN' -H 'Content-Type: application/json' -d '{"seedKeywords":["coffee"],"maxKeywords":50}'
```

Read the run's default dataset after completion. Use Apify schedules, webhooks, Make, Zapier, n8n or the Apify MCP integration for recurring research. Store snapshots externally if you want to compare changes over time. Changing images and signed thumbnail links can expire; save desired images promptly.

### FAQ

Does it measure official search volume? No. It provides an evidence-based sampled popularity score.
Can I select a country? Autocomplete accepts a hint; video search is global. Locale hints are not strict filters.
Why fewer than maxKeywords? Candidate discovery or the free daily allowance can produce fewer rows. There is no padding with generated keywords.
Are suggestions guaranteed at the top? No: ranking combines observed video popularity with autocomplete position.

### Related actors

Explore [TikTok Search](https://apify.com/myagizm/tiktok-search-scraper-v2), [TikTok Hashtags](https://apify.com/myagizm/tiktok-hashtag-scraper-v2) and [all our actors](https://apify.com/myagizm).

***

### 中文说明

使用一个或多个种子关键词，从 TikTok 实时搜索联想和公开视频的标题、文案及话题标签中发现相关关键词，按 0–100 分排序，导出 CSV、Excel 或 JSON。每个关键词可附带真实视频链接、文案、播放量、发布时间与缩略图。

输入：seedKeywords（最多 10 个，每个最多 100 字符）；maxKeywords（每个种子最多 200 行，默认 50）；sampleSize（5–30 个视频，默认 30）；includeExamples（默认 true）；country 与 language 仅为搜索联想提示，不保证国家过滤，视频搜索为全球结果。

输出：seedKeyword、keyword、score、rank、relation、sources、frequency、totalViews、avgViews、avgLikes、avgComments、engagementRate、recencyScore、recent7DayShare、recent30DayShare、sampleCount、suggestionPosition、topExamples、topExampleUrl、thumbnailUrl、platform、scrapedAt。缺失值为 null；增长信号 growthSignal 为 null，因为单次快照无法证明增长。

评分公式：100 ×（35% 对数播放量 + 20% 互动率 + 20% 出现频率 + 15% 新鲜度 + 10% 联想位置）。播放量和频率按同一种子的候选最大值归一化；互动率除以 10 并封顶 1；新鲜度 = 65% 七日比例 + 35% 三十日比例；联想权重 = 1 / 位置。无数据的信号贡献零，但输出保留 null。分数不是官方搜索量，不适合跨种子直接比较；搜索样本也不保证按发布时间排序。

价格：付费计划每行 $0.001，FREE 档每行 $0.01，无启动费。免费计划每个用户/Actor/UTC 日最多请求 40 个结果，并受共享平台预算约束；付费计划不受免费配额限制。输入错误以 SUCCEEDED 状态结束，不产生结果且不收费；原因请查看 OUTPUT。真实服务故障保持 FAILED，不收费。关键词经过小写、去重音符号、去 # 及去重处理；不会使用生成内容凑满结果。缩略图链接可能过期，请及时保存。

# Actor input Schema

## `seedKeywords` (type: `array`):

Enter up to 10 seed keywords, each 1–100 characters. Empty input finishes without charge.

## `maxKeywords` (type: `integer`):

Maximum ranked keywords per seed. Free plans share a 40-result daily allowance.

## `sampleSize` (type: `integer`):

Sample up to 30 search videos per seed; available results may be fewer.

## `includeExamples` (type: `boolean`):

Include up to three real public posts per keyword.

## `country` (type: `string`):

Optional ISO country code for autocomplete, e.g. TR. A hint, not a guaranteed filter; video search is global.

## `language` (type: `string`):

Autocomplete language hint (en, tr, etc.). Videos may be multilingual.

## Actor input object example

```json
{
  "seedKeywords": [
    "coffee"
  ],
  "maxKeywords": 50,
  "sampleSize": 30,
  "includeExamples": true,
  "country": "",
  "language": "en"
}
```

# Actor output Schema

## `keywords` (type: `string`):

No description

## `fullJson` (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 = {
    "seedKeywords": [
        "coffee"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("myagizm/tiktok-trend-keyword-finder").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 = { "seedKeywords": ["coffee"] }

# Run the Actor and wait for it to finish
run = client.actor("myagizm/tiktok-trend-keyword-finder").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 '{
  "seedKeywords": [
    "coffee"
  ]
}' |
apify call myagizm/tiktok-trend-keyword-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,myagizm/tiktok-trend-keyword-finder"
        }
    }
}
```

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/FvHvrzDv8ce3sfzg2/builds/YDwWgFS3y1cKQBWFh/openapi.json
