npm Trends API MCP server
npm package download trends and adoption growth over time. Free key at trendsapi.ai
0 stars
Reviews
Write oneNobody has reviewed npm Trends API yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
npm Trends API tools (4)
write = sends, deletes, buys or poststrends___get_growthFreePoint-to-point growth for a keyword on one or more sources. Each window is a preset string (12M, 3M, YTD, and the other listed periods). Values are on a 0-100 scale, plus absolute volume when available. Designed for growth questions; for charting or custom math, get_time_series provides the full series. app downloads and app rankings are keyword sources (Android bundle ID). They are not the App Store / Google Play live boards on get_top_trends. Returns a plan-limit message when the request is rate limited or the monthly quota is used up.
trends___get_time_seriesFreeFull historical series for one keyword and one source (0-100 values, plus volume when available). Suited for charting or custom math. Live 'what's trending now' boards are on get_top_trends. get_growth answers most growth questions with less data. Returns a plan-limit message when the request is rate limited or the monthly quota is used up.
trends___get_top_postsFreeLive top posts for one hashtag on one social source. Fetched live on every call; nothing is stored. For when the user already has a hashtag and wants the posts winning on it. get_top_trends ranks the hashtags themselves. Returns a plan-limit message when the request is rate limited or the monthly quota is used up.
trends___get_top_trendsFreeLive top-trending board for exactly one feed type. No keyword. For 'Amazon Best Sellers by Category', 'Google Trends by Category', 'Top Websites', 'Substack by Category', and 'TikTok Trending Hashtags by Category', category selects the board. Default sort is current rank. Use sort='rank_change' for climbers vs a prior snapshot (window 1d, 3d, 7d, 14d, or 30d). If the requested board is not in the database yet (for example a country that is not collected on the schedule), the board is fetched live. App Store Top Free, App Store Top Paid, and Google Play are live store boards, not keyword lookups. App history is available via get_growth or get_time_series with source app downloads or app rankings and an Android bundle ID. Live boards are only available here, not via get_time_series. Returns a plan-limit message when the request is rate limited or the monthly quota is used up.
Public scan report
scanner v0.1.9 · 2026-09-22 · same rubric, same numbers if you re-run it
- –Code scanremote-only server, no package to scann/a
- Live reliabilityremote reachable in 467ms20/20
- Tool poisoning4 tool descriptions checked15/15
- Auth qualityAPI key sent as a header8/15
- Maintenancelast push 35 days ago12/15
- Maintainer identitynamespace and repository owner differ; website matches verified namespace6/10
What the publisher says
From the npm Trends API repository's README, as published. We do not edit it. Read it on GitHub
npm package-download trends API
npm download interest via the Trends API. Normalized 0-100 history and growth for exact package names.
Key: trendsapi.ai/#get-key. HTTP contract and every source: trendsapi-ai/trendsapi.
Authentication
pip install trendsapi-npm
export TRENDSAPI_KEY=your_keyPython 3.9+. Same key as the HTTP API.
from trendsapi_npm import TrendsAPI
client = TrendsAPI() # TRENDSAPI_KEY
# client = TrendsAPI(api_key="YOUR_KEY")Keyword helpers default to source: "npm". Pass source= to hit any other platform with the same client. Official full client (every source, no preset): trendsapi.
Methods
source is lowercase (npm). type is exact (Google Trends). Mixing them is a 400.
from trendsapi_npm import TrendsAPI
client = TrendsAPI() # TRENDSAPI_KEY
# client = TrendsAPI(api_key="YOUR_KEY")
series = client.get_time_series("vite")
print(series[-1].date, series[-1].value)
growth = client.get_growth("vite", percent_growth=["3M", "12M"])
print(growth.results[0].growth, growth.results[0].direction)gettimeseries
points = client.get_time_series("vite")Each point:
Python returns list[TrendsDataPoint]. Use .date and .value, not ["date"]. JS returns the same fields as object properties.
get_growth
g = client.get_growth("vite", 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"}.
Several windows still count as one request. Python: growth.results[0].growth. JS: growth.results[0].growth.
Async
import asyncio
from trendsapi_npm import AsyncTrendsAPI
async def main():
c = AsyncTrendsAPI()
return await asyncio.gather(
c.get_time_series("vite"),
c.get_time_series("vite", source="google search"),
)
asyncio.run(main())Each 200 is one billed request.
Pandas
from dataclasses import asdict
import pandas as pd
from trendsapi_npm import TrendsAPI
df = pd.DataFrame(asdict(p) for p in TrendsAPI().get_time_series("vite"))
df["date"] = pd.to_datetime(df["date"])
print(df.set_index("date")["value"].resample("ME").mean().tail())Call (curl)
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Install directly
claude mcp add --transport http npm https://npm.api.trendsapi.ai/mcp
npm Trends API: common questions
- Is npm Trends API MCP server safe?
- Mostly: it is graded B (81/100). Read the npm Trends API safety report
- How do I install npm Trends API?
- It runs remotely at npm.api.trendsapi.ai. Add it to Claude Code, Claude Desktop or Cursor with the snippets above, or call it through the mcp.market gateway without installing anything.
- Does npm Trends API need an API key?
- Yes. The registry entry asks for
Authorization. - Is npm Trends API maintained?
- The last commit was 35 days ago (2026-08-18). The latest release is v1.0.1.
- Is npm Trends API up?
- 100% of our last 15 checks got an answer. We check remote servers about four times a day.