Skip to main content
Glama
TheValkDokk

appstore-data

appstore-data-mcp

MCP server that gives Claude, Cursor, VS Code, Codex and any other MCP client live data from the Apple App Store and Google Play — app details, reviews, keyword search, top charts and category taxonomies, for 175+ country storefronts.

Powered by the App Store Google Play Data API (free tier: 500 calls/month).

Tools

Tool

What it does

search_apps

Keyword search using the store's own relevance ranking; returns ids for the other tools

get_app

Full metadata for one app — name, developer, rating, price, version, size, screenshots, store URL

get_app_reviews

Paginated reviews, newest or most-helpful first, with developer replies

top_charts

Free / paid / grossing / new charts, per country and category

list_categories

Store category ids and names, for filters and resolving top_charts categories

Both stores are normalized to the same field names (id, name, developer, rating, …) so the model does not have to learn two schemas.

Related MCP server: GetAppNiche MCP

Setup

  1. Get a free RapidAPI key: https://rapidapi.com/TheValkDokk/api/app-store-google-play-data-api → subscribe to BASIC → copy X-RapidAPI-Key from the code snippet.

  2. Add the server to your client with RAPIDAPI_KEY in the environment.

Claude Desktop / Claude Code

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "appstore-data": {
      "command": "npx",
      "args": ["-y", "appstore-data-mcp"],
      "env": { "RAPIDAPI_KEY": "your-rapidapi-key" }
    }
  }
}

Cursor

~/.cursor/mcp.json (global) or .cursor/mcp.json (per project) — same mcpServers block as above.

VS Code (Copilot agent mode)

.vscode/mcp.json:

{
  "servers": {
    "appstore-data": {
      "command": "npx",
      "args": ["-y", "appstore-data-mcp"],
      "env": { "RAPIDAPI_KEY": "your-rapidapi-key" }
    }
  }
}

Example prompts

  • "Find the top 5 meditation apps in the US and compare their ratings and review counts."

  • "What changed in Instagram's iOS reviews over the last 200 entries — any 1-star complaints about the new update?"

  • "Which photography apps are top-grossing in Japan right now?"

  • "Pull the 25 most recent reviews for com.spotify.music in the UK and summarise the complaints."

Configuration

Variable

Required

Purpose

RAPIDAPI_KEY

yes (unless self-hosting)

Marketplace auth: sent as X-RapidAPI-Key + X-RapidAPI-Host

APPSTORE_API_BASE_URL

no

Point at your own deployment instead of the marketplace

APPSTORE_API_HOST

no

Override the X-RapidAPI-Host value

APPSTORE_PROXY_SECRET

no

Self-hosted origin auth (X-RapidAPI-Proxy-Secret)

Quotas and cost

Calls count against your RapidAPI plan: BASIC is free (500 calls/month), paid tiers from $9.99. Each tool call is one request. limit is capped at 50 per call on purpose — a larger page can exceed an MCP client's response size limit and get truncated.

Develop

npm install
npm run build
RAPIDAPI_KEY=xxx npm run smoke   # 26 end-to-end checks against the live API

License

MIT

Registries

  • npm: appstore-data-mcp

  • Official MCP Registry: io.github.thevalkdokk/appstore-data

  • Smithery / Glama / mcp.so: listed from this repo and the npm package

Auto-publish to the MCP Registry runs from .github/workflows/mcp-registry.yml on every release.

Available Tools

5 tools
get_appApp detailsA
Read-only
Inspect

Full metadata for one app: name, developer, ratings, price, version, size, screenshots, store URL. Use the numeric app id (iOS) or package name (Android).

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage code, e.g. en, es, fr, ja. Defaults to en.en
storeNoStore to query: "ios" (Apple App Store) or "android" (Google Play).ios
app_idYesiOS: numeric Apple id (e.g. '389801252' for Instagram). Android: package name (e.g. 'com.instagram.android').
countryNoISO-2 storefront code, e.g. us, gb, de, jp. Defaults to us.us

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds the useful detail that the response contains full metadata (name, developer, ratings, price, version, size, screenshots, store URL), but says nothing about behavior on missing/unknown app ids or whether results vary by storefront.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences; the core purpose and the return payload are front-loaded and nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the field list compensates well for what the tool returns, and the schema handles the input side. Only missing is error/empty-result behavior, a minor gap for a simple read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already documented including the app_id format examples and store enum. The description's identifier sentence largely restates the schema, though it does usefully tie the id format to the store value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Full metadata for one app') and enumerates the fields returned, which distinguishes it from search_apps and list_categories. It stops short of naming siblings explicitly, so differentiation is implicit rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives identifier guidance ('use the numeric app id (iOS) or package name (Android)'), which is invocation guidance rather than when-to-use guidance. It never says when to prefer search_apps over get_app or what to do when you only have an app name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_app_reviewsApp reviewsA
Read-only
Inspect

Paginated user reviews. sort=recent is best for monitoring new feedback; sort=helpful surfaces the loudest complaints. Page with offset and stop when has_more is false.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNorecent | helpful | rating (rating is Android-only).recent
limitNoReviews per page, 1-50. Defaults to 20.
storeNoStore to query: "ios" (Apple App Store) or "android" (Google Play).ios
app_idYesiOS numeric id or Android package name.
offsetNoHow many reviews to skip, for pagination.
countryNoISO-2 storefront code, e.g. us, gb, de, jp. Defaults to us.us

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds genuine behavioral detail not in the structured fields: that results are paginated and that a has_more flag in the response signals termination — important since there is no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero filler, with the resource and pagination model front-loaded before the sort guidance. Every clause carries actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given six parameters, no output schema, and an openWorld read, the description covers intent, sort choice, and pagination termination, but says nothing about the shape of a review record, behavior when an app_id is invalid, or store/country effects on results. Adequate but with visible gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3, but the description adds real semantic value the schema lacks: it explains what each sort mode is actually good for rather than just listing the enum, and it clarifies offset's role in a paging loop.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Paginated user reviews,' identifying the resource and its paginated nature, and the required app_id plus pagination guidance makes clear it returns reviews for one app. It is clearly distinct from siblings like search_apps, get_app and top_charts, though the retrieval verb itself is only implied by the fragment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete selection guidance for the sort parameter ('recent is best for monitoring new feedback; sort=helpful surfaces the loudest complaints') and an explicit pagination loop ('page with offset and stop when has_more is false'). It lacks any explicit when-not or sibling-routing statement, but usage context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_categoriesStore categoriesA
Read-only
Inspect

The store's category taxonomy — id and name — for building filters or resolving a category id used by top_charts.

ParametersJSON Schema
NameRequiredDescriptionDefault
storeNoStore to query: "ios" (Apple App Store) or "android" (Google Play).ios
countryNoISO-2 storefront code, e.g. us, gb, de, jp. Defaults to us.us

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds the return shape (id and name) in the absence of an output schema, but says nothing about whether the list is locale-dependent, how large it is, or whether country/store change the result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single economical sentence with the resource stated first and the purpose trailing after the em dash. Nothing is wasted, though the telegraphic style is slightly clipped.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only two-parameter lookup with full schema docs and safety annotations, this is nearly sufficient. The only material gap is whether the taxonomy varies by store or country, which an agent would want to know before caching or reusing ids.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters fully described, including enum values and defaults, so the schema carries the meaning. The description adds no parameter-specific information such as whether country affects the returned categories.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource (the store's category taxonomy) and the exact payload (id and name), so an agent knows precisely what it returns. It does not use an explicit verb like 'list', but the resource is unambiguous and clearly distinct from the app/review/chart siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives two concrete use cases: building filters and resolving a category id consumed by top_charts. That is a real routing signal to call this before top_charts, though it states no exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_appsSearch appsA
Read-only
Inspect

Search a store by keyword, using the store's own relevance ranking. Returns compact rows with the id you need for get_app.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage code, e.g. en, es, fr, ja. Defaults to en.en
limitNoNumber of results, 1-50. Defaults to 10.
queryYesKeyword(s) to search for, e.g. 'meditation', 'photo editor'.
storeNoStore to query: "ios" (Apple App Store) or "android" (Google Play).ios
countryNoISO-2 storefront code, e.g. us, gb, de, jp. Defaults to us.us

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only and open-world safety. The description adds real value beyond them by disclosing that results use the store's own relevance ranking and come back as compact rows, which tells the agent not to expect full app records or a deterministic ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, zero filler, with the core action front-loaded and the follow-up pointer second. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by characterizing the return shape ('compact rows with the id') and its intended downstream use. An agent has enough to call it correctly; only the browse-vs-search distinction from siblings is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with lang, limit, store, country, and query all documented including defaults and enum values. The description only reinforces the keyword concept behind query and adds nothing on syntax or store/country interplay, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search a store by keyword') plus the ranking behavior, and explicitly ties results to the get_app follow-up. It doesn't differentiate from siblings like top_charts or list_categories (browse vs. search), so it falls just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence implies the workflow ('the id you need for get_app'), which is useful chaining guidance. However, there is no explicit statement of when to use this versus top_charts or list_categories, and no exclusion conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

top_chartsTop chartsA
Read-only
Inspect

Ranked top-chart lists per storefront. iOS collections: topfreeapplications, toppaidapplications, topgrossingapplications, newapplications (+ ipad variants). Android: topselling_free, topselling_paid, topgrossing, new_free, new_paid.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoRows to return, 1-50. Defaults to 25.
storeNoStore to query: "ios" (Apple App Store) or "android" (Google Play).ios
countryNoISO-2 storefront code, e.g. us, gb, de, jp. Defaults to us.us
categoryNoOptional category id, e.g. '6018' (iOS Books) or 'GAME' (Android).
collectionNoChart name. Defaults to topfreeapplications (iOS) / topselling_free (Android).

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that results are ranked and storefront-scoped, but it does not disclose pagination, rate limits, return ordering details, or other behavioral constraints beyond what the annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two tight sentences with no filler. The core purpose is front-loaded, and the second sentence provides the useful collection enumeration without redundant explanation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only rankings query with fully documented parameters and safety annotations, the description is largely complete. The main remaining gap is that there is no output schema and the description does not describe the returned row structure, though 'ranked top-chart lists' gives the agent enough to understand the result domain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description earns an upward adjustment by enumerating valid collection names per store, which adds meaningful semantics beyond the schema's generic 'Chart name' description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource and scope: ranked top-chart lists per storefront, with concrete iOS and Android collection names. It is clearly not a search, category-list, app-detail, or review tool, but it does not explicitly contrast itself with those sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description tells what chart collections exist, but it does not say when to use this tool versus search_apps, get_app, list_categories, or get_app_reviews. There is no explicit when/when-not guidance or alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.2
    • First observedget_app
    • First observedget_app_reviews
    • First observedlist_categories
    • First observedsearch_apps
    • First observedtop_charts

TDQS

A4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct role: category taxonomy, keyword search, single-app metadata, paginated reviews, and ranked charts. Search vs. top charts are differentiated by intent (keyword relevance vs. storefront rankings), and search rows explicitly point to get_app for full details. No overlapping purposes remain.

Naming Consistency4/5

Four of five tools follow a clear verb_noun convention (list_categories, search_apps, get_app, get_app_reviews). top_charts is a noun phrase rather than verb_noun, a minor deviation that is still readable and domain-idiomatic.

Tool Count5/5

Five tools are well-scoped for an app-store data surface, with each operation earning its place. Discovery, detail, reviews, categories, and charts are all represented without redundant endpoints.

Completeness5/5

The read-only surface covers the full exploration lifecycle: taxonomy lookup, keyword search, full app metadata, review pagination, and ranked charts. No obvious gaps or dead ends for the stated app-store data purpose.

Maintenance

ActivityNo data
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Enables querying and retrieving data from App Store and Google Play Store, including app details, reviews, ratings, rankings, permissions, and search capabilities across both iOS and Android platforms.
    20
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to query live App Store and Google Play data, including app search, revenue/download metrics, keyword difficulty, and reviews, via a hosted MCP server with API-key authentication.
    76 npm
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides MCP tools to search and retrieve Apple App Store and Google Play app data, including app details, reviews, charts, developer info, and ASO keyword/rank estimates.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides live App Store and Google Play data as MCP tools, enabling search, app details, reviews, charts, estimates, and more through natural language.
    1
    MIT