YouTube search interest as JSON via Trends API.
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
claude mcp add youtube-trends-api -- python -m trendsapi-youtube{
"mcpServers": {
"youtube-trends-api": {
"command": "python",
"args": ["-m", "trendsapi-youtube"],
"env": {
"TRENDSAPI_KEY": "<trendsapi_key>"
}
}
}
}TRENDSAPI_KEYMCP Servers overview
# YouTube search-interest API
YouTube search interest trends via the Trends API. History, growth, and live YouTube trending.
[](LICENSE)
[](https://pypi.org/project/trendsapi-youtube/)
[](https://trendsapi.ai)
[](https://www.npmjs.com/package/trendsapi-youtube)
Key: [trendsapi.ai/#get-key](https://trendsapi.ai/#get-key). HTTP contract and every source: [trendsapi-ai/trendsapi](https://github.com/trendsapi-ai/trendsapi).
## Authentication
```bash
pip install trendsapi-youtube
export TRENDSAPI_KEY=your_key
```
Python 3.9+. Same key as the HTTP API.
```python
from trendsapi_youtube import TrendsAPI
client = TrendsAPI() # TRENDSAPI_KEY
# client = TrendsAPI(api_key="YOUR_KEY")
```
Keyword helpers default to `source: "youtube"`. Pass `source=` to hit any other platform with the same client. Official full client (every source, no preset): [`trendsapi`](https://pypi.org/project/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 (`youtube`). `type` is exact (`YouTube Trending`). Mixing them is a 400.
```python
from trendsapi_youtube import TrendsAPI
client = TrendsAPI() # TRENDSAPI_KEY
# client = TrendsAPI(api_key="YOUR_KEY")
series = client.get_time_series("sourdough starter")
print(series[-1].date, series[-1].value)
growth = client.get_growth("sourdough starter", 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
```python
points = client.get_time_series("sourdough starter")
```
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
```python
g = client.get_growth("sourdough starter", 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
```python
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
```python
import asyncio
from trendsapi_youtube import AsyncTrendsAPI
async def main():
c = AsyncTrendsAPI()
return await asyncio.gather(
c.get_time_series("sourdough starter"),
c.get_time_series("sourdough starter", source="google search"),
)
asyncio.run(main())
```
Each 200 is one billed request.
## Pandas
```python
from dataclasses import asdict
import pandas as pd
from trendsapi_youtube import TrendsAPI
df = pd.DataFrame(asdict(p) for p in TrendsAPI().get_time_series("sourdough starter"))
df["date"] = pd.to_datetime(df["date"])
print(df.set_index("date")["value"].resample("ME").mean().tail())
```
## JavaScript / TypeScript
```bash
npm install trendsapi-youtube
```
Node 18+, Deno, Bun, Workers. Same API key. Field tables above apply.
### Methods
| Method | REST `mode` | Returns |
|---|---|---|
| `getTimeSeries(keyword, { source, data_mode })` | `get_time_series` | weekly points |
| `getGrowth(keyword, { percent_growth, source, data_mode })` | `get_growth` | growth object |
| `getLive({ limit, offset, category })` | `get_top_trends` | live feed |
| `getTopTrends({ type, ... })` | `get_top_trends` | live feed |
```ts
import { TrendsAPI } from "trendsapi-youtube";
const client = new TrendsAPI({ apiKey: process.env.TRENDSAPI_KEY! });
const series = await client.getTimeSeries("sourdough starter");
console.log(series.at(-1)?.date, series.at(-1)?.value);
const growth = await client.getGrowth("sourdough starter", {
percent_growth: ["3M", "12M"],
});
console.log(growth.results[0].growth, growth.results[0].direction);
const live = await client.getLive({ limit: 10 });
console.log(live.data); // [[1, "..."], ...]
```
## Call (curl)
| Field | Value |
|---|---|
| Endpoint | `POST https://api.trendsapi.ai/api` |
| Auth | `Authorization: Bearer $TRENDSAPI_KEY` |
| History | `source: youtube` with `get_time_series` or `get_growth` |
| Keyword | Search phrase, e.g. sourdough starter |
| Live `type` | YouTube Trending |
```bash
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":"youtube","keyword":"sourdough starter"}'
```
## Source notes
- `value` is 0-100 for this term on YouTube only, not video metadata.
- `type` is `YouTube Trending`, not `youtube`.
- No `regionCode` on this endpoint.
## 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/youtube-trends](https://trendsapi.ai/trends/youtube-trends).
## License
MIT. See [LICENSE](LICENSE).
What people ask about youtube-trends-api
What is trendsapi-ai/youtube-trends-api?
+
trendsapi-ai/youtube-trends-api is mcp servers for the Claude AI ecosystem. YouTube search interest as JSON via Trends API. It has 0 GitHub stars and its last recorded update is dated 2026-08-18.
How do I install youtube-trends-api?
+
You can install youtube-trends-api by cloning the repository (https://github.com/trendsapi-ai/youtube-trends-api) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is trendsapi-ai/youtube-trends-api safe to use?
+
Our security agent has analyzed trendsapi-ai/youtube-trends-api and assigned a Trust Score of 95/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.
Who maintains trendsapi-ai/youtube-trends-api?
+
trendsapi-ai/youtube-trends-api is maintained by trendsapi-ai. The last recorded GitHub activity is dated 2026-08-18, with 0 open issues.
Are there alternatives to youtube-trends-api?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy youtube-trends-api to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/trendsapi-ai-youtube-trends-api)<a href="https://claudewave.com/repo/trendsapi-ai-youtube-trends-api"><img src="https://claudewave.com/api/badge/trendsapi-ai-youtube-trends-api" alt="Featured on ClaudeWave: trendsapi-ai/youtube-trends-api" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!