App Reviews Scraper: App Store & Google Play, Multi-Country avatar

App Reviews Scraper: App Store & Google Play, Multi-Country

Pricing

from $0.20 / 1,000 reviews

Go to Apify Store
App Reviews Scraper: App Store & Google Play, Multi-Country

App Reviews Scraper: App Store & Google Play, Multi-Country

Monitor App Store and Google Play reviews in one run. Beats Apple's 500-review per-country cap by reading many country storefronts, returning rating, title, text, author, version and date. No login, no API key, pay per review.

Pricing

from $0.20 / 1,000 reviews

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

3 days ago

Last modified

Share

24 app reviews from 2 stores in 15 seconds

From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with over 140,000 runs across 170+ public actors.

Give it an App Store app ID, a Google Play package name, or both, and get back customer reviews from both stores in one shared format: star rating, title, review text, reviewer name, date, and on Google Play the app version and helpful votes. Add country codes to read more App Store storefronts. Turn on review insights to get a star breakdown, the most common complaint words and a month by month rating trend for each app. No Apple or Google account, no API key and no browser.

Why choose this actor?

  • Both stores in one run, one format. In our test on 2 October, WhatsApp returned 12 App Store reviews (10 from the US storefront, 2 more from the UK) and 12 Google Play reviews in 15 seconds, all with rating, text, author and date, and the Play reviews with app_version and thumbs_up.
  • More countries, more App Store reviews. Apple's public reviews page shows 10 reviews per country storefront, and each storefront shows its own. List more countries and you get up to 10 more per country, deduplicated on Apple's own review ID, so a review shared by two storefronts is delivered and charged once.
  • $0.20 per 1,000 reviews, on every plan. One flat price per review delivered, plus $0.005 per run. Apps with no reviews, unknown IDs and failed store calls cost nothing beyond the start fee, and review insights are currently not charged at all.

Run it on Apify

Part of The Mine Works Marketing, SEO and reviews family: Facebook Ad Library Scraper, Google Ads Transparency Scraper, Similarweb Scraper, Google News Scraper, Trustpilot Reviews Scraper, Google Trends Scraper.

Try it in one minute

Paste this into the JSON tab of the input page and press Start:

{
"appleAppIds": ["310633997"],
"googlePlayPackages": ["com.whatsapp"],
"countries": ["us"],
"maxReviewsPerApp": 10
}

You get 10 App Store and 10 Google Play reviews of WhatsApp in a few seconds.

Give App Store apps in appleAppIds as the number from the store link (from apps.apple.com/us/app/whatsapp-messenger/id310633997 use 310633997; a leading id is removed for you). Give Google Play apps in googlePlayPackages as the package name from the link (from play.google.com/store/apps/details?id=com.whatsapp use com.whatsapp). Full store links are not accepted, so copy the ID part.

Apify's free plan includes $5 of credit every month, which covers about 15,000 reviews at this actor's price ($0.0002 a review plus the $0.005 start fee, in runs of 40 reviews).

Copy to your AI assistant

themineworks/app-reviews-monitor on Apify. Collects public customer reviews from the Apple App Store (10 per country storefront) and Google Play (up to 150 per package) and returns one row per review with store, app_id, country, review_id, rating, title (App Store), text, author, reviewed_at, and on Google Play app_version and thumbs_up. Call ApifyClient("TOKEN").actor("themineworks/app-reviews-monitor").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Give at least one of: appleAppIds (string[] of numeric App Store IDs), googlePlayPackages (string[] of package names). Optional: countries (string[] of two letter App Store storefront codes, default ["us"]), maxReviewsPerApp (1 to 5000, default 200), includeReviewInsights (default false; adds one _type "review_insights" row per app). sortBy is accepted but currently has no effect. Rows with _type "summary" or "info" are run reports and never billed. Full spec: GET https://api.apify.com/v2/acts/themineworks~app-reviews-monitor/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations

Key features

  • 11 to 13 fields per review: store, app_id, country, review_id, rating, text, author, reviewed_at and scraped_at on every row, plus app_name and title on App Store rows and app_version and thumbs_up on Google Play rows.
  • Country fan out for the App Store. Each two letter storefront code adds up to 10 reviews per app. Google Play is read once per package, from the US store.
  • Up to 150 Google Play reviews per package per run, from Google Play's own review service, with the app version each reviewer was on.
  • Review insights with no AI and no extra requests. One extra row per app with rating_distribution, top_complaint_terms (frequent words and word pairs in 1 and 2 star reviews) and rating_trend by month, computed from the reviews collected in the same run.
  • Many apps in one run. List as many App Store IDs and Play packages as you like; each is capped by maxReviewsPerApp.

How to use it

Basic: one App Store app in one country

{
"appleAppIds": ["310633997"],
"countries": ["us"]
}

On 2 October this returned 10 WhatsApp reviews in 3.5 seconds on Apify.

Both stores and several App Store countries

{
"appleAppIds": ["310633997"],
"googlePlayPackages": ["com.whatsapp"],
"countries": ["us", "gb", "in", "de", "br", "jp", "au", "ca"],
"maxReviewsPerApp": 80
}

Set maxReviewsPerApp to about 10 times the number of countries so the App Store can fill every storefront. The same cap applies to Google Play, which returns up to 150 per package.

Competitor comparison across apps

{
"appleAppIds": ["310633997", "874139669", "686449807"],
"googlePlayPackages": ["com.whatsapp", "org.thoughtcrime.securesms", "org.telegram.messenger"],
"countries": ["us", "gb"],
"maxReviewsPerApp": 20,
"includeReviewInsights": true
}

Compare the rating_distribution and top_complaint_terms rows of each app side by side. Group the reviews by app_id and rating to see where each competitor loses users.

Weekly complaint digest for your own app

{
"appleAppIds": ["310633997"],
"googlePlayPackages": ["com.whatsapp"],
"countries": ["us", "gb", "in"],
"maxReviewsPerApp": 100,
"includeReviewInsights": true
}

Save it as a task and schedule it weekly (for example 0 7 * * 1). Send rows with rating of 1 or 2 to Slack or a helpdesk through a webhook, and keep the review_insights rows to watch top_complaint_terms week over week. The stores choose which reviews they show, and the actor does not remember earlier runs, so deduplicate on review_id to keep only reviews you have not seen; you are charged for every review a run returns.

Market research by country

{
"appleAppIds": ["310633997"],
"countries": ["in", "br", "id", "ng", "mx"],
"maxReviewsPerApp": 50
}

Each row carries the country of the storefront it came from, so you can compare what users in different markets say about the same app.

Input parameters

ParameterTypeDefaultWhat it does
appleAppIdsarray of stringsnone (form prefill: 310633997)Numeric App Store IDs. A leading id is removed.
googlePlayPackagesarray of stringsnone (form prefill: com.whatsapp)Google Play package names.
countriesarray of stringsus when empty (form prefill: us, gb, in)Two letter App Store storefront codes. Each adds up to 10 reviews per App Store app. Not used for Google Play, which is read from the US store.
maxReviewsPerAppinteger (1 to 5,000)200 (form prefill: 100)Most reviews per app across all countries. In practice an App Store app gives at most 10 per country and a Play package at most 150 per run.
sortBystringmostrecentAccepted for compatibility but currently has no effect: neither store's public source lets the actor choose the order.
includeReviewInsightsbooleanfalseAdd one review_insights row per app, computed from that app's reviews in the same run.

Give at least one App Store ID or Play package. A run with neither ends with one summary row and pays only the start fee.

Run options. The default memory is 512 MB and the default timeout is 3,600 seconds; a run of a few apps takes seconds.

What data do you get?

One row per review.

Both stores: store (app_store or google_play), app_id (the App Store ID or Play package), country (the storefront; always US for Google Play), review_id (the store's own review ID), rating (1 to 5), text, author (the reviewer's display name), reviewed_at, scraped_at.

App Store only: app_name and title (the review headline). App Store rows also carry vote_sum and vote_count, which are always 0 because Apple's reviews page does not publish helpful votes; ignore them.

Google Play only: app_version (the version the reviewer was on) and thumbs_up (how many people marked the review helpful). Play reviews have no title.

Which reviews you get. The stores decide. The App Store page shows Apple's 10 most relevant reviews for each storefront, which can be years old (dates from 2020 to 2026 in our WhatsApp test). Google Play returns its own selection: on 2 October the 12 WhatsApp reviews were dated 23 July to 18 September, not in date order. Neither store gives a full history or a guaranteed newest first feed through these public sources.

Review insights rows (includeReviewInsights: true), one per App Store app (all countries together) and one per Play package: _type: "review_insights", store, app_id, app_name (App Store), rating_distribution (count and percent for 1_star to 5_star), top_complaint_terms (up to 12 words or word pairs from 1 and 2 star reviews, each with a count), rating_trend (per month: review_count and avg_rating; null when the reviews fall in a single month), based_on_reviews, based_on_negative_reviews and computed_at. There is no developer reply rate, because neither store's public source shows replies.

Each run ends with a _type: "summary" row (apps_processed, countries_queried, reviews_delivered, charged_for, and a short explanation when nothing was delivered) and a _type: "info" row. Neither is charged. Skip rows that have a _type field when you load reviews.

Stable fields for automations

These 9 fields were present in every review we sampled (34 reviews from two runs on 2 October, both stores):

FieldWhat it holds
storeapp_store or google_play
app_idApp Store numeric ID or Play package name
countryStorefront code, upper case
review_idThe store's review ID; deduplicate on it across runs
ratingStars, 1 to 5
textReview body
authorReviewer display name
reviewed_atWhen the review was posted, ISO 8601
scraped_atWhen the row was captured, ISO 8601

We will not rename these fields. New fields may be added over time; existing ones keep their names.

Output examples

Real rows from our test run on 2 October 2026 (WhatsApp, both stores), with long texts trimmed and reviewer names masked.

An App Store review from the UK storefront:

{
"store": "app_store",
"app_id": "310633997",
"app_name": "WhatsApp Messenger",
"country": "GB",
"review_id": "13051642211",
"rating": 2,
"title": "Superb app but anti-disabled",
"text": "This is an excellent app and well designed. However the sign in process on the iPad is unnecessarily ridiculous and really hard if you’re physically disabled…",
"author": "rob***",
"vote_sum": 0,
"vote_count": 0,
"reviewed_at": "2025-08-23T16:29:26.000Z",
"scraped_at": "2026-10-02T15:24:15.320Z"
}

A Google Play review, with the app version and helpful votes:

{
"store": "google_play",
"app_id": "com.whatsapp",
"country": "US",
"review_id": "ad1e7e0f-1cfd-45e4-ad84-dfafb7d51c23",
"rating": 1,
"text": "Forces android users to sync all contacts no option to add who you want via messaging…",
"author": "M****** G*****",
"thumbs_up": 4,
"app_version": "2.26.35.75",
"reviewed_at": "2026-09-18T13:24:23.000Z",
"scraped_at": "2026-10-02T15:24:17.636Z"
}

A review insights row for the Google Play package (12 reviews; terms list trimmed):

{
"_type": "review_insights",
"store": "google_play",
"app_id": "com.whatsapp",
"rating_distribution": {
"1_star": { "count": 6, "pct": 50 },
"2_star": { "count": 1, "pct": 8.3 },
"3_star": { "count": 4, "pct": 33.3 },
"4_star": { "count": 0, "pct": 0 },
"5_star": { "count": 1, "pct": 8.3 }
},
"top_complaint_terms": [
{ "term": "phone", "count": 6 },
{ "term": "number", "count": 6 },
{ "term": "account", "count": 5 },
{ "term": "customer", "count": 5 }
],
"rating_trend": [
{ "month": "2026-07", "review_count": 4, "avg_rating": 2.5 },
{ "month": "2026-08", "review_count": 7, "avg_rating": 2 },
{ "month": "2026-09", "review_count": 1, "avg_rating": 1 }
],
"based_on_reviews": 12,
"based_on_negative_reviews": 7,
"computed_at": "2026-10-02T15:24:17.646Z"
}

The summary row of the same run (never charged; charged_for is 0 only because this was a local test, on Apify it counts charged reviews):

{
"_type": "summary",
"apps_processed": 2,
"countries_queried": 2,
"reviews_delivered": 24,
"charged_for": 0,
"review_insights_charged": 0,
"charge_failures": 0,
"scraped_at": "2026-10-02T15:24:17.648Z"
}

Pricing

Pay per event: you pay for each review delivered to your dataset, plus a small start fee per run. The review price is the same on every Apify plan.

EventFreeBronzeSilverGold and above
review-scraped, per review$0.0002$0.0002$0.0002$0.0002
review-scraped, per 1,000 reviews$0.20$0.20$0.20$0.20
apify-actor-start, per run$0.005 per GB of run memory, minimum one eventsamesamesame

The start fee, exactly. Apify's apify-actor-start event is charged once when a run starts, at $0.005 for each GB of memory the run uses, with a minimum of one event. This actor runs on 512 MB by default, so a default run pays one event: $0.005.

Worked examples. One App Store app in 8 countries (up to 80 reviews): $0.016 plus $0.005. Three apps on both stores with 20 reviews each (120 reviews): $0.024 plus $0.005. A daily run of 100 reviews for a month: about $0.60 in reviews plus $0.15 in start fees.

Review insights rows are not charged today. The actor's code asks for a review-insights-computed charge, but that event is not part of this actor's live pricing, so Apify does not bill it. If a price for it is added, it will appear on the Pricing tab with advance notice.

Never charged: a review already delivered in the same run (for example one shown in two storefronts), apps with no reviews, unknown IDs or packages, store calls that fail, and the summary and info rows. A run that delivers nothing pays only the start fee.

There is no scheduled price change for this actor. The Pricing tab on this page always shows the rate for your own plan; if it and this table ever differ, the Pricing tab is right.

FAQ

Where do the reviews come from? From the public reviews page of the Apple App Store website, one per country storefront, and from the review service the Google Play website itself uses. Nothing is behind a login.

How many reviews can I get? Up to 10 per App Store app per country storefront, because that is all Apple's public page shows, and up to 150 per Google Play package per run. More countries means more App Store reviews. For a small app a storefront may have fewer than 10.

Can I get every review an app has ever had, or only new ones? Neither. The stores choose which reviews these public sources show: Apple shows its most relevant 10 per storefront, and Google Play returned reviews from the previous two and a half months in our test, not in date order. For a running log, schedule the actor and deduplicate on review_id.

Does sortBy work? Not at the moment. It is accepted so older inputs keep working, but neither store's public source lets the actor choose the order.

Do I need an Apple or Google account, or an API key? No. You need only an Apify account.

Do I need a proxy? No. Both sources answer plain requests from Apify's servers, so no proxy is used or billed.

What happens if an ID is wrong or an app has no reviews? That app returns no rows and costs nothing. If the whole run delivers nothing, the summary row explains why.

Why are vote_sum and vote_count always 0? Apple's current reviews page does not publish helpful votes, so App Store rows carry 0 for both. Use thumbs_up on Google Play rows instead.

Can I run it on a schedule? Yes. Save your input as a task, then in Apify Console go to Schedules, Create new, and pick a time or a cron expression such as 0 7 * * 1. Each run returns and charges every review the stores show at that moment, including ones you already have.

How do I export the data? From the run's Storage tab as JSON, CSV, Excel, XML or HTML, or through the Apify API. Remove rows that have a _type field if you want reviews only.

Can I use it from Claude, ChatGPT or another AI assistant?

  • Connector URL: https://mcp.apify.com/?tools=themineworks/app-reviews-monitor.
  • Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
  • ChatGPT: developer mode, add an MCP connector with the URL, sign in with Apify.
  • Cursor or VS Code: add it as an HTTP MCP server with that URL.
  • Claude Code: claude mcp add -t http app-reviews-monitor "https://mcp.apify.com/?tools=themineworks/app-reviews-monitor".

Is it legal to scrape app reviews? The actor reads only reviews that the stores publish to anyone, without logging in. Reviewer names are personal data, so you are responsible for how you store and use them, including the stores' terms and data protection laws such as GDPR and CCPA. This is general information, not legal advice.

Integrations

  • Google Sheets: export a run to a sheet, or use Apify's Google Sheets integration to append each run's reviews.
  • Make, Zapier and n8n: use the Apify app or node to start a run and send 1 and 2 star reviews to Slack, email or a helpdesk.
  • Webhooks: have Apify call your URL when a run succeeds, then read the dataset.
  • API and client libraries: start runs and read datasets from Python, JavaScript or any HTTP client. The "Copy to your AI assistant" block above has the exact call.
  • MCP clients: Claude, ChatGPT, Cursor, VS Code and Claude Code can call the actor as a tool through https://mcp.apify.com.

To find apps first, try Google Play Search or track keyword positions with ASO Keyword Rank Tracker.

More from The Mine Works

Marketing, SEO and reviews

Social media and video

Leads and business directories

LinkedIn

Real estate

Science, health and government data

Jobs and hiring

Company and business data

E-commerce and marketplaces

Food and local services

Developer and AI tools

More tools

Support

Found an app that returns no reviews, or need a field we do not return yet? Open an issue on the Issues tab of this page with your input and the run ID, and we will reply there. To ask for a new review source, email dmineworks@gmail.com.

App Review Monitor collects public App Store and Google Play reviews in one format, across as many App Store countries as you list, at $0.20 per 1,000 reviews.