YouTube has no public trends API. Trends MCP gives you structured YouTube search interest data over time via a single POST endpoint. Weekly series, period-over-period growth, and live top searches - no scraping, no quota negotiation.
YouTube publishes no keyword-level search interest data via API. The Data API covers uploads, comments, and channel metrics. What people are actually searching for - and how that's shifted over months or years - is not available through any official channel.
Trends MCP provides that data as a REST API. One POST endpoint, Bearer token auth, JSON responses.
POST https://api.trendsmcp.ai/api
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Returns weekly YouTube search interest for a keyword over the past 5 years, normalized 0-100.
{
"source": "youtube",
"keyword": "lofi study music"
}
Response shape:
[
{
"date": "2026-03-21",
"value": 72,
"volume": null,
"keyword": "lofi study music",
"source": "youtube"
}
]
Switch to daily granularity for the last 30 days:
{
"source": "youtube",
"keyword": "lofi study music",
"data_mode": "daily"
}
Calculate percentage change between any two points in time. Pass multiple periods in one call.
{
"source": "youtube",
"keyword": "asmr",
"percent_growth": ["3M", "1Y", "3Y"]
}
Growth presets available: 7D 14D 30D 1M 2M 3M 6M 9M 12M 1Y 18M 24M 2Y 36M 3Y 48M 60M 5Y MTD QTD YTD
Custom date pairs also work:
{
"source": "youtube",
"keyword": "asmr",
"percent_growth": [
{ "name": "vs last year", "recent": "2026-01-01", "baseline": "2025-01-01" }
]
}
Pull the live YouTube trending searches feed without a keyword:
{
"mode": "top_trends",
"type": "Google Trends",
"limit": 25
}
Python
import requests
res = requests.post(
"https://api.trendsmcp.ai/api",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"source": "youtube", "keyword": "asmr", "percent_growth": ["3M", "1Y"]}
)
data = res.json()
JavaScript
const res = await fetch("https://api.trendsmcp.ai/api", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({ source: "youtube", keyword: "asmr", percent_growth: ["3M", "1Y"] })
});
const data = await res.json();
| Status | Code | Meaning |
|---|---|---|
| 400 | missing_parameter |
Required field absent from request body |
| 400 | invalid_source |
Source value not recognized |
| 401 | Missing or invalid API key | |
| 404 | not_found |
No data for this keyword |
| 429 | rate_limited |
Monthly limit reached |
FAQ