App Store & Google Play Reviews Scraper
Pricing
from $1.00 / 1,000 reviews
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
Maintained by CommunityActor 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, setminRating: 1andmaxRating: 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
| Field | Description |
|---|---|
apps | App 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. |
countries | 2-letter storefront codes. Default ["us"]. |
languages | Google Play only. Default ["en"]. |
maxReviewsPerApp | Default 100. Applied per app, country and language. Apple caps at about 500 reviews per app and country. |
sort | newest (default) or mostHelpful. |
sinceDate / untilDate | ISO date (2026-10-01) or relative (7d, 12h, 2w). With newest sorting, paging stops once sinceDate is passed. |
minRating / maxRating | Keep only reviews within these stars (1-5). Filtered-out reviews are not charged and do not count toward the cap. |
incremental | Return 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. |
includeSummary | Adds one free summary record per app unit. Default on. |
includeAppInfo | Adds 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:
titleexists only on the App Store.languageanddeveloperReply({text, date}) exist only on Google Play.helpfulCountis the thumbs-up count on Google Play and the helpful vote sum on the App Store.totalVotesis the App Store vote count and null on Google Play.urllinks to the review on Google Play. The App Store has no per-review link, so it is null there.dateis 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(andlanguageon 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 namedapp-reviews-stateon 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
maxReviewsPerAppnew 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,countriesorlanguageslists 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
languagesor one country for deduplicated results. - With
mostHelpfulsorting,sinceDatecannot 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.
Is it legal?
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.