Google Play & App Store Reviews API
Pricing
Pay per event
Google Play & App Store Reviews API
Collect app metadata and reviews for Google Play apps (and best-effort Apple App Store apps) by URL or id, in one schema. Filter by country, language and date. $0.30 per 1,000 reviews, no reviewer identity, MCP-ready.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Nguyen Vu Trung Hieu
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Google Play & App Store Reviews API: Scrape App Reviews in One Schema
Collect app metadata and reviews for Google Play and Apple App Store apps by package name, URL or id, in one clean schema, with filters for country, language and date. Pay per use: $0.15 per 1,000 reviews, app rows and errors are free, reviews carry no reviewer identity.
Both stores share one output schema. Google Play reviews are collected per country and language, App Store reviews per country (up to the 500 most recent, the limit of Apple's public feed).
Use it as a Google Play reviews API, an app reviews dataset builder, or a review export for product research, competitor analysis and ASO keyword mining. Reviews carry no reviewer names, user ids, avatars or profile links: only the review itself.
Use it from an AI agent (MCP)
The same reviews tool is available as a hosted MCP server and HTTP API at api.openkrill.app (tool name get_app_reviews, overview at tools.openkrill.app).
On Apify you can also call this Actor from any MCP client through the Apify MCP server.
What you get
For every app, country (and language on Google Play):
- App row (free): store, app id, title, developer company, average rating, rating count, star histogram (Google Play), current version, category, store URL.
- Review rows (billed per review): hashed review id, rating, title (Apple), text, date, app version, thumbs-up count (Google Play helpful votes, Apple vote sum), developer reply text and date (Google Play).
- Error rows: one row per failed item (app not found, store temporarily unavailable, bad input) so one broken app never fails the whole run.
Input
| Field | Description |
|---|---|
apps | Google Play package names or URLs, App Store URLs or numeric ids (310633997 or id310633997). Mixed is fine. |
countries | Two-letter codes, default ["us"]. |
languages | Google Play languages, default ["en"]. Ignored for App Store apps. |
maxReviewsPerApp | Per app and country (and language on Google Play). Default 100, 0 = metadata only. |
sinceDate | Only reviews on or after this date. |
sort | newest (default) or relevant. |
useApifyProxy | Route through Apify datacenter proxy. Off by default. |
noCache | Skip the 6 hour result cache. |
{"apps": ["com.spotify.music", "https://play.google.com/store/apps/details?id=com.duolingo"],"countries": ["us"],"languages": ["en"],"maxReviewsPerApp": 50,"sinceDate": "2026-09-01"}
An App Store app uses the same input, for example "https://apps.apple.com/us/app/whatsapp-messenger/id310633997" in apps.
Example output
{ "type": "app", "store": "google-play", "appId": "com.spotify.music", "country": "us", "language": "en","title": "Spotify: Music and Podcasts", "developer": "Spotify AB", "ratingAverage": 4.35, "ratingCount": 36396072,"histogram": { "1": 3698688, "2": 1065977, "3": 1310521, "4": 3104145, "5": 27216725 },"version": "9.1.36.1948", "category": "Music & Audio", "url": "https://play.google.com/store/apps/details?id=com.spotify.music","fetchedAt": "2026-09-30T08:00:21.676Z" }
{ "type": "review", "store": "google-play", "appId": "com.spotify.music", "country": "us", "language": "en","reviewId": "f9b694b0e6fff45396b56db63ae2e5b0", "rating": 5, "title": null, "text": "good","date": "2026-09-29T07:58:08.476Z", "appVersion": "9.1.84.2231", "thumbsUp": 0, "developerReply": null }
Pricing
Pay per event: $0.15 per 1,000 reviews ($0.00015 per review-returned event, one event per review row).
On paid Apify plans the price drops to $0.12 per 1,000 on Silver and $0.10 per 1,000 on Gold and above.
App rows and error rows are free, and maxReviewsPerApp: 0 returns app metadata only.
Identical input is served from a 6 hour cache; cached reviews are billed the same because you still receive them.
The cache is a key-value store named app-reviews-cache in your Apify account, and every run deletes its entries older than 6 hours.
FAQ
Does it scrape the Apple App Store?
Yes: app metadata from Apple's public lookup API and reviews from Apple's public reviews feed, up to the 500 most recent per country.
If that feed is empty for an app that has ratings, you get the app row and an unavailable error row instead of silent nothing.
Can I get reviews in other languages?
Yes on Google Play: set languages (for example ["en", "pt-BR"]) and countries.
Does it include reviewer names? No. Names, user ids, avatars and profile links are never read.
Can I filter by rating?
Not yet. Filter by sinceDate, sort (newest or relevant), country and language, and filter rating in your own code.
Limits
- Apple serves at most 10 pages of 50 reviews (500 most recent) per country.
- Apple reviews come from Apple's public reviews feed, which has returned no entries at times; in that case you get an
unavailableerror row for that app instead of silent nothing (seedocs/sources-and-failures.md). - Google Play does not expose a version for every app ("varies with device"):
versionis thennull. - Google Play reviews have no title; Apple reviews have no developer reply in this feed.
- Public pages only, low request rate. No accounts, no personal data.
Credits
Google Play access follows the approach of the MIT-licensed google-play-scraper by Facundo Olano.