App Store and Google Play Review Monitor MCP Server
Monitors Apple App Store reviews by app URL or app ID and country store, returning newest reviews with stars, title, text, author, version, date, helpful votes, and developer replies where available. Supports filtering by date and star rating, new-review tracking via state keys, and optional per-app/country rating summaries.
Monitors Google Play app reviews by URL or package name, returning review details and optional rating summaries. Supports language selection, country-based rating rows, date and star filtering, and only-new review tracking across scheduled runs.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@App Store and Google Play Review Monitor MCP ServerGet the 50 newest Slack reviews for the US and check the rating trend"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
App Store and Google Play Review Monitor MCP Server
An MCP server for the Mamba Labs App Store and Google Play Review Monitor actor on Apify. Give it apps. It returns their reviews by country store, newest first, and on a schedule only the reviews posted since the last run.
What's Inside
Related MCP server: weekly-pulse MCP server
What it does
Reviews: Apple App Store and Google Play, in one row layout: stars, title, text, author, app version, date, helpful votes, and the developer reply where Google Play shows one.
Only new reviews: with a
state_key, each run skips the reviews an earlier run returned, per app and country.Rating trend: one
app_summaryrow per app and country store with the app rating, rating count, the change since the last run, and the star split of the new reviews.Developer domain: every row carries the developer name, website, and domain.
Input with no app comes back as one free row whose error_reason starts with input_invalid:.
All of the work runs on Apify. This package is a thin client that starts the actor run, waits for it, and hands back the dataset rows.
Quick start
You need Node.js 18 or newer and an Apify account with an API token.
Add this to your Claude Desktop config (claude_desktop_config.json), Cursor, or any MCP client:
{
"mcpServers": {
"mamba-app-store-google-play-review-monitor": {
"command": "npx",
"args": [
"-y",
"@mambalabsdev/mcp-app-store-google-play-review-monitor"
],
"env": {
"APIFY_TOKEN": "your-apify-token"
}
}
}
}Restart the client. The monitor_app_reviews tool appears.
Prerequisites
Node.js 18 or newer.
An Apify API token from console.apify.com/account/integrations, set as
APIFY_TOKEN. The server lists its tool without a token; a call needs one.
Example prompts
"Pull the 50 newest App Store and Google Play reviews for Slack in the US."
"Which 1 and 2 star reviews did Notion get in the UK App Store in the last 30 days?"
"Check my competitors' apps every morning and tell me what new reviews came in and whether their rating moved."
Tool
monitor_app_reviews. One tool. Example arguments:
{
"apps": [
"https://apps.apple.com/us/app/slack/id618783545",
"com.Slack"
],
"countries": [
"us"
],
"max_reviews_per_app": "50",
"state_key": "slack-reviews-daily"
}Inputs
Every buyer facing input of the actor, unchanged. Omitted inputs take the actor's own defaults. Numbers and booleans are sent as strings.
Input | Type | Description |
| array | One per line: an App Store URL (https://apps.apple.com/us/app/slack/id618783545), an App Store id (id618783545), a Google Play URL, or a Google Play package name (com.Slack). Up to 100 apps per run |
| array | Two letter store codes, one per line, for example us, gb, de. Default us. Up to 10. App Store reviews are separate per country. Google Play shows the same reviews in every country for one language, so its reviews are returned once, under the first country, and each other country gets its own rating row |
| string | Most reviews returned per app and country store in one run, newest first. Default 100. The App Store feed serves at most 500 per country; Google Play up to 2000 |
| string | Optional. Only reviews on or after this date (YYYY-MM-DD), or within this many days (30) |
| array | Optional. Only return reviews with these star ratings, for example 1 and 2 for complaints. Empty returns all |
| string | Default true. Each run remembers the reviews it returned, per app and country, under the state key |
| string | Names the saved state. Use one key per schedule, for example competitor-apps-daily |
| string | true forgets the reviews returned before, so this run starts over |
| string | Default true: one row per app and country store with the rating, rating count, change since the last run, and the stars of the new reviews |
| string | Language code for Google Play reviews and pages. Default en |
| string | Optional. The run stops before it would charge more than this |
| string | A reliability choice. Default auto |
Pricing
Pay per event on Apify, billed to your Apify account. Prices in USD.
Event | Free plan | Bronze | Silver | Gold |
| $0.0001 | $9.5e-05 | $9e-05 | $8.5e-05 |
| $0.001 | $0.00095 | $0.0009 | $0.00085 |
| $0.0006563 | $0.0006563 | $0.0006563 | $0.0006563 |
Rows for an app or input that could not be read are free.
Your keys
The actor needs no key. It reads Apple's public iTunes lookup service and reviews feed, and the public Google Play pages, and holds no key of any kind. Proxy traffic adds nothing to your price: Mamba Labs pays the platform costs of the run. proxy_mode is a reliability setting.
Full actor documentation
apify.com/mambalabs/app-store-google-play-review-monitor
License
MIT. See LICENSE.
Available Tools
1 toolmonitor_app_reviewsMonitor App Store and Google Play reviewsARead-only
Return App Store and Google Play reviews for the apps you give, by country store, newest first. Give apps as App Store URLs or ids (id618783545) or Google Play URLs or package names (com.Slack). With a state_key, each run returns only reviews not returned by an earlier run with that key. Every review row carries stars, title, text, author, app version, date, helpful votes, the Google Play developer reply, and the developer name, website, and domain. One app_summary row per app and country store gives the app rating, rating count, change since the last run, and the star split of the new reviews. Google Play reviews are per language, so they come back once under the first country. Input with no app comes back as one free row with error_reason input_invalid. A run that does not succeed is returned as an error with its run ID. Read-only; requires an APIFY_TOKEN; Apify charges per review row and per app trend row.
| Name | Required | Description | Default |
|---|---|---|---|
| apps | No | One per line: an App Store URL (https://apps.apple.com/us/app/slack/id618783545), an App Store id (id618783545), a Google Play URL, or a Google Play package name (com.Slack). Up to 100 apps per run | |
| since | No | Optional. Only reviews on or after this date (YYYY-MM-DD), or within this many days (30) | |
| language | No | Language code for Google Play reviews and pages. Default en | |
| only_new | No | Default true. Each run remembers the reviews it returned, per app and country, under the state key | |
| countries | No | Two letter store codes, one per line, for example us, gb, de. Default us. Up to 10. App Store reviews are separate per country. Google Play shows the same reviews in every country for one language, so its reviews are returned once, under the first country, and each other country gets its own rating row | |
| state_key | No | Names the saved state. Use one key per schedule, for example competitor-apps-daily | |
| proxy_mode | No | A reliability choice. Default auto | |
| reset_state | No | true forgets the reviews returned before, so this run starts over | |
| star_ratings | No | Optional. Only return reviews with these star ratings, for example 1 and 2 for complaints. Empty returns all | |
| max_charge_usd | No | Optional. The run stops before it would charge more than this | |
| include_summary | No | Default true: one row per app and country store with the rating, rating count, change since the last run, and the stars of the new reviews | |
| max_reviews_per_app | No | Most reviews returned per app and country store in one run, newest first. Default 100. The App Store feed serves at most 500 per country; Google Play up to 2000 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=false, and destructiveHint=false, and the description adds substantial context beyond them: it requires an APIFY_TOKEN, describes per-row Apify charges, explains state persistence via state_key, and documents failure/error behavior including invalid input returning an error_reason row.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but appropriately front-loaded, leading with what is returned and the accepted app identifier formats. It is longer than typical, but nearly every sentence carries operational meaning for a 12-parameter tool; minor tightening is possible around return-field enumeration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although there is no output schema, the description explains the review row fields, the app_summary row, Google Play language/country nuances, error returns, authentication needs, and cost implications. This is complete enough for an agent to invoke the tool correctly and interpret its output shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameter definitions are already strong. The description still adds meaningful semantics beyond the schema, especially the Google Play per-language/per-country return behavior, the purpose of state_key across scheduled runs, and the fact that only_new remembers prior returned reviews per app and country.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: returning App Store and Google Play reviews for given apps, by country store, newest first. It also distinguishes the accepted app identifier formats and the incremental state behavior, so an agent can immediately understand what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: provide apps as URLs or ids, use a state_key per schedule to get only new reviews, use reset_state to start over, and expect charges per review and trend row. There are no sibling tools to differentiate against, and no explicit 'when not to use' guidance, but the operational conditions are well covered.
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 tool update
v1.0.0- First observed
monitor_app_reviews
TDQS
Scored across 1 tool
There is only one tool, so there is no possibility of confusing it with another. Its description clearly frames it as a read-only review retrieval operation for two named app stores.
The single name monitor_app_reviews follows a clean verb_noun snake_case convention that reads predictably and matches the domain. No competing conventions exist to clash with it.
A single, purpose-built tool is appropriate for a narrowly scoped review-monitoring service, and this one is feature-dense (both stores, incremental state, summaries). It falls just short of the ideal 3-15 range, though adding tools here would likely be artificial.
The tool covers the full read path: fetch reviews, track new-vs-seen via state_key, and return per-app/country trend summaries with rich row fields. Minor gaps exist — no way to inspect or reset a state_key, no app lookup/metadata, and read-only by design — but core monitoring workflows are covered.
Maintenance
Related MCP Connectors
App Store + Google Play reviews with per-app complaint summary for agents.
App Store + Google Play reviews with per-app complaint summary for agents.
App Store + Google Play reviews with per-app complaint summary for agents.
Scrape App Store reviews and rating history by app, country, rating or date. Pay per row.
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables 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.20MIT
- FlicenseNot gradedqualityDmaintenanceEnables automated ingestion of App Store/Play Store reviews, synthesis of themes and actions, and publishing to Google Docs and Gmail drafts via Google Workspace MCP.-
- AlicenseNot gradedqualityBmaintenanceEnables retrieval of App Store and Google Play reviews, ratings summaries, and ASO keyword rankings for any app using its store ID or package name.273 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables app intelligence across Google Play and the Apple App Store, including details, reviews, and search via a unified API.-