Back to Discover

npm-trends-api

connector

trendsapi

npm package download trends and adoption growth over time. Free key at trendsapi.ai

View on GitHub
0 starsSynced Aug 3, 2026

Install to Claude Code

/plugin marketplace add trendsapi/npm-trends-api

README

npm Trends API - package download trends as JSON

License: MIT API v1 MCP compatible Free tier

npm trend data as clean JSON: weekly download time series for any package, growth rates and adoption signals from one REST endpoint. Track any library's trajectory without rebuilding the npm downloads API plumbing.

One endpoint. One API key. One normalized 0-100 trend score you can compare against 14 other platforms.

Docs: https://trendsapi.ai/#quickstart · llms.txt: https://trendsapi.ai/llms.txt · Free API key (100 req/mo): https://trendsapi.ai/#get-key


What a call looks like

curl -X POST https://api.trendsapi.ai/api \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"mode": "get_growth", "source": "npm", "keyword": "zod", "percent_growth": ["3M", "12M"]}'
{
  "keyword": "zod",
  "source": "npm",
  "growth": { "3M": 41.8, "12M": 212.4 },
  "timestamp": "2026-08-03T12:00:00Z"
}

Quickstart (60 seconds)

1. Get a free API key at https://trendsapi.ai/#get-key - 100 requests/month, no credit card.

2. Make your first call:

curl -X POST https://api.trendsapi.ai/api \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"mode": "get_time_series", "source": "npm", "keyword": "zod"}'

Python:

import requests

res = requests.post(
    "https://api.trendsapi.ai/api",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={"mode": "get_growth", "source": "npm", "keyword": "zod",
          "percent_growth": ["3M", "12M"]},
)
print(res.json())

Node.js:

const res = await fetch("https://api.trendsapi.ai/api", {
  method: "POST",
  headers: {
    Authorization: "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ mode: "get_growth", source: "npm", keyword: "zod",
                          percent_growth: ["3M", "12M"] }),
});
console.log(await res.json());

The three modes

ModeWhat it returnsNeeds a keyword?
get_time_seriesHistorical weekly downloads as a normalized 0-100 seriesyes
get_growthGrowth % over 3M / 6M / 12M / 5Y windowsyes
get_top_trendsLive trending feeds (21 of them)no

Why teams switch

npm downloads APITrends API
Date-range plumbingmanualhandled
NormalizationDIY0-100 score, done
Growth ratescompute yourself3M/6M/12M/5Y built in
Compare vs PyPI/Mavennosame scale as 14 other sources
Free tierfree (rate limited)100 requests/month

Use cases

  • Tech selection: is this library still growing, or did adoption plateau last year?
  • DevRel: measure your package's adoption curve after launches and talks
  • Investing in dev tools: track ecosystem momentum across competing frameworks
  • Engineering blogs: back 'why we chose X' posts with download curves

Use it from your AI assistant (MCP)

The same API key powers the Trends API MCP server, so Claude, Cursor, VS Code, ChatGPT and any MCP-compatible client can query this data in natural language.

+ Add to Cursor (one click)

Cursor / Windsurf / Cline (~/.cursor/mcp.json or equivalent):

{
  "mcpServers": {
    "trendsapi": {
      "url": "https://api.trendsapi.ai/mcp",
      "transport": "http",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}

VS Code / GitHub Copilot (.vscode/mcp.json):

{
  "servers": {
    "trendsapi": {
      "type": "http",
      "url": "https://api.trendsapi.ai/mcp",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "trendsapi": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://api.trendsapi.ai/mcp", "--header", "Authorization:${AUTH_HEADER}"],
      "env": { "AUTH_HEADER": "Bearer YOUR_API_KEY" }
    }
  }
}

Claude.ai (browser): Settings -> Connectors -> Add custom connector -> https://api.trendsapi.ai/mcp

Then ask things like:

How did "creatine gummies" grow on TikTok vs Google over the last 12 months?
What is trending on YouTube right now?

Every source on the same key

Sourcesource valueWhat it measures
Google Searchgoogle searchSearch volume
Google Imagesgoogle imagesImage search volume
Google Newsgoogle newsNews search volume
Google Shoppinggoogle shoppingShopping search volume
YouTubeyoutubeSearch volume
TikToktiktokHashtag volume
RedditredditSubreddit subscribers
AmazonamazonProduct search volume
WikipediawikipediaPage views
News volumenews volumeArticle mention volume
News sentimentnews sentimentPositive / negative score
App downloadsapp downloadsAndroid downloads (AppBrain)
App rankingsapp rankingsAndroid chart position
npmnpmWeekly package downloads
SteamsteamConcurrent players (monthly)

Live feeds (get_top_trends, no keyword needed)

Feedtype value
Google TrendsGoogle Trends
Google News Top NewsGoogle News Top News
TikTok Trending HashtagsTikTok Trending Hashtags
TikTok Trending SearchesTikTok Trending Searches
TikTok Shop Hot ProductsTikTok Shop Hot Products
YouTube TrendingYouTube Trending
X (Twitter) TrendingX (Twitter) Trending
Reddit Hot PostsReddit Hot Posts
Reddit World NewsReddit World News
Wikipedia TrendingWikipedia Trending
Amazon Best Sellers Top RatedAmazon Best Sellers Top Rated
Amazon Best Sellers by CategoryAmazon Best Sellers by Category
App Store Top FreeApp Store Top Free
App Store Top PaidApp Store Top Paid
Google PlayGoogle Play
Top WebsitesTop Websites
Spotify Top PodcastsSpotify Top Podcasts
Steam Most PlayedSteam Most Played
GitHub Trending ReposGitHub Trending Repos
IMDb MOVIEmeterIMDb MOVIEmeter
Open Library Trending BooksOpen Library Trending Books

FAQ

What npm data does Trends API provide?

Weekly download counts for any package as a normalized time series, plus growth percentages over 3M/6M/12M/5Y windows. Scoped packages like @tanstack/react-query work.

How is this different from api.npmjs.org/downloads?

npm's own API returns raw counts for date ranges you specify. Trends API normalizes those counts to 0-100, computes growth automatically, and returns the same response shape as Google, TikTok and every other source - so comparing a package's adoption against its search interest is trivial.

Can I compare two packages?

One call per package, then compare the normalized values. The 0-100 rescaling makes the comparison meaningful even when absolute download counts differ by 100x.

How fresh is the data?

Weekly series update as npm publishes new counts. Every response includes its own timestamp.

Does it work for scoped packages?

Yes. Pass the full name including the scope, e.g. @tanstack/react-query.


Links

License

MIT - see LICENSE. Data is served by Trends API; usage of the API itself is subject to the plan limits on your key.

Rendered live from trendsapi/npm-trends-api's GitHub README — not stored, always reflects the source repo.

1 Install Method

NameDescriptionCategorySource
streamable-http remoteHosted streamable-http endpointmcp-serverhttps://npm.api.trendsapi.ai/mcp

0 Comments

Login required
Log in to post a comment or update on this repo.

No comments yet — be the first to share an update.