App Store & Google Play Reviews Scraper avatar

App Store & Google Play Reviews Scraper

Pricing

from $1.00 / 1,000 reviews

Go to Apify Store
App Store & Google Play Reviews Scraper

App Store & Google Play Reviews Scraper

User reviews, ratings, developer replies and app info from the Apple App Store and Google Play in one run. No login, no proxy.

Pricing

from $1.00 / 1,000 reviews

Rating

0.0

(0)

Developer

Nestor Cabrera

Nestor Cabrera

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 days ago

Last modified

Categories

Share

Extract user reviews, star ratings, developer replies and app details from the Apple App Store and Google Play in a single run. No account, no login, no proxy and no API keys. Results are sorted newest first (or most helpful first) and are ready to export as JSON, CSV or Excel.

Apple reviews come from Apple's public customer-reviews feed and app lookup API. Google Play reviews are read through the open-source google-play-scraper library. Both are public data.

Use cases

  • Review monitoring and alerts. Turn on incremental, set minRating: 1 and maxRating: 2, schedule the actor hourly or daily and connect the dataset to Make, n8n, Slack or a webhook to get notified about new complaints.
  • Competitor and ASO research. Compare ratings, complaints and feature requests of your app and its competitors across stores and countries in one dataset.
  • Support triage. Pull low-star reviews with their app version and route them to your support or engineering queue.
  • Product feedback mining. Find what users love or hate by version, country or language, and see how often the developer replies on Google Play.
  • Datasets for analysis. Export clean review text with dates and metadata to JSON, CSV or Excel for sentiment analysis or NLP. Check the licensing and privacy rules that apply to your use.

Input

FieldDescription
appsApp Store URLs, Google Play URLs, numeric Apple ids (310633997) or Android package names (com.whatsapp). The store is detected automatically. Duplicates are merged. Entries that cannot be recognised are skipped with a warning.
countries2-letter storefront codes. Default ["us"].
languagesGoogle Play only. Default ["en"].
maxReviewsPerAppDefault 100. Applied per app, country and language. Apple caps at about 500 reviews per app and country.
sortnewest (default) or mostHelpful.
sinceDate / untilDateISO date (2026-10-01) or relative (7d, 12h, 2w). With newest sorting, paging stops once sinceDate is passed.
minRating / maxRatingKeep only reviews within these stars (1-5). Filtered-out reviews are not charged and do not count toward the cap.
incrementalReturn only reviews newer than the last run, tracked per app, country and language in a store on your account. Needs sort: newest. Default off. See below.
includeSummaryAdds one free summary record per app unit. Default on.
includeAppInfoAdds one free record per app and country. Default on.

Every app is scraped once per country, and Google Play apps once per country and language.

Example:

{
"apps": [
"https://apps.apple.com/us/app/whatsapp-messenger/id310633997",
"com.whatsapp"
],
"countries": ["us", "gb"],
"maxReviewsPerApp": 200,
"minRating": 1,
"maxRating": 2,
"sinceDate": "30d"
}

Output

One dataset item per review (type: "review"):

{
"type": "review",
"store": "apple",
"appId": "310633997",
"appName": "WhatsApp Messenger",
"country": "gb",
"language": null,
"reviewId": "14633530350",
"rating": 1,
"title": "Lost the data",
"text": "I have lost all my data ...",
"author": "Karan Nelapati",
"date": "2026-10-06T08:03:37+00:00",
"appVersion": "26.39.73",
"helpfulCount": 0,
"totalVotes": 0,
"developerReply": null,
"url": null
}

Field notes:

  • title exists only on the App Store. language and developerReply ({text, date}) exist only on Google Play.
  • helpfulCount is the thumbs-up count on Google Play and the helpful vote sum on the App Store. totalVotes is the App Store vote count and null on Google Play.
  • url links to the review on Google Play. The App Store has no per-review link, so it is null there.
  • date is ISO 8601 in UTC.

Plus these records, which are never charged:

  • type: "app": store, appId, name, developer, rating, ratingCount, version, price, currency, category, icon, country, url.
  • type: "summary": one per completed app unit, after its reviews: store, appId, appName, country, language, reviewCount, averageRating (1 decimal), ratingDistribution ({"1": n, ..., "5": n}), developerReplyRate (0 to 1, null on the App Store), oldestReviewDate, newestReviewDate. It is computed only from the reviews returned in that run, so rating filters and incremental mode apply. No summary is written for units that failed, were interrupted by your maximum charge, or (in incremental mode) had no new reviews.
  • type: "error": app, store, country, error (and language on Google Play). Written when an app does not exist in that storefront, has no reviews there, or keeps failing. An error on one app never stops the others.

Incremental mode in detail

  • First run: you get the newest reviews (up to maxReviewsPerApp) and the actor stores a watermark per app, country and language in a key-value store named app-reviews-state on your account. The watermark is the date of the newest review it saw (before rating filters) plus the ids of the reviews at exactly that timestamp.
  • Next runs: paging stops as soon as it reaches a review at or below the watermark, so only newer reviews are returned and charged. Reviews that share the watermark's exact timestamp but were not seen before are still delivered. If nothing is new, the run costs almost nothing and writes no summary.
  • Known gap: if more than maxReviewsPerApp new reviews appear between two runs, you get the newest ones and the older ones in between are skipped. Raise the limit or run more often if you must not miss any.
  • If an app fails or the run stops early (for example, you hit your maximum charge), that app's watermark is not advanced, so the next run may repeat some reviews but will never skip any.
  • Rating filters, date filters, countries and languages can be combined with it. Changing the apps, countries or languages lists simply starts new watermarks for the new combinations.
  • Incremental mode needs sort: newest, because the watermark relies on newest-first order.

Pricing

Pay per event: you are charged per review returned. App info, summary and error records are free. maxReviewsPerApp is therefore also your cost cap per app and country, and the run stops cleanly when your maximum charge is reached.

Good to know

  • Apple returns at most about 500 reviews per app and country (10 pages of 50). To get more, add more countries.
  • Google Play reviews are largely shared between countries for the same language, so different countries can return many identical reviews. Use more languages or one country for deduplicated results.
  • With mostHelpful sorting, sinceDate cannot stop paging early and older reviews are skipped instead, which means more requests.
  • Narrow rating filters on large apps require scanning more reviews. A single exact rating (for example only 1 star) is filtered by Google Play itself.
  • Public data only: no private reviews, no reviewer profiles, no data behind a login.
  • Both stores rate-limit heavy traffic. The actor paces requests, runs a few apps at a time and retries with backoff, but very large runs can still hit limits and report errors.
  • Counts, ratings and votes are a snapshot at the time of the run.

It only collects reviews that the stores already show publicly. You are responsible for how you use the data, including compliance with the stores' terms and with data-protection law such as GDPR, since reviews contain usernames and free text.