Skip to main content

YouTube has no public trends API. This package gives you YouTube search interest data over time via a single call. Weekly series, growth percentages, and live trending searches. No scraping. Powered by trendsmcp.ai

Project description

youtube-trends-api

PyPI version Python versions License: MIT

The number one Python package for YouTube trend data. YouTube has no public trends API. This package gives you YouTube search interest over time via a single REST call. Weekly series, growth percentages, and live trending searches. No scraping, no YouTube API key, no OAuth.

Works as a Python API client in any script, notebook, or pipeline. Also works as an MCP tool — plug it directly into Claude, Cursor, VS Code Copilot, or any MCP-compatible AI host.

Powered by trendsmcp.ai.

Get a free API key — 100 requests/month, no credit card.

Full API docs


Requirements

Python 3.8 or later. Depends on trendsmcp.


Install

pip install youtube-trends-api

Connect

Store your API key in an environment variable:

export TRENDSMCP_API_KEY="your-api-key"
import os
from youtube_trends_api import TrendsMcpClient, SOURCE

client = TrendsMcpClient(api_key=os.environ["TRENDSMCP_API_KEY"])

SOURCE is pre-set to "youtube". Pass it directly to any method.


get_trends

Returns a weekly time series for a YouTube keyword. Default is 5 years of weekly data.

import os
from youtube_trends_api import TrendsMcpClient, SOURCE

client = TrendsMcpClient(api_key=os.environ["TRENDSMCP_API_KEY"])

series = client.get_trends(source=SOURCE, keyword="asmr")

print(series[0])
# TrendsDataPoint(date='2021-01-03', value=54, keyword='asmr', source='youtube')

print(series[-1])
# TrendsDataPoint(date='2026-03-23', value=72, keyword='asmr', source='youtube')

# Daily granularity (last 30 days)
series = client.get_trends(source=SOURCE, keyword="asmr", data_mode="daily")

Parameters

Parameter Type Required Description
source str Yes Use SOURCE or pass any supported source string
keyword str Yes Keyword to query
data_mode str No "weekly" (default) or "daily"

Response fields

Field Type Description
date str ISO date string
value float Normalized value 0 to 100
volume float or None Absolute volume estimate where available
keyword str The keyword queried
source str The data source

get_growth

Returns period-over-period growth percentages for a keyword.

growth = client.get_growth(
    source=SOURCE,
    keyword="asmr",
    percent_growth=["3M", "12M", "YTD"],
)

for r in growth.results:
    print(f"{r.period}: {r.growth:+.1f}% ({r.direction})")
# 3M: +8.2% (increase)
# 12M: +14.5% (increase)
# YTD: +5.1% (increase)

Growth presets: 7D 14D 30D 1M 2M 3M 6M 9M 12M 1Y 18M 24M 2Y 36M 3Y 48M 60M 5Y MTD QTD YTD

Custom date ranges:

from youtube_trends_api import TrendsMcpClient, SOURCE, CustomGrowthPeriod
import os

client = TrendsMcpClient(api_key=os.environ["TRENDSMCP_API_KEY"])

growth = client.get_growth(
    source=SOURCE,
    keyword="asmr",
    percent_growth=[
        CustomGrowthPeriod(name="last quarter", recent="2026-03-31", baseline="2026-01-01")
    ],
)

get_top_trends

Returns today's live trending YouTube searches.

trending = client.get_top_trends(type="YouTube", limit=10)
print(trending.data)
# [[1, 'topic one'], [2, 'topic two'], ...]

Async

All three methods are available on AsyncTrendsMcpClient:

import asyncio
import os
from youtube_trends_api import AsyncTrendsMcpClient, SOURCE

async def main():
    client = AsyncTrendsMcpClient(api_key=os.environ["TRENDSMCP_API_KEY"])
    series = await client.get_trends(source=SOURCE, keyword="asmr")
    print(series[-1])

asyncio.run(main())

Error handling

from youtube_trends_api import TrendsMcpClient, TrendsMcpError, SOURCE
import os

client = TrendsMcpClient(api_key=os.environ["TRENDSMCP_API_KEY"])

try:
    series = client.get_trends(source=SOURCE, keyword="asmr")
except TrendsMcpError as e:
    print(e.status)   # HTTP status code, e.g. 429
    print(e.code)     # e.g. "rate_limited"
    print(e.message)

Supported sources

This package defaults to "youtube" but the client supports all sources.

source What it measures
"google search" Google Search volume
"google images" Google Images search volume
"google news" Google News search volume
"google shopping" Google Shopping purchase intent
"youtube" YouTube search volume
"tiktok" TikTok hashtag volume
"reddit" Reddit mention and discussion volume
"amazon" Amazon product search volume
"wikipedia" Wikipedia page views
"news volume" News article mention count
"news sentiment" News sentiment score (positive / negative)
"npm" npm package weekly downloads
"steam" Steam concurrent player count

See trendsmcp.ai/docs for the full and always up-to-date source list.


Related packages


License

MIT

Project details


Download files

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

Source Distribution

youtube_trends_api-1.0.0.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

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

youtube_trends_api-1.0.0-py3-none-any.whl (5.1 kB view details)

Uploaded Python 3

Supported by

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