Skip to main content

TikTok hashtag volume API

TikTok hashtag and search interest trends via the Trends API. History, growth, and live trending hashtags.

License: MIT PyPI Python

Key: trendsapi.ai/#get-key. HTTP contract: trendsapi-ai/trendsapi.

JS: trendsapi-tiktok.

Authentication

pip install trendsapi-tiktok
export TRENDSAPI_KEY=your_key

Python 3.9+. The wrapper re-exports TrendsAPI, AsyncTrendsAPI, and TrendsAPIError from the official client.

from trendsapi_tiktok import TrendsAPI

client = TrendsAPI()                    # TRENDSAPI_KEY
# client = TrendsAPI(api_key="YOUR_KEY")

Keyword helpers default to source: "tiktok". Pass source= to hit any other platform with the same client. Official full client (every source, no preset): trendsapi.

Methods

Method REST mode Returns
get_time_series(keyword, source=, data_mode=) get_time_series list[TrendsDataPoint]
get_growth(keyword, percent_growth=, source=, data_mode=) get_growth GetGrowthResponse
get_live(limit=, offset=, category=) get_top_trends GetTopTrendsResponse
get_top_trends(type=, ...) get_top_trends GetTopTrendsResponse

source is lowercase (tiktok). type is exact (TikTok Trending Hashtags). Mixing them is a 400.

from trendsapi_tiktok import TrendsAPI

client = TrendsAPI()                    # TRENDSAPI_KEY
# client = TrendsAPI(api_key="YOUR_KEY")

series = client.get_time_series("matcha")
print(series[-1].date, series[-1].value)

growth = client.get_growth("matcha", percent_growth=["3M", "12M"])
print(growth.results[0].growth, growth.results[0].direction)

hot = client.get_live(limit=10)
print(hot.data)                         # [[1, "..."], ...]

get_time_series

points = client.get_time_series("matcha")

Each point:

Field Always Meaning
date yes YYYY-MM-DD
value yes 0-100 index for this series
keyword yes Echo
volume no Absolute volume when available
source or datatype no Pipeline label

Python returns list[TrendsDataPoint]. Use .date and .value, not ["date"]. JS returns the same fields as object properties.

get_growth

g = client.get_growth("matcha", percent_growth=["12M", "3M", "YTD"])
print(g.results[0].growth, g.results[0].direction)

percent_growth default: ["12M"]. Presets: 7D 14D 30D 1M 2M 3M 6M 9M 12M/1Y 18M 24M/2Y 36M/3Y 48M 60M/5Y MTD QTD YTD. Custom: {"name": "Launch", "recent": "2024-06-01", "baseline": "2024-01-01"}.

Field Meaning
search_term Keyword
data_source Source
results One object per window (period, growth, direction, dates, values)
metadata Counts / success flag

Several windows still count as one request. Python: growth.results[0].growth. JS: growth.results[0].growth.

get_live

hot = client.get_live(limit=10)
Field Meaning
as_of_ts Snapshot time
type Feed name
limit, offset, count Pagination
data [rank, label] rows

Python: hot.data. JS: hot.data. Optional offset= and category= (Amazon Best Sellers by Category, Top Websites only).

Async

import asyncio
from trendsapi_tiktok import AsyncTrendsAPI

async def main():
    c = AsyncTrendsAPI()
    return await asyncio.gather(
        c.get_time_series("matcha"),
        c.get_time_series("matcha", source="google search"),
    )

asyncio.run(main())

Each 200 is one billed request.

Pandas

from dataclasses import asdict
import pandas as pd
from trendsapi_tiktok import TrendsAPI

df = pd.DataFrame(asdict(p) for p in TrendsAPI().get_time_series("matcha"))
df["date"] = pd.to_datetime(df["date"])
print(df.set_index("date")["value"].resample("ME").mean().tail())

Call (curl)

Field Value
Endpoint POST https://api.trendsapi.ai/api
Auth Authorization: Bearer $TRENDSAPI_KEY
History source: tiktok with get_time_series or get_growth
Keyword Hashtag or topic, e.g. matcha (# optional)
Live type TikTok Trending Hashtags, TikTok Trending Searches, TikTok Shop Hot Products
curl -sS -X POST https://api.trendsapi.ai/api \
  -H "Authorization: Bearer $TRENDSAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"mode":"get_time_series","source":"tiktok","keyword":"matcha"}'

Source notes

  • value is 0-100 for this hashtag, not view count.
  • tiktok trending hashtags (wrong case) is 400.
  • Publishing videos still requires TikTok's own APIs. This endpoint is demand only.

Errors

HTTP Client
200 Parsed payload. Python dataclasses / JS typed objects
400 Raises. Fix source or type spelling
401 Raises. Check TRENDSAPI_KEY
404 Raises. No series for that keyword. Do not retry
429 Raises. Quota
5xx Client retries, then raises

The HTTP body field is a JSON string. SDKs decode it. Raw curl must parse body a second time.

Site: https://trendsapi.ai/trends/tiktok-trends. GitHub: trendsapi-ai/tiktok-trends-api.

License

MIT. See LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

trendsapi_tiktok-1.0.2.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

trendsapi_tiktok-1.0.2-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

Details for the file trendsapi_tiktok-1.0.2.tar.gz.

File metadata

  • Download URL: trendsapi_tiktok-1.0.2.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.2

File hashes

Hashes for trendsapi_tiktok-1.0.2.tar.gz
Algorithm Hash digest
SHA256 6fd163be89246ea0fc961559e5894617a3032f7e28c2f0e8633da5c630b4a527
MD5 301b88240104605be116e495611af2b4
BLAKE2b-256 61a4ecc05abfaa067c190939a0b895320d4db6e44a5f2fbce12bd901b3b80ca7

See more details on using hashes here.

File details

Details for the file trendsapi_tiktok-1.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for trendsapi_tiktok-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 bed3a87ac95fad1de38e57ff5130a94c71c9df76429275d57caf0b97e1051af8
MD5 db01742f5f2a2aef4c99c8d1f4886f21
BLAKE2b-256 c504a26477c976c27c363e8088d7b3f390c1f1c39dc93396a8d37a0d2a5d2eac

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page