Koskamo

App Store + Google Play Data MCP

An MCP server that provides live data from the Apple App Store and Google Play, including app details, user reviews, search results, and top charts across 175+ storefronts. It supports querying specific metrics like ratings, review counts, and top-grossing lists for market research and ASO.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

App Store + Google Play Data MCP logo, by TheValkDokkCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by TheValkDokk
You need:RAPIDAPI_KEY yes (unless self-hosting) Marketplace auth: sent as X-RapidAPI-Key + X-RapidAPI-HostCalls count against your RapidAPI plan: BASIC is free (500 calls/month), paid tiers from $9.99.
MCP endpoint (Streamable HTTP)
https://appstore-mcp-623314400722.us-central1.run.app/mcp
Vendor documentation

What you can do with it

  • Find top apps in a category and compare ratings
  • Analyze recent user reviews for specific complaints
  • Identify top-grossing apps in specific regions
  • Search for apps by keyword across storefronts

Source and maintenance

Community listingRegistry 0.2.0
Maintenance checked

Protocol and capabilities

Server
appstore-data 0.2.0
MCP protocol
2025-06-18
Tools
5 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Live data from the Apple App Store and Google Play. Use search_apps to find an app when you only have a name; use the numeric app id (iOS) or package name (Android) from those results for get_app and get_app_reviews. Country codes are ISO-2 storefronts (us, gb, de, jp, cn) — data, pricing and availability differ per storefront. Results are trimmed for readability; description is truncated.

Tools

5 advertised

search_apps — Search apps
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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

search_apps input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "query"
  ],
  "properties": {
    "lang": {
      "type": "string",
      "default": "en",
      "maxLength": 5,
      "minLength": 2,
      "description": "Language code, e.g. en, es, fr, ja. Defaults to en."
    },
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 50,
      "minimum": 1,
      "description": "Number of results, 1-50. Defaults to 10."
    },
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "Keyword(s) to search for, e.g. 'meditation', 'photo editor'."
    },
    "store": {
      "enum": [
        "ios",
        "android"
      ],
      "type": "string",
      "default": "ios",
      "description": "Store to query: \"ios\" (Apple App Store) or \"android\" (Google Play)."
    },
    "country": {
      "type": "string",
      "default": "us",
      "maxLength": 2,
      "minLength": 2,
      "description": "ISO-2 storefront code, e.g. us, gb, de, jp. Defaults to us."
    }
  },
  "additionalProperties": false
}
search_apps annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}
get_app — App details
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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

get_app input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "app_id"
  ],
  "properties": {
    "lang": {
      "type": "string",
      "default": "en",
      "maxLength": 5,
      "minLength": 2,
      "description": "Language code, e.g. en, es, fr, ja. Defaults to en."
    },
    "store": {
      "enum": [
        "ios",
        "android"
      ],
      "type": "string",
      "default": "ios",
      "description": "Store to query: \"ios\" (Apple App Store) or \"android\" (Google Play)."
    },
    "app_id": {
      "type": "string",
      "minLength": 1,
      "description": "iOS: numeric Apple id (e.g. '389801252' for Instagram). Android: package name (e.g. 'com.instagram.android')."
    },
    "country": {
      "type": "string",
      "default": "us",
      "maxLength": 2,
      "minLength": 2,
      "description": "ISO-2 storefront code, e.g. us, gb, de, jp. Defaults to us."
    }
  },
  "additionalProperties": false
}
get_app annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}
get_app_reviews — App reviews
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

get_app_reviews input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "app_id"
  ],
  "properties": {
    "sort": {
      "enum": [
        "recent",
        "helpful",
        "rating"
      ],
      "type": "string",
      "default": "recent",
      "description": "recent | helpful | rating (rating is Android-only)."
    },
    "limit": {
      "type": "integer",
      "default": 20,
      "maximum": 50,
      "minimum": 1,
      "description": "Reviews per page, 1-50. Defaults to 20."
    },
    "store": {
      "enum": [
        "ios",
        "android"
      ],
      "type": "string",
      "default": "ios",
      "description": "Store to query: \"ios\" (Apple App Store) or \"android\" (Google Play)."
    },
    "app_id": {
      "type": "string",
      "minLength": 1,
      "description": "iOS numeric id or Android package name."
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "minimum": 0,
      "description": "How many reviews to skip, for pagination."
    },
    "country": {
      "type": "string",
      "default": "us",
      "maxLength": 2,
      "minLength": 2,
      "description": "ISO-2 storefront code, e.g. us, gb, de, jp. Defaults to us."
    }
  },
  "additionalProperties": false
}
get_app_reviews annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}
top_charts — Top charts
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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

top_charts input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "limit": {
      "type": "integer",
      "default": 25,
      "maximum": 50,
      "minimum": 1,
      "description": "Rows to return, 1-50. Defaults to 25."
    },
    "store": {
      "enum": [
        "ios",
        "android"
      ],
      "type": "string",
      "default": "ios",
      "description": "Store to query: \"ios\" (Apple App Store) or \"android\" (Google Play)."
    },
    "country": {
      "type": "string",
      "default": "us",
      "maxLength": 2,
      "minLength": 2,
      "description": "ISO-2 storefront code, e.g. us, gb, de, jp. Defaults to us."
    },
    "category": {
      "type": "string",
      "description": "Optional category id, e.g. '6018' (iOS Books) or 'GAME' (Android)."
    },
    "collection": {
      "type": "string",
      "description": "Chart name. Defaults to topfreeapplications (iOS) / topselling_free (Android)."
    }
  },
  "additionalProperties": false
}
top_charts annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}
list_categories — Store categories
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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

list_categories input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "store": {
      "enum": [
        "ios",
        "android"
      ],
      "type": "string",
      "default": "ios",
      "description": "Store to query: \"ios\" (Apple App Store) or \"android\" (Google Play)."
    },
    "country": {
      "type": "string",
      "default": "us",
      "maxLength": 2,
      "minLength": 2,
      "description": "ISO-2 storefront code, e.g. us, gb, de, jp. Defaults to us."
    }
  },
  "additionalProperties": false
}
list_categories annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
943 ms
95th percentile latency
943 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 943 ms · metadata changed · 5 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http app-store-google-play-data-mcp-run https://appstore-mcp-623314400722.us-central1.run.app/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add app-store-google-play-data-mcp-run --url https://appstore-mcp-623314400722.us-central1.run.app/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable app-store-google-play-data-mcp-run in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "app-store-google-play-data-mcp-run": {
      "url": "https://appstore-mcp-623314400722.us-central1.run.app/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "app-store-google-play-data-mcp-run": {
      "type": "streamableHttp",
      "url": "https://appstore-mcp-623314400722.us-central1.run.app/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start app-store-google-play-data-mcp-run and inspect its tools.
VS Code configuration
{
  "servers": {
    "app-store-google-play-data-mcp-run": {
      "type": "http",
      "url": "https://appstore-mcp-623314400722.us-central1.run.app/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http app-store-google-play-data-mcp-run https://appstore-mcp-623314400722.us-central1.run.app/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "app-store-google-play-data-mcp-run": {
      "url": "https://appstore-mcp-623314400722.us-central1.run.app/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "app-store-google-play-data-mcp-run": {
      "serverUrl": "https://appstore-mcp-623314400722.us-central1.run.app/mcp"
    }
  }
}

Let your agent find its tools

Find servers like App Store + Google Play Data MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.