App Store & Google Play Reviews Scraper + Sentiment Analysis
Pricing
from $0.14 / 1,000 reviews
App Store & Google Play Reviews Scraper + Sentiment Analysis
Scrape iOS App Store and Google Play reviews, then get what the reviews actually mean: sentiment per review, complaints ranked by how much they hurt, which release broke things, and a topic-by-topic comparison against competitor apps. Works in 6 languages. No login, no API key.
Pricing
from $0.14 / 1,000 reviews
Rating
0.0
(0)
Developer
Luis Segura
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
App Store & Google Play Reviews — Sentiment, Topics & Competitor Comparison
Scrape iOS and Android reviews and find out what they actually mean: which complaint is costing you the most, which release broke things, and where competitors beat you — topic by topic.
No login. No API key. No cookies. No headless browser.
Why this one and not a plain review scraper
Most review scrapers hand you rows of text and stop there. Then you paste 2,000 reviews into a spreadsheet and read them yourself.
This one does the reading:
| Plain scrapers | This actor | |
|---|---|---|
| Raw reviews | ✅ | ✅ |
| Sentiment per review | ❌ | ✅ |
| Topic detection (18 categories) | ❌ | ✅ |
| Complaints ranked by impact | ❌ | ✅ |
| Which release broke things | ❌ | ✅ |
| Month-over-month trend | ❌ | ✅ |
| Head-to-head vs competitors | ❌ | ✅ |
| Non-English reviews scored correctly | ❌ | ✅ 6 languages |
What You Get
Three kinds of row in one dataset.
1. review — one per review
| Field | Description |
|---|---|
platform | ios or android |
appId, appName, storeUrl | Which app |
country | Storefront the review came from |
reviewId, userName, url | Identity |
date | YYYY-MM-DD — present on both stores in practice |
rating | 1–5 stars |
title, text | The review itself |
version | App version the review was left on |
thumbsUp | Helpful votes |
developerReply | Developer's response (Google Play only) |
sentimentScore | −5 to +5 |
sentimentLabel | positive / negative / neutral / mixed |
sentimentTopics | e.g. ["crashes_bugs","ads"] |
sentimentLang | Language used to score it |
sentimentSource | text (measured from the words) or rating (derived from the stars) |
2. app_summary — one per app
| Field | Description |
|---|---|
storeRating, storeRatingCount | Lifetime store numbers |
sampleAvgRating, avgSentiment, negativePct | The scraped sample |
ratingDistribution | Reviews per star, 1–5 |
topComplaints | Ranked by pain, not by frequency — with verbatim quotes |
topPraise | What people love, for your store listing copy |
topTopics | All topics with mentions, %, sentiment and avg stars |
byVersion | Per release: reviews, stars, sentiment, % negative, top complaint |
byMonth | Same, month by month |
worstVersion | The release that's clearly worse than your own baseline |
3. comparison — one row when you pass 2+ apps
| Field | Description |
|---|---|
apps | Every app's rating, sentiment and % negative side by side |
byTopic | Per topic: each app's mentions and sentiment, plus bestApp / worstApp |
weaknessesVsCompetitors | Topics where you trail the best competitor, with the gap |
strengthsVsCompetitors | Topics where you lead |
The first app you list is treated as yours. Everything after it is a competitor.
Topics detected
crashes_bugs · performance_speed · ui_ux_design · pricing_subscription · ads · login_account · customer_support · features_missing · updates_regression · privacy_security · notifications · battery_data · content_quality · onboarding · gamification_rewards · brand_controversy · content_moderation · effectiveness_results
The last four were added after analyzing 1,000 live reviews and finding they were the biggest uncovered clusters — engagement mechanics (streaks, energy, lives), reputation events and review-bombing, audience-appropriateness, and whether the product actually delivers its promised outcome.
How to Use It
Audit your own app
{"appleAppIds": ["https://apps.apple.com/us/app/my-app/id123456789"],"googleAppIds": ["com.mycompany.myapp"],"countries": ["us", "gb"],"maxReviewsPerApp": 500}
Find what to fix first — angry reviews only
{"googleAppIds": ["com.mycompany.myapp"],"minRating": 1,"maxRating": 2,"maxReviewsPerApp": 300}
Read topComplaints[0] in the summary row. That's your sprint.
Beat your competitors
{"appleAppIds": ["id111111111", "id222222222", "id333333333"],"maxReviewsPerApp": 400,"compareApps": true}
weaknessesVsCompetitors tells you exactly where you lose and to whom.
Scan a category you're thinking of entering
{"searchTerm": "habit tracker","searchPlatform": "both","maxAppsFromSearch": 4,"maxReviewsPerApp": 200}
Every app's top complaints in one run — that's your product gap analysis.
Go international
{"googleAppIds": ["com.mycompany.myapp"],"countries": ["us", "es", "br", "de", "fr", "it"],"maxReviewsPerApp": 1200}
Reviews are scored in their own language, so a Spanish 1-star reads as negative — not as noise.
Sample Output
An app_summary row, trimmed:
{"type": "app_summary","platform": "ios","appName": "My App","storeRating": 3.1,"storeRatingCount": 5200,"reviewsAnalyzed": 400,"sampleAvgRating": 2.6,"negativePct": 60,"worstVersion": "4.0.0","topComplaints": [{"topic": "crashes_bugs","mentions": 240,"mentionPct": 60,"avgSentiment": -4,"avgRating": 1.1,"negativeMentions": 236,"painScore": 468.2,"sampleComplaints": ["Since the update it crashes every time I open it.","Crashes on launch, completely unusable now."]}],"byVersion": [{ "version": "4.0.0", "reviews": 240, "avgRating": 1.0, "negativePct": 100, "topComplaint": "crashes_bugs" },{ "version": "3.2.0", "reviews": 160, "avgRating": 5.0, "negativePct": 0, "topComplaint": null }]}
A comparison row, trimmed:
{"type": "comparison","weaknessesVsCompetitors": [{ "topic": "crashes_bugs", "gap": -5.0, "bestApp": "Rival App" },{ "topic": "customer_support", "gap": -1.4, "bestApp": "Rival App" }],"strengthsVsCompetitors": [{ "topic": "pricing_subscription", "gap": 0.9, "nextBestApp": "Rival App" }]}
Use Cases
- Product managers — what to fix first, backed by counts instead of the loudest tweet
- Release triage —
worstVersiontells you which build regressed, before the rating tanks - ASO / marketing —
topPraiseis your store-listing copy, in your users' own words - Competitive research — where rivals are beaten, and on which topic
- Due diligence — sentiment trend of an app you're about to acquire or invest in
- Support teams — recurring complaints, ranked, with verbatim quotes
Pricing & Cost
Pay per event. You pay for what you pull, not for compute time.
| Event | Price |
|---|---|
| Actor start | $0.00005 |
| Review scraped | $0.0002 ($0.20 per 1,000 reviews) |
| App intelligence report | $0.03 per app |
| Competitor comparison | $0.05 per run |
Real examples:
| What you run | Cost |
|---|---|
| 200 reviews, 1 app | $0.07 |
| 1,000 reviews, 1 app | $0.23 |
| 3 apps × 500 reviews + comparison | $0.44 |
| 5,000 reviews across 6 storefronts, 1 app | $1.03 |
Set analyze: false to skip the reports and pay for raw reviews only.
Limitations — stated honestly
- Apple caps its review feed at ~500 reviews per storefront. That's Apple's limit, not ours. Apple genuinely returns a different review set per storefront, so adding
countriesis the way to a bigger sample — measured on live data, four Apple storefronts gave 400 distinct reviews with zero overlap. - Google Play works the opposite way: it segments by language, not by storefront. Asking for
esandbrwith the same language returns the identical review set. The actor maps each storefront to the language spoken there and skips any storefront whose language is already covered, and it deduplicates by review ID across the whole app — so you are never billed twice for the same review. Practically: listing 6 storefronts for an Android app that only has English reviews will still return one English sample, not six. - Apple's feed does not always include a review date. In practice it usually does — a live 800-review Apple sample came back 100% dated — but it is not contractually guaranteed. When it's missing,
dateisnullandbyMonthstays empty;byVersionstill works. - Apple's feed has no developer replies. Google Play does, on about 16% of reviews in a live sample.
- Not every review can be assigned a topic. Roughly 55% of reviews in a live 1,000-review sample matched at least one topic; the rest were too short to classify. A quarter of real store reviews are seven words or fewer ("Good", "I love it", "trash"), and no keyword taxonomy can extract a theme from those. Topic coverage rises steeply with length: 16% of 60+ word reviews go untagged versus 90% of 1–3 word reviews. This matters for how you read
topComplaints— it ranks the complaints among reviews that said something specific, which is the useful population anyway, but it is not a census of all negative reviews. - Sentiment is lexicon-based, in English, Spanish, Portuguese, French, German and Italian. It handles negation ("never crashes" is praise) and clause breaks ("never crashes but the ads are awful" is a complaint).
- Not every review can be scored from its words. Plenty of real reviews carry no scorable vocabulary at all — "Idk why i can't crate my avatar" is a furious 1-star with nothing a lexicon can grab, and reviews in unsupported languages are the same story. Those rows are scored from the star rating instead, and
sentimentSourcesaysratingso you know. Filter onsentimentSource == "text"when you want only text-measured rows. Scoring them this way rather than dropping them is deliberate: leaving them out would compute every app-level average over only the dramatically-worded reviews, which skews the whole picture toward the extremes. - Sarcasm is not detected. No lexicon method detects it.
worstVersionneeds volume. Version buckets under 5 reviews are ignored on purpose, so one angry user can't flag a healthy release.
Legal
Reads only public review data that both stores publish openly — no login, no authentication bypass, no personal data beyond the public display name attached to each review. Review text belongs to its authors and to the store; use it in line with Apple's and Google's terms and with the privacy law in your jurisdiction.
Support
Found a bug or need a field that isn't here? Open an issue on the actor's Issues tab — issues get answered.