App Store & Google Play Reviews Scraper by Adaptive Labs
Under maintenancePricing
from $1.50 / 1,000 review scrapeds
App Store & Google Play Reviews Scraper by Adaptive Labs
Under maintenanceScrape app reviews from Google Play and the Apple App Store in one run with one normalised schema: rating, text, date, version, developer reply. Sort, date cutoff, only-new mode. No reviewer names.
Pricing
from $1.50 / 1,000 review scrapeds
Rating
0.0
(0)
Developer
Adaptive Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Security
Limited permissionsShare
Collect publicly available Google Play reviews and a limited Apple App Store review sample in one run. Both stores use one normalised dataset. This is an Apify Actor for product research and feedback analysis.
Tested Apple output is approximately 10 reviews embedded in the public app page for the selected country. Apple chooses that subset. Those reviews are not necessarily the newest, and they are not a complete history. A larger maximum does not remove that limit. Apple's RSS route is implemented, at most 10 pages, but deeper RSS retrieval has not been demonstrated.
What does this Actor do?
It reads public review pages for the Google Play package names and App Store ids you provide. Google Play can page through a chosen maximum, sorted by newest, most relevant, or rating. The App Store path returns the tested page sample described above. It does not log into either store.
An empty app list runs the built-in Spotify example on both stores and, when no maximum was set, caps that example at 20 reviews.
Why use it?
- One schema for Google Play and the App Store, including scheduling and the Apify dataset API
- Google Play sort: newest, most relevant, or rating
- Country and language selection. Language applies to Google Play
- A per-app maximum, so a run stays inside the window you set
- An optional date cutoff
- Optional saved-review filtering inside that fetched window
- No store login and a 512 MB memory cap
What data can it extract?
| Field | What it is |
|---|---|
| store | google_play or app_store |
| appId | Package name or numeric App Store id |
| reviewId | Stable source review id |
| rating | 1 to 5 |
| title, text | Review copy. Title is empty for Google Play |
| date | Review time, when the source sends one |
| appVersion | Version string, when available |
| developerReply | Google Play reply text and date. App Store replies are not read |
| country, language | Storefront used for the request. App Store language is null |
| authorHash | Deterministic hash of the reviewer handle |
| url | Public page for the app or review |
Reviewer names are not a separate output field. authorHash is pseudonymisation, not a guarantee of anonymity. Review text and the hash can still be personal data. Handle them lawfully.
How to scrape app reviews
- Add Google Play package names or Play Store links, for example
com.spotify.music. - Add App Store numeric ids or apps.apple.com links, for example
324684580. - Choose country, language, Google Play sort, and the maximum reviews per app.
- Optionally set a date cutoff, or turn on only-new and choose a monitor key.
- Run the Actor and download the dataset as JSON, CSV, Excel, or HTML.
How much does it cost?
Proposed Store pricing, approved by the publisher and not confirmed active:
- $0.005 per run start, charged by the Apify platform as
apify-actor-start - $0.0015 per saved review, charged by this Actor as
review apify-default-dataset-itemis not part of this design and stays off, so a saved review is not billed again as a dataset item
Activation has not been verified. Check the live Pricing tab before running. Apify platform usage charges may apply. No zero-cost run is promised.
A review is charged only when it is saved. Reviews skipped as already seen, duplicated in the same run, or older than the cutoff are not charged. Each saved review emits one review event.
Input
See the input tab for every field.
- App Store ids. The current fallback returns approximately 10 Apple-selected reviews for tested apps and countries, not complete or necessarily newest history.
- Max reviews per app. This bounds how many reviews are fetched for each app. It does not extend the Apple page sample.
- Only new. Skip previously saved review ids for the same monitor key within the reviews fetched this run. This does not guarantee complete monitoring of all reviews.
- Monitor key. Separate saved state. Keys do not share seen reviews. Characters other than letters, numbers, hyphens, and underscores are stored as underscores, so two different names can land on one key.
- Date cutoff. A value such as
2026-10-01is UTC midnight. A review at that exact instant is kept. An earlier review is skipped. A missing or unparseable review date is kept. An invalid cutoff fails the run before any fetch.
With Google Play sort set to newest, and for App Store results, scanning stops at the first review older than the cutoff. Most relevant and rating sorts keep scanning the fetched window, so a later review that is still new enough is not hidden.
{"googlePlayAppIds": ["com.spotify.music"],"appStoreAppIds": ["324684580"],"country": "gb","language": "en","maxReviewsPerApp": 100,"playSort": "newest","reviewsNewerThan": "2026-10-01","onlyNew": false,"monitorKey": "default"}
Only new since last run
When only-new is on, the Actor still fetches up to the per-app maximum. One seen review does not end that window. Later rows can be new, including after a relevant or rating sort and inside Apple's selected page.
Reviews saved by this version are remembered as store, app id, country, and review id. The same source id on another app, store, or country is kept. Language is not part of the identity. The same review fetched again for the same app and country is skipped and is not charged again.
State written by earlier builds stored only store:reviewId. Those older entries still count as seen for that store and review id, including another app that reuses the id, so a previously saved review is not saved or charged again.
The list keeps at most 100,000 identities. Entries that fall off that cap can be saved again on a later run.
Only-new off still drops duplicate ids inside the current run. It does not read or replace the saved monitor list.
Output
You can download the dataset as JSON, HTML, CSV, or Excel.
{"store": "google_play","appId": "com.spotify.music","reviewId": "6dc10ff4-2dc6-49a7-8dd5-a881e4ebf5ca","country": "gb","language": "en","rating": 3,"title": null,"text": "Good app but very limited if you do not have premium...","date": "2026-11-04T08:47:43.000Z","appVersion": null,"helpfulVotes": 0,"developerReply": null,"developerReplyDate": null,"authorHash": "a3681958d3e21788","url": "https://play.google.com/store/apps/details?id=com.spotify.music&reviewId=6dc10ff4-2dc6-49a7-8dd5-a881e4ebf5ca","scrapedAt": "2026-11-05T12:00:00.000Z"}
A source that throws is logged and the other sources still run. If at least one source finishes, the run succeeds. It can contain a partial set or zero reviews. The run fails only when every source throws. Read the per-store lines in the log. A successful run does not prove both stores returned reviews.
Tips
- Use a monitor key per country when you want separate only-new lists. Country is already part of each saved identity.
- Keep the maximum at the volume you actually need. Google Play stops once that many reviews have been fetched.
- Do not treat the Apple sample as a history export or as the latest reviews.
FAQ, disclaimer, and support
This Actor reads publicly available reviews. Review text may contain personal data. Use the data in line with each store's terms and with data protection law, including UK GDPR. You need a lawful basis for any personal data in the output. Not affiliated with Google or Apple.
Questions, bugs, or feature requests: support@adaptivelabs.app, or the Issues tab on the Actor.
Local checks
Offline tests do not call Apify, do not use a token, and do not start a paid run.
npm testnpm run typecheck