App Reviews: Google Play + Apple App Store

Lets an agent answer "what are users saying about this app?". Fetches public reviews from Google Play (by package id or Play Store URL) and the Apple App Store (by numeric app id or apps.apple.com URL), with country, language, sort, star and date filters. Returns typed, compact JSON (rating, text, date, version, developer reply where available). No login needed. Apify hosted MCP server; auth via OAuth or Apify token.

Servidor MCP alojado

npx add-mcp 'https://mcp.apify.com?tools=dheerajitbhu/google-play-reviews,dheerajitbhu/apple-app-store-reviews'

Se instala en Claude Code, Codex, Cursor y más

Documentación

Google Play Reviews Scraper – Play Store App Reviews API (dheerajitbhu/google-play-reviews) Actor

Fetch public Google Play reviews by package id or Play Store URL. Filter by country, language, sort, stars and date. Typed schema and compact JSON for AI agents. A blocked app returns an error row instead of failing the run.

Pricing

from $0.10 / 1,000 reviews

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes. In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours, and optionally produces a well-defined JSON output, datasets with results, or files in key-value store. In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects. You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the API section below.

Each client library has reference documentation the quickstart does not restate: JavaScript/TypeScript (npm install apify-client) and Python (pip install apify-client).

README

Google Play Reviews Scraper – Play Store App Reviews API

Fetch public Google Play reviews for one or more Android apps, by package id (com.whatsapp) or Play Store URL. Export structured rows — rating, text, date, version, reviewer name, developer reply — as JSON, CSV, or compact JSON for AI agents.

$0.10 per 1,000 reviews, plus $0.001 per run. Works on Apify’s Free plan ($5/mo platform usage, no credit card required to try).

Looking for iOS reviews? Use the twin Actor, Apple App Store Reviews Scraper.

Try it in one click

The input form on this page is prefilled — press Start and it returns up to 20 recent reviews for Google Translate. A prefill run costs about $0.003.

{ "apps": ["com.google.android.apps.translate"], "country": "us", "language": "en", "sort": "newest", "maxReviews": 20, "maxChargeUsd": 0.05 }

For AI agents

  • Call with mode=reviews and apps (package ids or Play Store URLs). Optional: country (default us), language (default en), sort (newest or relevant), maxReviews, minScore, maxScore, sinceDate, outputFormat=compact, maxChargeUsd.
  • Do not use mode=selftest.
  • Read the default dataset, or key OUTPUT_COMPACT in the key-value store when you asked for compact output (null fields are dropped).
  • A blocked or invalid app produces a type=error row. The run still succeeds if other apps (or the run as a whole) produced output.
  • Pricing: apify-actor-start $0.001 (per run at the default 1 GB memory) plus review $0.0001 per delivered review ($0.10 per 1,000). Only type=item reviews are billed; error rows are free. Set maxChargeUsd as a cap. 1,000 reviews ≈ $0.101. 20 reviews ≈ $0.003.

Input

  • apps — package ids or full Play URLs. If you leave this empty, the Actor uses the prefill app (com.google.android.apps.translate) so an empty run still returns reviews.
  • country (default us, lowercase ISO 3166-1 alpha-2), language (default en), sort (newest or relevant).
  • maxReviews — cap on review rows this run (default 20, maximum 2,000).
  • Optional: minScore, maxScore, sinceDate (ISO date; older reviews are dropped and not billed), maxChargeUsd, outputFormat=compact, proxyConfiguration.

Output

One dataset row per review, plus an error row if a single app fails.

FieldMeaning
typeitem (a review) or error
reviewIdStable review id
appId, appName, appUrlApp identifiers
platformplay
country, languageStore country and review language
scoreStar rating, 1–5
titleOften null — Google Play no longer has review titles
textReview body
userNameReviewer name
thumbsUpHelpful-vote count
versionApp version the review was written against, when known
replyText, replyDateDeveloper reply, when present
date, dateIso, scrapedAtReview date and scrape time
errorSet on type=error rows

Pricing

Pay per event:

EventPrice
Actor start (apify-actor-start)$0.001 per run (at the default 1 GB memory)
Review (review)$0.0001 each ($0.10 per 1,000)

Only delivered type=item reviews are billed. Error rows are free. maxChargeUsd stops the run before it would go over. Works on Apify’s Free plan.

Reliability

If one app is blocked or invalid, that app becomes an error row and the run still succeeds. An empty input uses the prefill app so a first try always returns reviews.

More examples

Several apps, newest first, last 100 reviews, 4–5 stars only:

{
  "apps": ["com.whatsapp", "https://play.google.com/store/apps/details?id=com.instagram.android"],
  "country": "us",
  "language": "en",
  "sort": "newest",
  "maxReviews": 100,
  "minScore": 4,
  "maxChargeUsd": 1
}

Reviews since a date, compact output for an agent:

{
  "apps": ["com.spotify.music"],
  "sinceDate": "2026-01-01",
  "maxReviews": 200,
  "outputFormat": "compact",
  "maxChargeUsd": 1
}

Run it on a schedule

Suggested frequency: daily for app-reputation monitoring, weekly for competitor review digests. Set sinceDate so each run keeps only new reviews. Save your input as a Task in Apify Console, then add a Schedule. Send results to Google Sheets, Slack, webhooks, Make / Zapier / n8n, or an AI agent through the Apify MCP server.

FAQ

Is there an official Google Play reviews API? Only for apps you own (Google Play Developer API). This Actor reads the public reviews any visitor can see, for any app, with no Google account or API key.

Do I need a Google account or cookies? No. No login, cookies, or API key.

How many reviews can I get? Up to 2,000 per run with maxReviews (default 20). Use sinceDate, minScore and maxScore to keep only the reviews you need; dropped reviews are not billed.

What does a run cost? $0.001 to start plus $0.0001 per review ($0.10 per 1,000). A 20-review prefill run is about $0.003. maxChargeUsd caps spend. Error rows are free.

Can I get App Store (iOS) reviews too? Yes, with the twin Apple App Store Reviews Scraper. Both return the same review fields, so you can merge them.

Can I use it with AI agents or MCP? Yes, through the Apify MCP server or API. outputFormat: "compact" writes a token-lean copy (OUTPUT_COMPACT) with null fields dropped.

Feedback

If the data helped, a short rating on the Reviews tab helps others find this Actor. Something broke or a field is missing? Open an issue on the Issues tab — we aim to reply within 24 hours.

Related actors

Keywords: Google Play reviews scraper, Play Store reviews API, Android app reviews, app ratings export, app review monitoring, Google Play scraper, app reviews.

Actor input Schema

mode (type: string):

reviews is the default and is what a Try-for-free / empty run uses. selftest is an internal health check — do not use it for regular runs.

apps (type: array):

Google Play package ids (com.example.app) or full Play Store URLs. If empty, the prefill app is used so an empty/QA run still returns reviews.

country (type: string):

Play Store country as lowercase ISO 3166-1 alpha-2 (us, de, gb).

language (type: string):

Review language (Play hl= parameter).

sort (type: string):

newest (default) returns the most recent reviews first; relevant uses Google Play's most-helpful order.

maxReviews (type: integer):

Cap on review rows this run. Prefill/default is 20 so Apify QA finishes in under 5 minutes. Maximum 2000 per run.

minScore (type: integer):

Optional inclusive lower bound on star rating. Reviews below this are dropped and not billed.

maxScore (type: integer):

Optional inclusive upper bound on star rating. Reviews above this are dropped and not billed.

sinceDate (type: string):

Optional ISO date (YYYY-MM-DD or full ISO-8601). Reviews older than this are dropped and not billed.

maxChargeUsd (type: number):

Optional spend cap in USD. The run stops delivering further reviews once this cap would be exceeded. A run costs $0.001 to start plus $0.0001 per review ($0.10 per 1,000).

outputFormat (type: string):

standard (default) writes normal dataset rows. compact also writes OUTPUT_COMPACT to the key-value store: the same rows with null fields dropped, for AI agents. Same price.

proxyConfiguration (type: object):

Optional. Datacenter first; use residential only if Play blocks the run.

Actor input object example

{
  "mode": "reviews",
  "apps": [
    "com.google.android.apps.translate"
  ],
  "country": "us",
  "language": "en",
  "sort": "newest",
  "maxReviews": 20,
  "outputFormat": "standard"
}

Actor output Schema

results (type: string):

Dataset rows (type item or error).

compact (type: string):

Present when outputFormat=compact: same rows as OUTPUT_COMPACT.

API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

JavaScript example

import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "reviews",
    "apps": [
        "com.google.android.apps.translate"
    ],
    "country": "us",
    "language": "en",
    "sort": "newest",
    "maxReviews": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("dheerajitbhu/google-play-reviews").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

Python example

from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "reviews",
    "apps": ["com.google.android.apps.translate"],
    "country": "us",
    "language": "en",
    "sort": "newest",
    "maxReviews": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("dheerajitbhu/google-play-reviews").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

CLI example

echo '{
  "mode": "reviews",
  "apps": [
    "com.google.android.apps.translate"
  ],
  "country": "us",
  "language": "en",
  "sort": "newest",
  "maxReviews": 20
}' |
apify call dheerajitbhu/google-play-reviews --silent --output-dataset

MCP server setup

{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,dheerajitbhu/google-play-reviews"
        }
    }
}

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an Authorization: Bearer <APIFY_API_TOKEN> header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/pBD98CJr4frQb126Y/builds/gy3heuNzEPgmbBBEQ/openapi.json