App Reviews Scraper (App Store + Google Play)
Pricing
from $0.35 / 1,000 reviews
App Reviews Scraper (App Store + Google Play)
Reviews from the Apple App Store and Google Play in one actor: rating, title, text, author, app version, date, helpful votes and developer replies. Newest, most helpful or by rating, any country. No API key.
Pricing
from $0.35 / 1,000 reviews
Rating
0.0
(0)
Developer
Tarik Cerkezovic
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Security
Limited permissionsShare
One actor for both app stores. Give it App Store URLs or IDs and Google Play URLs or package names, in any mix, and get every review as a clean item: star rating, title (App Store), text, author, app version, date, helpful votes and the developer's reply (Google Play). Newest first, most helpful, or by rating; any store country; optional single-star filter for pulling just the 1-star or 5-star reviews.
No API key, no login. Built for product teams, app-store optimisation, competitor monitoring, sentiment analysis and support triage.
What you get
| Field | Description |
|---|---|
store, appId, appName, appUrl, developer, appRating, appRatingCount, country | The app, repeated on every item |
reviewId, position | Stable review ID and rank in the requested order |
rating, title, text | The review. Titles exist on the App Store only |
author, authorUrl | Reviewer display name, and profile URL on the App Store |
version, date, helpfulCount | App version reviewed, ISO date, helpful votes |
developerReply, developerReplyDate | Google Play developer response, when any |
error, errorMessage | Only on app-level failures |
Sample output
{"store": "googleplay","appId": "com.facebook.katana","appName": "Facebook","appUrl": "https://play.google.com/store/apps/details?id=com.facebook.katana&hl=en&gl=us","developer": "Meta Platforms, Inc.","appRating": 4.56,"appRatingCount": 187093848,"country": "us","reviewId": "1f9ddd3d-6847-4398-9b72-160b4682437f","position": 1,"author": "Char Cross","rating": 1,"text": "Reported to Facebook three times that since they moved the marketplace...","version": "578.0.0.40.75","date": "2026-09-17T09:14:31.000Z","helpfulCount": 16650,"input": "com.facebook.katana","fetchedAt": "2026-11-05T17:00:00.000Z"}
Input
| Field | Type | Default | What it does |
|---|---|---|---|
apps | array of strings | required | App Store URLs or numeric IDs; Google Play URLs or package names. |
maxReviewsPerApp | integer | 200 | Cap per app. 0 takes all. Apple's public feed stops at 500 per app and country; Google Play has no cap. |
sortBy | newest, most_helpful, rating | newest | Order. rating is Google Play only; the App Store falls back to most helpful. |
country | string | us | Store country. A country in the URL wins. |
language | string | en | Google Play interface language. |
ratingFilter | 1 to 5 | none | Keep only reviews with this rating. Google Play filters server-side; the App Store feed is filtered after download. |
maxConcurrency | integer | 3 | Apps in parallel. |
proxyConfiguration | object | Apify datacenter proxy | Proxy for all requests. |
residentialFallback | boolean | true | Retry a blocked app through residential proxies, only on a detected block. |
Minimal input:
{ "apps": ["id284882215", "com.facebook.katana"], "maxReviewsPerApp": 500 }
Errors
error | Meaning | Charged? |
|---|---|---|
INVALID_INPUT | Not an App Store or Google Play app reference | no |
APP_NOT_FOUND | No such app in that store and country | no |
NO_REVIEWS | The app has no reviews there (or none with the chosen rating) | no |
BLOCKED | The store refused every proxy tried | no |
FETCH_FAILED | Network or parsing failure | no |
Pricing
Pay per event: a small fixed amount per review item, plus Apify platform usage. Error items are free. Set a maximum total charge on the run to cap spend.
Notes
- App Store reviews come from Apple's public customer-reviews feed, which returns the 500 most recent (or most helpful) reviews per country. For older reviews, run the actor regularly and deduplicate on
reviewId. - Google Play pages through its review list with a continuation token, so
0really means all reviews, which can be hundreds of thousands for big apps. UsemaxReviewsPerAppor a run charge limit. - Dates are ISO 8601 in UTC. App Store versions and helpful votes are as reported by the feed.
Using it from code
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('serentity/app-reviews-scraper').call({ apps: ['com.facebook.katana'], maxReviewsPerApp: 1000, ratingFilter: 1 });const { items } = await client.dataset(run.defaultDatasetId).listItems();
Legal
Reviews are public content on the store pages. The actor collects the public display name a reviewer chose and nothing else about them. Use it in line with the stores' terms and applicable data protection law.