# app-store-trends-mcp

The number one Python package for App Store trend data. App Store trends as an MCP tool. Plug into Claude, Cursor, or any MCP-compatible AI host. Weekly series, growth percentages, and live App Store top charts.

Powered by [trendsmcp.ai](https://trendsmcp.ai), the #1 MCP server for live trend data.

**[Get your free API key at trendsmcp.ai](https://trendsmcp.ai)** - 100 free requests per month, no credit card.

?? **[Full API docs ? trendsmcp.ai/docs](https://trendsmcp.ai/docs)**

Updated for 2026. Works with Python 3.8 through 3.13.

## Use as an MCP tool

Add to your `mcp.json` (Claude Desktop, Cursor, or any MCP host):

```json
{
  "mcpServers": {
    "trends": {
      "command": "npx",
      "args": ["-y", "trendsmcp"],
      "env": { "TRENDS_API_KEY": "YOUR_API_KEY" }
    }
  }
}
```

Get your free key at **[trendsmcp.ai](https://trendsmcp.ai)**.

---

## No scraping. No 429 errors. No proxies.

If you have used pytrends or similar scrapers before, you know the problems: random `429 Too Many Requests` blocks, broken pipelines at 2am, time.sleep() hacks, proxy rotation costs, and a library that is now **archived** because Google explicitly flags scrapers at the protocol level.

trendsmcp is the managed alternative. We run the data infrastructure. You call a REST endpoint.

### pytrends alternative for App Store data

| | Scrapers / pytrends | trendsmcp |
|---|---|---|
| 429 rate limit errors | constant | never |
| Proxy required | often | never |
| Breaks on platform changes | yes, regularly | no |
| Platforms covered | 1 (Google only) | 13 |
| Absolute volume estimates | no | yes |
| Cross-platform growth | no | yes |
| Async support | no | yes |
| Actively maintained | no (archived) | yes |
| Free tier | no | yes, 100 req/month |

---

## Install

```bash
pip install app-store-trends-mcp
```

Zero system dependencies. Python 3.8 or later. Uses `httpx` under the hood.

---

## Quick start

```python
from app_store_trends_mcp import TrendsMcpClient, SOURCE

client = TrendsMcpClient(api_key="YOUR_API_KEY")

# 5-year weekly time series, no sleep(), no proxies, no 429s
series = client.get_trends(source=SOURCE, keyword="meditation app")
print(series[0])
# TrendsDataPoint(date='2026-03-28', value=72, keyword='meditation app', source='app store')

# Period-over-period growth
growth = client.get_growth(
    source=SOURCE,
    keyword="meditation app",
    percent_growth=["3M", "1Y"],
)
print(growth.results[0])
# GrowthResult(period='3M', growth=14.5, direction='increase', ...)

# What's trending right now
trending = client.get_top_trends(limit=10)
print(trending.data)
# [[1, 'topic one'], [2, 'topic two'], ...]
```

---

## Async support

```python
import asyncio
from app_store_trends_mcp import AsyncTrendsMcpClient, SOURCE

async def main():
    client = AsyncTrendsMcpClient(api_key="YOUR_API_KEY")
    series = await client.get_trends(source=SOURCE, keyword="meditation app")
    print(series[0])

asyncio.run(main())
```

Run multiple platform queries concurrently:

```python
google, youtube, reddit = await asyncio.gather(
    client.get_trends(source="google search", keyword="meditation app"),
    client.get_trends(source="youtube",       keyword="meditation app"),
    client.get_trends(source="reddit",        keyword="meditation app"),
)
```

---

## Use cases

- **SEO research**: track keyword search volume trends across Google Search, Google News, and Google Images before publishing content
- **Market research**: measure consumer demand signals on Amazon and Google Shopping before entering a product category
- **Investment research**: monitor Reddit discussion volume, news sentiment, and Wikipedia page view spikes as leading indicators
- **Content strategy**: find what is growing on YouTube and TikTok before topics peak and competition saturates them
- **Competitor tracking**: compare brand search volume growth across platforms over custom date ranges

---

## Works with

- **Claude** (via MCP server at trendsmcp.ai)
- **Cursor** (via MCP server at trendsmcp.ai)
- **ChatGPT** (via MCP server at trendsmcp.ai)
- **VS Code Copilot** (via MCP server at trendsmcp.ai)
- **LangChain**: pass `TrendsMcpClient` output directly as tool results or context
- **LlamaIndex**: use trend series as structured data nodes for retrieval
- **Pandas**: each `get_trends()` response converts to a DataFrame in one line

---

## Methods

### `get_trends(source, keyword, data_mode=None)`

Returns a historical time series for a keyword. Defaults to 5 years of weekly data. Pass `data_mode="daily"` for the last 30 days at daily granularity.

### `get_growth(source, keyword, percent_growth, data_mode=None)`

Calculates percentage growth between two points in time. Pass preset strings or `CustomGrowthPeriod` objects.

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

### `get_top_trends(type=None, limit=None)`

Returns today's live trending items. Omit `type` to get all feeds at once.

**Available feeds:** `Google Trends` `YouTube` `TikTok Trending Hashtags` `Reddit Hot Posts` `Amazon Best Sellers Top Rated` `App Store Top Free` `Wikipedia Trending` `Spotify Top Podcasts` `X (Twitter)` and more.

---

## All 13 supported sources

One API key. One client. All platforms. No separate credentials for each.

| 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 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 |

All values normalized 0 to 100 on the same scale so you can compare across platforms directly.

---

## Error handling

```python
from app_store_trends_mcp import TrendsMcpClient, TrendsMcpError, SOURCE

client = TrendsMcpClient(api_key="YOUR_API_KEY")

try:
    series = client.get_trends(source=SOURCE, keyword="meditation app")
except TrendsMcpError as e:
    print(e.status)   # e.g. 429 if you exceed your plan quota
    print(e.code)     # e.g. "rate_limited"
    print(e.message)
```

---

## Frequently asked questions

**Does this scrape App Store?**
No. trendsmcp runs managed data infrastructure. Your Python code makes a single authenticated REST call. No scraping, no Selenium, no cookies, no proxies required.

**Do I need a App Store developer account, OAuth token, or platform API key?**
No. One trendsmcp API key gives you access to all 13 sources.

**Will it break when App Store changes its backend?**
No. API stability is our responsibility. If something changes upstream, we update the backend. Your code keeps working.

**Is there a free tier?**
Yes, 100 requests per month, no credit card required. [Get your key at trendsmcp.ai](https://trendsmcp.ai).

**Can I use this in production data pipelines?**
Yes. The client is stateless, thread-safe, and supports async for concurrent queries across multiple platforms.

---

## Related packages

- [trendsmcp](https://pypi.org/project/trendsmcp/) - core package, all 13 sources
- [youtube-trends-api](https://pypi.org/project/youtube-trends-api/) / [youtube-trends-mcp](https://pypi.org/project/youtube-trends-mcp/)
- [reddit-trends-api](https://pypi.org/project/reddit-trends-api/) / [reddit-trends-mcp](https://pypi.org/project/reddit-trends-mcp/)
- [google-search-trends-api](https://pypi.org/project/google-search-trends-api/) / [google-search-trends-mcp](https://pypi.org/project/google-search-trends-mcp/)
- [amazon-trends-api](https://pypi.org/project/amazon-trends-api/) / [amazon-trends-mcp](https://pypi.org/project/amazon-trends-mcp/)
- [tiktok-trends-api](https://pypi.org/project/tiktok-trends-api/) / [tiktok-trends-mcp](https://pypi.org/project/tiktok-trends-mcp/)
- [wikipedia-trends-api](https://pypi.org/project/wikipedia-trends-api/) / [wikipedia-trends-mcp](https://pypi.org/project/wikipedia-trends-mcp/)
- [npm-trends-api](https://pypi.org/project/npm-trends-api/) / [npm-trends-mcp](https://pypi.org/project/npm-trends-mcp/)
- [steam-trends-api](https://pypi.org/project/steam-trends-api/) / [steam-trends-mcp](https://pypi.org/project/steam-trends-mcp/)
- [app-store-trends-api](https://pypi.org/project/app-store-trends-api/) / [app-store-trends-mcp](https://pypi.org/project/app-store-trends-mcp/)
- [news-volume-api](https://pypi.org/project/news-volume-api/) / [news-volume-mcp](https://pypi.org/project/news-volume-mcp/)
- [news-sentiment-api](https://pypi.org/project/news-sentiment-api/) / [news-sentiment-mcp](https://pypi.org/project/news-sentiment-mcp/)

---

## Links

- [API docs](https://trendsmcp.ai/docs)
- [Get a free API key](https://trendsmcp.ai)
- [pytrends alternative](https://trendsmcp.ai/pytrends-alternative)
- [All packages on PyPI](https://pypi.org/user/trendsmcp/)
- [GitHub](https://github.com/trendsmcp/trendsmcp-py)


---

## Also works as a Python client

Same API key works directly in Python - no MCP host needed.

```bash
pip install app-store-trends-mcp
```

```python
import os
from app_store_trends_mcp import TrendsMcpClient, SOURCE

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

series  = client.get_trends(source=SOURCE, keyword="your keyword")
growth  = client.get_growth(source=SOURCE, keyword="your keyword", percent_growth=["1M", "3M", "12M"])
top     = client.get_top_trends(type="App Store", limit=10)
```

Full Python docs: [trendsmcp.ai/docs](https://trendsmcp.ai/docs)
---

## License

MIT
