app-store-scraper-mcp
# app-store-scraper-mcp
An [MCP](https://modelcontextprotocol.io) server that exposes [`app-store-scraper`](https://github.com/facundoolano/app-store-scraper) as tools, so AI assistants can query the Apple App Store directly: app details, search, top charts, reviews, ratings, privacy labels, and keyword suggestions.
## Tools
| Tool | Description |
| --- | --- |
| `app_details` | Full app details by `id` (trackId) or `appId` (bundle id). Pass `ratings: true` to include the star histogram. |
| `search_apps` | Search apps by term (`num`, `page`, `idsOnly`). |
| `list_apps` | Top charts (`collection`, e.g. `TOP_FREE_IOS`, `TOP_GROSSING_IPAD`), optionally by `category` (e.g. `GAMES_PUZZLE`). |
| `developer_apps` | All apps by a developer (`devId` = the app's `developerId`). |
| `similar_apps` | "Customers also bought" apps. |
| `app_reviews` | One page of reviews (pages 1–10, sort `RECENT` or `HELPFUL`). |
| `app_ratings` | Total ratings count and 1–5 star histogram. |
| `app_privacy` | The App Privacy ("nutrition label") details. |
| `search_suggestions` | Search autocomplete suggestions, useful for ASO and keyword research. |
Most tools accept `country` (two-letter code, default `us`) and `lang`.
List-style tools (`search_apps`, `list_apps`, `developer_apps`, `similar_apps`) return a **compact** form by default: no screenshots, device lists, languages or release notes, and descriptions cut to 300 characters. This keeps responses small in the model's context. Pass `verbose: true` to get full objects.
Responses are cached in memory for 5 minutes.
## Fixes over upstream
- **`app_ratings` / `app_details({ratings: true})`**: upstream reports `ratings: 4` for "4,041,456 Ratings" because its regex stops at the comma. This server works out the total from the histogram.
- **`app_privacy`**: upstream is broken since Apple's apps.apple.com redesign (the token regex no longer matches). This server reads the privacy data from the page's embedded JSON (`src/privacy.ts`) and keeps the original output shape, plus a `privacyPolicyUrl` field.
## Setup
No install needed: clients run it with `npx`. Requires Node.js 18+.
### Claude Code
```bash
claude mcp add app-store -- npx -y app-store-scraper-mcp
```
### Claude Desktop / other clients
```json
{
"mcpServers": {
"app-store": {
"command": "npx",
"args": ["-y", "app-store-scraper-mcp"]
}
}
}
```
### From source
```bash
git clone https://github.com/rprih/app-store-scraper-mcp.git && cd app-store-scraper-mcp
npm install && npm run build
claude mcp add app-store -- node "$PWD/dist/index.js"
```
### Debugging
```bash
npm run inspect # opens the MCP Inspector against the built server
```
## Notes
This is unofficial scraping of Apple endpoints. It can break when Apple changes things, and heavy use may get rate-limited.
TDQS
Scored across 9 tools
Each tool maps to a distinct data facet (search, charts, details, ratings, privacy, reviews, similar apps, developer catalog, autocomplete), so an agent can pick correctly in most cases. The only real overlap is that `app_details` already returns rating/version info that `app_ratings` surfaces separately, and `search_apps` vs `search_suggestions` vs `list_apps` require reading descriptions to keep straight.
All names are lowercase snake_case and semantically transparent, but they follow three different patterns: verb_noun (`search_apps`, `list_apps`), resource_aspect (`app_ratings`, `app_privacy`, `app_details`, `app_reviews`), and qualifier_noun (`similar_apps`, `developer_apps`). Readable and predictable enough, with only minor style drift rather than true inconsistency.
Nine tools is well within the sweet spot and each covers a genuinely different App Store data surface. No tool feels redundant filler or obviously missing from the core set.
The surface covers the main read-only App Store research workflow: autocomplete, search, charts, details, ratings, reviews, privacy labels, similar apps, and developer catalogs. Minor gaps remain, such as app version/changelog history, in-app purchase listings, and explicit storefront/country selection, but agents can work around them.