# Tiktok Trending Hashtags Scraper (`scrapio/tiktok-trending-hashtags-scraper`) Actor

Scrapes trending TikTok hashtags by region or category, capturing hashtag names, views, related tags, top videos, creators, and engagement metrics. Ideal for trend research, content planning, influencer insights, and automated discovery of high-growth hashtag opportunities

- **URL**: https://apify.com/scrapio/tiktok-trending-hashtags-scraper.md
- **Developed by:** [Scrapio](https://apify.com/scrapio) (community)
- **Categories:** Lead generation, Social media, Videos
- **Stats:** 18 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$14.99/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 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 Scraper — Extract Trending Hashtags, Analytics and Creators

TikTok Trending Hashtags Scraper pulls TikTok Creative Center's live trending-hashtag ranking — rank, video views, publish count, industry, country context, and a full popularity-trend curve — for any of 73 countries and three time windows. Unlike scraping frameworks that return raw HTML, TikTok Trending Hashtags Scraper returns typed JSON — ready for your model, your database, or your pipeline without any parsing. This guide covers every field it returns and how marketing, research, and data teams actually deploy it in ongoing pipelines.

### 🧭 What Does TikTok Trending Hashtags Scraper Do?

TikTok Trending Hashtags Scraper connects to TikTok Creative Center's public trend-discovery surface and returns the current trending-hashtag ranking, optional deep per-hashtag analytics, or analytics for a custom hashtag watchlist you supply. No TikTok account, login, or API key is required — it works entirely against TikTok's publicly accessible Creative Center pages.

- Fetches the live Top 100 trending-hashtag ranking for a chosen country and period (7/30/120 days)
- Enriches each hashtag with a nested `analytics` object (views, publish count, trend curve, top creators) in the same run
- Resolves analytics for your own custom hashtag list instead of the general trending ranking
- Filters the ranking by 18 TikTok Creative Center industry categories
- Isolates hashtags that newly entered the Top 100 in the selected period
- Tracks rank movement (`new`/`up`/`down`/`same`) across runs using its own persisted rank history
- Escalates through no-proxy, datacenter, and residential proxies automatically if TikTok rate-limits a request

### ⚡ Features & Capabilities

TikTok Trending Hashtags Scraper's capabilities split into three areas: what it collects, how it holds up across runs, and where it sits relative to the rest of the TikTok toolset in the Scrapio catalog.

#### Core features

- **Live Top 100 ranking** — `rank`, `hashtag_name`, `hashtag_id`, `video_views`, `publish_cnt` pulled directly from TikTok Creative Center's current `GetHashtagList` endpoint, not a cached snapshot
- **Country and period control** — 73-country enum (or `ALL`) crossed with 7/30/120-day windows via `country` and `top100_period`
- **Industry filtering** — narrow the ranking to 1 of 18 Creative Center industry categories with `top100_industry`
- **New-entrant detection** — `top100_new_on_board` flag isolates hashtags that are new to the Top 100 this period
- **Custom hashtag analytics** — `hashtag_list` fetches the same field set for your own hashtags instead of the general ranking
- **Nested analytics blob** — `top100_with_analytics` / `analytics` result types add `analytics.trend`, `analytics.top_creators`, and repeat the numeric fields for convenient downstream access
- **Cross-run rank tracking** — `rank_diff_type` / `rank_change_readable` are derived from a persistent, actor-owned rank-history store keyed by hashtag + country + period, not from a dead TikTok field
- **Automatic proxy escalation** — `proxyConfiguration` drives a none → datacenter → residential fallback chain when TikTok returns a blocked status

#### TikTok Trending Hashtags Scraper within the Scrapio data stack

TikTok Trending Hashtags Scraper covers trending hashtags, per-hashtag analytics, and the creators behind them. For trending videos with author engagement, use `tiktok-trending-videos-insights-author-engagement`. For a growth-tracking view of trending videos across runs (view/like/comment/share deltas), use `tiktok-trending-videos-scraper-with-video-views-count`. Together these three cover TikTok's trend-discovery surface: hashtags, videos, and video growth over time.

### Why do developers and data teams scrape TikTok?

TikTok's trend-discovery data attracts a specific set of buyers, since hashtag rank, view counts, and industry classification map directly onto commercial and research decisions rather than general web content.

#### 🏢 Marketing, social, and content strategy teams

Social media managers and agencies pull `rank` and `rank_change_readable` for a target country/industry to build a weekly content calendar, prioritizing hashtags flagged `"new"` or `"up"` over ones marked `"down"`. Combined with `publish_cnt` and `video_views`, teams can distinguish an oversaturated hashtag (high `publish_cnt`, flat `trend`) from an emerging one (low `publish_cnt`, rising `trend` curve) before briefing creators, and export the ranking straight into a content-planning sheet via CSV.

#### 📊 AI training data and RAG indexing

The `trend` time series and `industry_info.industry_labels` are the highest-information fields for AI use: `trend` gives a normalized 0–100 popularity curve usable as a numeric feature, while `industry_labels` gives a clean categorical tag with no free-text cleanup needed. For RAG, indexing `hashtag_name` alongside `rank_change_readable` and `period` lets an agent answer "what's trending in \[industry] right now" directly from retrieved rows. For training data, `rank`, `publish_cnt`, and `video_views` are consistently typed integers across every record, requiring no schema normalization before use.

#### 📱 Competitive and market intelligence

Brands and analysts track how a competitor's owned or sponsored hashtags move through `rank` and `rank_diff_type` over successive scheduled runs, watching `video_views` and `publish_cnt` for the growth rate behind a campaign rather than a single-point-in-time count.

#### 🔬 Research and academic use

Researchers studying platform virality use the `trend` popularity curve and cross-run `rank_change_readable` history to model how hashtags rise and fall over 7/30/120-day windows. Scope is limited to TikTok's own public Creative Center preview — no private account or message data is ever involved.

#### 🎥 Product and SaaS development

Teams building trend-monitoring dashboards, hashtag-recommendation tools, or content-calendar SaaS products use this actor as the ingestion layer, scheduling runs per country/industry combination and writing `rank`, `trend`, and `rank_change_readable` straight into their own database schema.

### 🍚 Input Parameters

None of the eight input parameters are required — every field has a default, so an empty run returns the global Top 100 for the last 7 days.

| Parameter | Required | Type | Description | Example Value |
| --- | --- | --- | --- | --- |
| `result_type` | No | string | What to return: `top100` (Top 100 Ranking, default), `top100_with_analytics` (Top 100 + nested analytics), or `analytics` (analytics for `hashtag_list`) | `"top100_with_analytics"` |
| `country` | No | string | Country to pull the ranking/analytics for; `"ALL"` (default) for global | `"US"` |
| `top100_period` | No | string | Time window for the Top 100 ranking: `"7"` (default), `"30"`, or `"120"` days | `"30"` |
| `analytics_period` | No | string | Time window for analytics curves (used when `result_type` is `analytics`): `"7"`, `"30"` (default), `"120"`, `"365"`, or `"1095"` days | `"365"` |
| `top100_industry` | No | string | Filter the Top 100 by one of 18 Creative Center industry IDs; `""` (default) = all industries | `"9000000002"` |
| `top100_new_on_board` | No | boolean | Return only hashtags newly entering the Top 100 in the chosen period; default `false` | `true` |
| `hashtag_list` | No | array | Hashtags (without `#`) to fetch analytics for; only used when `result_type` is `analytics`; default `[]` | `["rainbowpfp", "grwm"]` |
| `proxyConfiguration` | No | object | Apify proxy configuration; no proxy used by default — the actor escalates to datacenter then residential automatically on a blocked response | `{ "useApifyProxy": false }` |

#### Input example

```json
{
  "result_type": "top100_with_analytics",
  "country": "US",
  "top100_period": "7",
  "top100_industry": "",
  "top100_new_on_board": false,
  "hashtag_list": [],
  "proxyConfiguration": { "useApifyProxy": false }
}
```

#### Supported URL types and input formats

This actor does not take page URLs as input — it drives TikTok Creative Center's own trend endpoint using country, period, and industry selectors, plus an optional plain-text hashtag list.

- **Global Top 100, no filters:** `{ "result_type": "top100", "country": "ALL", "top100_period": "7" }` — `"ALL"` is normalized to the `US` request internally, since that mirrors how TikTok's own Creative Center client resolves an unset country.
- **Industry-filtered Top 100 with analytics:** `{ "result_type": "top100_with_analytics", "country": "GB", "top100_period": "30", "top100_industry": "10000000000" }` — food & beverage hashtags trending in the UK over 30 days, with the nested analytics blob.
- **Custom hashtag watchlist:** `{ "result_type": "analytics", "country": "US", "analytics_period": "365", "hashtag_list": ["rainbowpfp", "grwm"] }` — hashtags are matched case-insensitively against the current live trending preview; a hashtag not present there returns no analytics for that combination.

### 📦 Output Format

Every run pushes one typed JSON record per hashtag to the dataset, in addition to writing the same array to the key-value store as `output.json`. Results are downloadable through Apify's standard dataset export formats (JSON, CSV, Excel/XLSX, and the Console table view) — no format-specific behavior is built into the actor itself.

#### Output for trending hashtags

Real, verified row from a `top100` run (13 fields — the actor's full output for this result type):

```json
{
  "hashtag_id": "1598391085330438",
  "hashtag_name": "rainbowpfp",
  "country_info": { "id": "US", "value": "United States", "label": "US" },
  "industry_info": { "industry_ids": ["23000000000"], "industry_labels": ["Baby, Kids & Maternity"] },
  "is_promoted": null,
  "trend": [
    { "time": 1783641600, "value": 0 },
    { "time": 1784160000, "value": 100 }
  ],
  "publish_cnt": 176599,
  "video_views": 157573033,
  "rank": 1,
  "rank_diff_type": "new",
  "period": "7",
  "rank_change_readable": "New",
  "scrapedAt": "2026-07-18T05:51:48.260386+00:00"
}
```

`is_promoted` is honestly reported as `null` — TikTok's current public payload does not include a promoted/ad flag at all, and this actor never substitutes a guessed `false` for a field TikTok simply doesn't send.

#### Output for hashtag analytics

When `result_type` is `top100_with_analytics` or `analytics`, every row above gains a nested `analytics` object:

```json
{
  "hashtag_id": "1598391085330438",
  "hashtag_name": "rainbowpfp",
  "country_info": { "id": "US", "value": "United States", "label": "US" },
  "industry_info": { "industry_ids": ["23000000000"], "industry_labels": ["Baby, Kids & Maternity"] },
  "is_promoted": null,
  "trend": [{ "time": 1783641600, "value": 0 }, { "time": 1784160000, "value": 100 }],
  "publish_cnt": 176599,
  "video_views": 157573033,
  "rank": 1,
  "rank_diff_type": "new",
  "period": "7",
  "rank_change_readable": "New",
  "scrapedAt": "2026-07-18T05:51:48.260386+00:00",
  "analytics": {
    "video_views": 157573033,
    "publish_cnt": 176599,
    "rank": 1,
    "industry_info": { "industry_ids": ["23000000000"], "industry_labels": ["Baby, Kids & Maternity"] },
    "trend": [{ "time": 1783641600, "value": 0 }, { "time": 1784160000, "value": 100 }],
    "top_creators": []
  }
}
```

`analytics.top_creators` is a direct, unmodified pass-through of TikTok's own `topCreators` array for that hashtag — this actor does not rename or restructure its contents, so it is empty whenever TikTok's live response doesn't include creator data for that hashtag/country/period combination, and populated with whatever creator fields TikTok itself sends when it does.

#### Schema stability and export options

All 13 base fields (plus `analytics` when requested) are guaranteed present on every row, even when TikTok's own upstream field disappears — `is_promoted` stays in the schema as `null` rather than being dropped, and `rank_diff_type`/`rank_change_readable` are computed from this actor's own persisted rank-history store rather than removed when TikTok's equivalent field went dark. The `analytics` key is written to every export (JSON, CSV, Excel) but is not part of the default Console table view's 13 visible columns — open the row detail or switch to the JSON/CSV export to see it.

### 💡 TikTok Trending Hashtags Scraper Strategy Guide

#### 🎯 Strategy 1: Real-time enrichment pipeline

Trigger a run on demand — from a content-calendar tool, a Zapier/Make webhook, or a manual Console start — with `result_type: "analytics"` and `hashtag_list` set to the hashtags a creator is considering. Read back `rank`, `video_views`, `publish_cnt`, and `analytics.trend` for each, and append them as enrichment columns on the inbound record (a content brief, a campaign row, a CRM entry) before it reaches a human reviewer. Because unresolved hashtags are simply omitted from the output rather than erroring, downstream logic can treat a missing row as "not currently trending" without extra branching.

#### 🎯 Strategy 2: Scheduled monitoring and alerting

Use an Apify Schedule to run the actor on a recurring cadence against the same `country` + `top100_period` combination. Because this actor persists its own cross-run rank history (keyed by hashtag + country + period), every scheduled run automatically produces a real `rank_diff_type` of `"new"`, `"up"`, `"down"`, or `"same"` compared to the previous run — no external diffing step is required. Alert your team when a tracked hashtag's `rank_change_readable` flips to `"Up"` or `"New"`, or when `top100_new_on_board` surfaces a fresh entrant in your target industry.

#### 🎯 Strategy 3: Bulk dataset build

For a research or training dataset spanning multiple markets, queue one run per `country` (or per `country` + `top100_industry` pair) and aggregate each run's dataset into a CSV or database table keyed by `hashtag_id` + `country_info.id` + `period`. Because every field returns as a typed primitive (strings, integers, booleans, nested objects), rows can be loaded directly into a table schema without a normalization pass. No actor-level concurrency limit is documented in the input schema, so parallelism is bounded by your own Apify plan and TikTok's anonymous-preview response size rather than a fixed cap in this actor.

#### Strategy comparison at a glance

| Strategy | Best for | Run pattern | Output format |
| --- | --- | --- | --- |
| Real-time enrichment | Enriching a single hashtag or short list on demand | On-demand / webhook-triggered single run | JSON appended to the calling system's record |
| Scheduled monitoring | Tracking rank movement on a fixed watchlist over time | Recurring Apify Schedule against the same country/period | Dataset diffed via `rank_diff_type` each run |
| Bulk dataset build | Multi-country or multi-industry research datasets | Parallel runs, one per country/industry combination | Aggregated CSV or database table |

### 🌴 Related TikTok Scrapers & Tools

| Scraper Name | What it extracts |
| --- | --- |
| `tiktok-trending-videos-insights-author-engagement` | TikTok Ads Creative Center top ads enriched with real organic video engagement and the creator's public profile |
| `tiktok-trending-videos-scraper-with-video-views-count` | Trending TikTok videos tracked across runs, with view/like/comment/share deltas and rank-shift status |
| `instagram-hashtag-engagement-scraper` | Instagram posts and reels by hashtag, enriched with derived engagement metrics |
| `instagram-related-hashtag-stats-scraper-top-creators-with-engagement` | Instagram hashtag stats, related tags, top posts, and a ranked top-creators list |
| `google-trends-scraper-regional-popularity-breakdown` | Google Trends search-interest data broken down by region, for cross-referencing a hashtag's topic against broader search demand |

### How to integrate TikTok Trending Hashtags Scraper with your stack

TikTok Trending Hashtags Scraper works with any language or tool that can make an HTTP request, via the Apify API or an official SDK.

#### Python

```python
import csv
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")

countries = ["US", "GB", "DE"]
all_rows = []

for country in countries:
    run = client.actor("tiktok-trending-hashtags-scraper-pay-per-events").call(
        run_input={
            "result_type": "top100_with_analytics",
            "country": country,
            "top100_period": "7",
        }
    )
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        all_rows.append(item)

with open("tiktok_trending_hashtags.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.DictWriter(f, fieldnames=[
        "hashtag_id", "hashtag_name", "rank", "video_views",
        "publish_cnt", "rank_change_readable", "period", "scrapedAt",
    ])
    writer.writeheader()
    for row in all_rows:
        writer.writerow({k: row.get(k) for k in writer.fieldnames})

print(f"Saved {len(all_rows)} hashtag rows across {len(countries)} countries")
```

#### Node.js

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });

const run = await client.actor('tiktok-trending-hashtags-scraper-pay-per-events').call({
    result_type: 'analytics',
    country: 'US',
    analytics_period: '30',
    hashtag_list: ['rainbowpfp', 'grwm'],
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();

for (const item of items) {
    console.log(item.hashtag_name, item.rank, item.rank_change_readable);
}
```

#### Async and scheduled pipelines

For large or recurring jobs, start the run asynchronously via `client.actor(...).start()` (Python) or `.start()` (Node.js) instead of `.call()`, then poll the run status or attach an Apify webhook to fire when the run finishes — no result is blocked on a held-open HTTP connection. For ongoing monitoring, an Apify Schedule triggers the run on a fixed cadence, which is what makes the rank-history-based Strategy 2 above work without any external scheduler.

### 🎯 Who Needs TikTok Trending Hashtags Scraper? (Use Cases & Industries)

#### 🏢 Marketing, social, and content strategy teams

A social agency running campaigns across several markets pulls `rank`, `rank_change_readable`, and `top100_industry` filters per client vertical every week, feeding hashtags marked `"New"` or `"Up"` directly into the next content brief instead of relying on guesswork.

#### 📊 AI training and RAG teams

Teams building a TikTok-trend-aware assistant index `hashtag_name`, `industry_info.industry_labels`, and the `trend` curve so the assistant can answer "what's trending in \[industry] in \[country] right now" from retrieved rows instead of a stale training cutoff.

#### 📱 Competitive and market intelligence analysts

Analysts track a competitor's or their own brand's hashtags over scheduled runs, watching `rank_diff_type` and `video_views` growth to time a campaign push or catch a competitor's hashtag losing momentum before a report is due.

#### 🔬 Researchers

Academic and market researchers studying platform virality pull the `trend` popularity curve and cross-run rank history across countries and industries to model how trends propagate — scoped to TikTok's own public preview data only.

#### 🎥 Product and SaaS builders

Teams building hashtag-recommendation tools or trend dashboards schedule runs per country/industry and write `rank`, `trend`, and `rank_change_readable` straight into their product's own database as the ingestion layer.

### Is it legal to scrape TikTok?

Yes — scraping publicly accessible data, like TikTok Creative Center's trending-hashtag ranking, is generally lawful; courts have distinguished scraping public web data from unauthorized computer access (*hiQ Labs, Inc. v. LinkedIn Corp.*, 9th Cir., 2019). Separately, TikTok's Terms of Service may restrict automated access to its platform — violating a website's terms is a potential civil contract matter between you and TikTok, not a criminal one, but it is a real risk to weigh. On data protection: the base trending-hashtag ranking is aggregate, non-personal data, but the optional `analytics.top_creators` field can carry public creator-identifying data (handles, follower counts) when TikTok includes it, so GDPR/CCPA-style lawful-basis considerations apply specifically to that field, not to the ranking itself. TikTok Trending Hashtags Scraper returns only publicly accessible data. What you do with that data is your responsibility — consult legal counsel for commercial applications involving personal data.

### ❓ Frequently asked questions

#### Does TikTok Trending Hashtags Scraper work without a TikTok account?

Yes — it requires no TikTok login, account, or API key. It runs entirely against TikTok Creative Center's public Trends page, seeding a session by loading that page before querying the live ranking endpoint.

#### How does TikTok Trending Hashtags Scraper handle TikTok's anti-scraping measures?

It navigates the public Trends page with a real Playwright browser session to seed cookies before firing the ranking request through that same session, retries up to 3 times with backoff on a non-200 response, and automatically escalates from no proxy to datacenter proxy to residential proxy if TikTok returns a blocked status (403/429/503).

#### Can I run TikTok Trending Hashtags Scraper at scale without getting blocked?

It handles blocking through automatic proxy escalation and retries rather than a guaranteed unblockable connection; no uptime or success-rate figure is published for this behavior. Running with a residential proxy configured is the most resilient option for larger or geo-targeted volumes.

#### How fresh is the data TikTok Trending Hashtags Scraper returns?

It fetches live on every run — there is no caching layer. `rank_diff_type` and `rank_change_readable`, however, are intentionally computed by comparing the current live fetch to this actor's own stored result from the previous run, not from a cached value.

#### Why do I only get a handful of hashtags per country/period?

TikTok Creative Center's anonymous, logged-out access exposes only a small public preview of its full ranking; the actor requests up to 100 hashtags by default but returns exactly what TikTok's public preview makes available for that country and period, and logs a warning rather than padding the result when TikTok returns fewer.

#### Which TikTok Trending Hashtags Scraper fields work best for AI training and RAG indexing?

For RAG, index `hashtag_name`, `industry_info.industry_labels`, and `rank_change_readable` for direct-answer retrieval; the `trend` array is the richest numeric feature for a training set. All fields return as typed primitives or nested objects — no text parsing or normalization is needed before loading them into a model context or feature pipeline.

#### Does using `analytics.top_creators` raise data-protection concerns?

It can — that field is a direct pass-through of whatever public creator data TikTok's own response includes for a hashtag, and is empty when TikTok doesn't return any. The base trending-hashtag ranking itself contains no personal data; if your use case pulls `analytics.top_creators`, the lawful basis for storing and using that public creator data is yours to establish.

#### What happens if a hashtag in my custom list isn't found?

It is simply excluded from the output, and the actor logs which hashtags it couldn't resolve. This happens when a hashtag isn't present in TikTok's current live anonymous preview for the selected country and period — it is not an error condition.

#### Does TikTok Trending Hashtags Scraper work with Claude, ChatGPT, and other AI agent tools?

Yes, as an HTTP endpoint callable by any agent framework through the Apify API — every response is typed JSON, so an agent can parse it directly into its context window without an HTML-scraping or cleanup step.

### ℹ️ Disclaimer

TikTok Trending Hashtags Scraper extracts only publicly available data from TikTok. This tool is intended for lawful use cases only. Users are responsible for complying with TikTok's terms of service and applicable data protection laws in their jurisdiction.

# Actor input Schema

## `result_type` (type: `string`):

✨ **Choose what the scraper should return.**

• 🏆 **Top 100 Ranking** — Just the trending list.
• 📊 **Top 100 + Analytics** — Trending list with deep per-hashtag stats.
• 🔬 **Hashtag Analytics** — Analytics for your own hashtags (use `Hashtag List` below).

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

🗺️ **Pick a country** (or 🌐 *All* for global trends) to retrieve the top 100 ranking and analytics from.

## `top100_period` (type: `string`):

⏳ **Time window** for the Top 100 ranking. Used by `🏆 Top 100` and `📊 Top 100 + Analytics`.

## `analytics_period` (type: `string`):

🔭 **Time window for analytics curves** (trend history, engagement growth, etc). Used by `🔬 Hashtag Analytics`.

## `top100_industry` (type: `string`):

🎨 **Narrow the Top 100 ranking by industry** (TikTok Creative Center categories). Leave on 🌐 *All Industries* to skip filtering.

## `top100_new_on_board` (type: `boolean`):

✨ **Enable** to return *only* hashtags that **newly entered** the Top 100 in the chosen period — perfect for spotting fresh trends 🚀.

## `hashtag_list` (type: `array`):

📝 **Add your own hashtags** (without the `#`) to fetch analytics for. ⚙️ Only used when **Result Type** = `🔬 Hashtag Analytics`.

⚠️ If a hashtag isn't popular enough in the selected country & period, TikTok returns no data for it.

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

🛰️ Choose which proxies to use. By default, **no proxy** is used. If TikTok rejects a request, the actor falls back to **datacenter proxy**, then **residential proxy** automatically.

## Actor input object example

```json
{
  "result_type": "top100",
  "country": "ALL",
  "top100_period": "7",
  "analytics_period": "30",
  "top100_industry": "",
  "top100_new_on_board": false,
  "hashtag_list": [],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapio/tiktok-trending-hashtags-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 = { "proxyConfiguration": { "useApifyProxy": False } }

# Run the Actor and wait for it to finish
run = client.actor("scrapio/tiktok-trending-hashtags-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 '{
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call scrapio/tiktok-trending-hashtags-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/5iSKRhwMlgbKimGmI/builds/edhDGrLdTTvlYMq3T/openapi.json
