Google Play Reviews Scraper

Scrape public Google Play app reviews, ratings, dates, helpful votes, and developer replies for app monitoring and ASO.

Data fields

FieldTypeDescription
appIdstringAndroid package ID for the reviewed app.
appUrlstringGoogle Play app detail URL.
appNamestring | nullApp title fetched from Google Play when available.
reviewIdstringGoogle Play review identifier.
reviewUrlstringDirect review URL returned by Google Play when available.
reviewerNamestring | nullPublic reviewer display name when available.
reviewerImageUrlstring | nullPublic reviewer image URL when available.
ratinginteger | nullReview rating from 1 to 5 when available.

Input preview

appsApp IDs or Google Play URLs *
maxReviewsMaximum reviews
countryCountry
languageLanguage
sortReview sort order
startDateStart date

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

Ready-to-run examples

Open a saved Apify example, adjust the input, and run the actor in your own Apify account.

View all examples

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Google Play Reviews Scraper exports public Google Play review rows with ratings, dates, helpful votes, app versions, and developer replies when available.

Use it for ASO review mining, release monitoring, support triage, product feedback analysis, and competitor review tracking.

At a glance

  • Extracts: app ID, app URL, app name, review ID, review URL, reviewer display fields, rating, review text, review date, helpful votes, developer reply, app version, locale, sort order, and scrape time.
  • Inputs: app IDs or Google Play URLs, country, language, sort order, maximum reviews, optional start date, and optional end date.
  • Best for: mobile app feedback analysis, ASO audits, release monitoring, support workflows, and competitor review snapshots.
  • Exports: Apify dataset rows downloadable as CSV, JSON, Excel, or available through the API.
  • Run diagnostics: a RUN_SUMMARY record reports completed apps, per-app errors, and pending apps when a bounded run stops early.
  • Login: no Google account, cookies, or Google API key are required.

What can it do?

  • Export public review rows: Save ratings, review text, review dates, helpful votes, app versions, and review URLs.
  • Monitor app feedback: Use country, language, sort, and date filters for release monitoring or support triage.
  • Compare competitors: Run several package IDs with the same locale and compare review themes and ratings.
  • Capture developer replies: Include public developer reply text and dates when Google Play exposes them.
  • Use as a Google Play reviews API workflow: Run from API, schedules, webhooks, or MCP-compatible agents and export CSV/Excel/JSON.

Common workflows

  • Monitor new reviews: schedule a small newest run daily and filter by review date downstream.
  • Mine product feedback: export review text, rating, version, and helpful votes into a text analytics workflow.
  • Track competitor launches: compare review rows for competing package IDs after a release window.
  • Audit developer replies: use developerReplyText and developerReplyDate to check public response coverage.

Example input

{
  "apps": ["com.instagram.android"],
  "country": "US",
  "language": "en",
  "sort": "newest",
  "maxReviews": 20,
  "startDate": "2026-06-01"
}

Example output

{
  "appId": "com.instagram.android",
  "appUrl": "https://play.google.com/store/apps/details?id=com.instagram.android&hl=en&gl=US",
  "appName": "Instagram",
  "reviewId": "example-review-id",
  "reviewUrl": "https://play.google.com/store/apps/details?id=com.instagram.android&reviewId=example-review-id",
  "reviewerName": "Example User",
  "rating": 4,
  "reviewText": "Useful app, but the latest version changed a workflow I liked.",
  "reviewDate": "2026-07-01T12:00:00.000Z",
  "thumbsUpCount": 3,
  "developerReplyText": "Thanks for the feedback.",
  "appVersion": "1.0.0",
  "country": "US",
  "language": "en",
  "sort": "newest",
  "scrapedAt": "2026-07-03T09:00:00.000Z"
}

Tips for best results

  • Use package IDs when possible: direct IDs avoid ambiguity in app names.
  • Set locale intentionally: review availability and text can differ by country and language.
  • Use date filters downstream too: Google Play returns a limited review set, so date filtering happens after retrieval.
  • Schedule small monitoring runs: daily small runs are easier to compare than occasional very large pulls.

Limits and caveats

  • Only public reviews are returned: private account data and hidden reviews are not available.
  • Review availability is controlled by Google Play: some apps, countries, or languages may return fewer rows than requested.
  • Developer replies are optional: reply fields are null when no public reply is visible.
  • Sort order affects coverage: newest, rating, and helpfulness can return different samples.
  • Unexpected upstream failures are explicit: if one app fails in a multi-app run, completed review rows remain available and RUN_SUMMARY records the affected app. If no requested app can be read, the run fails instead of reporting a successful empty dataset.

API usage

Run from the Apify API or SDK with the same input keys shown above.

Node.js

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/google-play-reviews-scraper').call({
  apps: ['com.instagram.android'],
  country: 'US',
  language: 'en',
  sort: 'newest',
  maxReviews: 20
});
console.log(run.defaultDatasetId);

Python

from apify_client import ApifyClient
import os

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("fetch_cat/google-play-reviews-scraper").call(run_input={
    "apps": ["com.instagram.android"], "country": "US", "language": "en", "maxReviews": 20
})
print(run["defaultDatasetId"])

cURL

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~google-play-reviews-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"apps":["com.instagram.android"],"country":"US","language":"en","maxReviews":20}'

MCP and AI agents

For AI agents, use the official Apify MCP server. The focused single-Actor URL is:

https://mcp.apify.com?tools=fetch_cat/google-play-reviews-scraper

The default MCP server can search and run Actors. The focused URL exposes this Actor directly to clients that support tool-scoped MCP connections.

Claude Code setup

claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/google-play-reviews-scraper"

Claude Desktop, Cursor, or VS Code JSON config

{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=fetch_cat/google-play-reviews-scraper"
    }
  }
}

Example prompts

  • "Export the newest Google Play reviews for this package ID and group the results by rating."
  • "Compare recent Google Play review themes for these two apps in Germany."

Support

Open an issue from the Actor page for a failed run, missing field, or wrong output. Include the Apify run ID or run URL, your input JSON, expected output, actual output, and one reproducible public URL (such as the Google Play app URL) so the problem can be checked quickly.

Privacy and data handling

This Actor runs with Apify limited permissions and only processes data needed for the documented run. It uses review lookup inputs and public review results to produce the output dataset and sends requests to public Google Play Reviews pages/endpoints; results are stored in Apify run storage for your account. FetchCat does not use your inputs or outputs for advertising, does not use them for model training, and does not retain them outside the Apify run except for transient support debugging when you explicitly share run details. You are responsible for using the Actor lawfully, respecting the target site's terms, and avoiding unnecessary personal or sensitive data in inputs.

Common questions

Questions and answers reused from the canonical actor README.

Can I scrape multiple apps in one run?

Yes. Put multiple package IDs or app URLs in apps.

Can I scrape by country and language?

Yes. Use country and language to request localized review data.

Can I export to CSV, Excel, JSON, or API?

Yes. Apify datasets support all of those access paths.

Does this require my Google account?

No. It reads public Google Play review data.

Is each row one review?

Yes. Each saved dataset item is one public review row.