App Store & Google Play Reviews Scraper API - iOS & Android
Pricing
from $3.00 / 1,000 reviews
App Store & Google Play Reviews Scraper API - iOS & Android
Scrape Apple App Store and Google Play reviews for any app in one run, in one shape: rating, text, date, app version, developer reply, helpful votes, storefront and language. Every storefront, deep history past the 500-review feed, a free coverage report per app. Pay per review.
Pricing
from $3.00 / 1,000 reviews
Rating
0.0
(0)
Developer
Blackcube Agency AB
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Share
More from this account: YouTube Transcript Suite · Website Contact & Email Suite · Career Site & ATS Jobs Suite · Google News Suite · Keyword Research Suite · Shopify Store Intelligence Suite · eBay Data Suite · Amazon Reviews Suite · Reddit · Meta Ad Library · Vinted · Trustpilot Review Intelligence Suite
Scrape Apple App Store and Google Play reviews for any app in one run, in one shape: rating, text, date, app version, developer reply, helpful votes, storefront and language. Every storefront, deep history past the 500-review feed, a free coverage report per app. Pay per review.
Why this one
Both stores, one shape. Paste App Store and Google Play links, ids or package names into one list and get one dataset where an iOS review and an Android review have exactly the same columns — rating, text, publishedDate, appVersion, replyText, helpfulCount, country, language. No joining two exports with different field names.
It goes well past the 500-review feed. Apple's public review feed stops at 500 per storefront, and most tools stop there with it. This Actor reads that feed in both of its sort orders and then continues into the store's deep catalog, the same source the App Store's own review page uses. Measured on the platform: 3,798 distinct reviews for one app in one storefront, in one run. On Google Play it reads 1,000 reviews per request and was measured to 30,000 with no end in sight.
Every storefront in one run. App Store reviews are published per country, and the same app has a different set in each of the 175 storefronts. Enter all and the run walks every one of them and returns a single deduplicated dataset with the storefront on every row. Measured: 175 of 175 storefronts in 58 seconds, zero errors.
It tells you what it could not reach. Every app gets a free coverage row: partitions asked for, partitions read, partitions where the store's own ceiling was hit, and partitions your own cap stopped early — two different facts, reported as two different fields. No rival in this category emits any completeness signal.
Developer replies, app version, helpful votes, review tags. The developer's reply with its date on both stores, the app version the review was written on, helpful-vote counts, and Google Play's structured review tags (performance, battery, usability and so on) that no other listing returns.
A schedule does not re-bill you for history. Turn on change tracking and the Actor remembers every review id it has delivered, so tomorrow's run charges for tomorrow's reviews. There is no run-start fee, so a daily watch on a quiet app costs nothing on a quiet day.
Filters are applied before you pay. Star ratings, a date window, app versions, a keyword, replied-only — a review your filter drops is never charged. On Google Play the star filter is applied by the store itself, so a 1-star pull never reads the 5-star reviews at all.
What people use it for
- Release monitoring. Put your apps on a daily schedule with change tracking on and get the reviews that appeared since the last run, with the app version on each one, so "the update broke login" reaches you the morning it is written.
- Competitor research. Pull the 1 and 2 star reviews for three rival apps on both stores and read, in their users' words, what makes people leave.
- Feeding a sentiment or topic model. Review text with rating, version, date, storefront and language attached, deduplicated, in one schema for iOS and Android.
- App and developer data. One profile row per app with rating, star histogram, installs, version, release notes and the developer's published email, website, address and phone — without paying for review text you do not need.
Getting started
Paste one app per line into Apps — App Store or Google Play links, Apple ids or Android package names, mixed freely — set how many reviews you want per app, and run it. Every filter is optional.
Recipes
Both stores for one app, newest first
{"apps": ["https://apps.apple.com/us/app/whatsapp-messenger/id310633997","https://play.google.com/store/apps/details?id=com.whatsapp"],"maxReviewsPerApp": 500}
Every App Store storefront, merged and deduplicated
{"apps": ["310633997"],"countries": ["all"],"maxReviewsPerApp": 0}
0 means as much as the Actor can reach. The coverage row names any storefront it did not finish.
Just the complaints, with the developer's answer
{"apps": ["com.whatsapp", "310633997"],"ratings": ["1", "2"],"maxReviewsPerApp": 1000}
A daily watch over your apps, billed only for new reviews
{"apps": ["com.yourcompany.app", "https://apps.apple.com/us/app/id123456789"],"onlyNewSinceLastRun": true,"stateLabel": "our-apps","reviewsSince": "2026-08-01"}
What broke in the last release
{"apps": ["com.whatsapp"],"appVersions": ["2.26.32.83", "2.26.32.84"],"ratings": ["1", "2", "3"]}
App data only, no review text
{"apps": ["com.whatsapp", "310633997", "org.telegram.messenger", "686449807"],"appProfilesOnly": true}
One or two requests per app. Rating, histogram, installs, version, release notes and developer contact details, and no review charges at all.
Input reference
| Field | What it does |
|---|---|
apps | App Store URLs, Google Play URLs, Apple app ids or Android package names, one per line |
stores | both, App Store only, or Google Play only |
maxReviewsPerApp | per-app cap across all its storefronts and languages; 0 means as much as the Actor can reach |
maxReviews | ceiling across the whole run |
countries | App Store storefronts, or all for every one of the 175 |
languages | Google Play languages; each is a separate set of reviews |
appStoreSource | feed then catalog (default), feed only, or catalog only |
includeAppProfile | add the app intelligence row (charged separately) |
appProfilesOnly | app rows only, no reviews and no review charges |
ratings | keep only these star ratings; applied by Google Play before billing |
sort | newest first, most helpful first, or by rating (Google Play) |
reviewsSince / publishedBefore | date window; newest-first runs stop early at the bound |
appVersions | only reviews written on these versions |
searchTerm | only reviews mentioning this word |
onlyWithReplies | keep only reviews the developer answered |
onlyNewSinceLastRun + stateLabel | change tracking for scheduled runs |
maxCostUsd | hard spending ceiling for the run |
What you get
Each review row, identical for both stores:
| Field | What it is |
|---|---|
store | app-store or google-play |
appId, appName | the Apple app id or Android package name, and the app's name |
rating | 1 to 5 stars |
title, text | the review as written (Google Play reviews have no title) |
publishedDate | ISO timestamp |
appVersion | the version the review was written on, where the store publishes it |
country | the App Store storefront, or the country the Google Play profile was read under |
language | the Google Play language partition the review was read from |
reviewerName, reviewerUrl, reviewerImage | who wrote it |
helpfulCount, voteCount | helpful votes (App Store net votes and total; Google Play thumbs-up) |
hasReply, replyText, replyDate | the developer's public answer |
isEdited | whether the reviewer edited it (App Store catalog) |
reviewTags | Google Play's structured tags, e.g. vaf_app_quality_performance: 1 |
appRating, appRatingCount | the app's average rating and count, flat on every row so a spreadsheet needs no joins |
reviewUrl, reviewId | a stable id, and a link on Google Play |
Each app profile row:
| Field | What it is |
|---|---|
rating, ratingCount, reviewCount | the headline numbers; reviewCount is written reviews, where the store publishes it |
ratingOne … ratingFive | the exact star histogram (Google Play) |
installs, minInstalls, maxInstalls | install counts (Google Play) |
developerName, developerId, developerUrl | who publishes it |
developerEmail, developerWebsite, developerAddress, developerPhone | the contact details the developer publishes on the store listing |
category, categories, price, currency, isFree | classification and price |
version, releaseNotes, updatedDate, releasedDate | the current release |
contentRating, minimumOsVersion, fileSizeBytes, languages | requirements |
hasInAppPurchases, inAppPurchaseRange, adSupported | monetisation flags |
bundleId, appUrl, iconUrl, description, screenshotCount | identity |
And one free coverage row per app:
| Field | What it is |
|---|---|
reviewsReturned | what you got |
partitionedBy | country for the App Store, language for Google Play |
partitionsRequested, partitionsWalked, partitionsWithReviews | how much of what you asked for was read |
cappedPartitions | partitions where the store's own ceiling was reached and more exists |
unfinishedPartitions | partitions your cap, budget or a store error stopped early |
requests, stoppedBecause | how much work it took and why it stopped |
Fields a store does not publish are null, never 0 or a guess.
Run it on a schedule
This is built to be put on a cron. Set onlyNewSinceLastRun to true and give stateLabel a
name — for example our-apps — and reuse that exact label on every run. The Actor keeps the ids
of every review it has already handed you, so a scheduled run delivers and charges for new reviews
only. There is no run-start fee, so a morning where nobody reviewed you costs nothing.
In Apify, open the Actor, choose Schedules, and add one — 0 7 * * * runs it every day at
07:00 UTC. Set reviewsSince as well and a newest-first run stops paging the moment it gets past
the date, which keeps a daily run to a handful of requests per app.
Pricing
| Charged for | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|
| 1,000 reviews | $6.00 | $5.40 | $3.90 | $3.00 | $2.80 | $2.60 |
| 1,000 app profiles | $16.00 | $13.50 | $10.30 | $8.00 | $7.40 | $6.80 |
The Store card shows the Gold tier. So 1,000 reviews is $3.00 on Gold, and an app profile is $8.00 per 1,000.
There is no charge for starting a run, and these are always free:
- apps that cannot be found, and anything else that produced no data
- reviews excluded by your own filters
- the per-app coverage report
- every diagnostic row explaining why something returned nothing
FAQ
How do I export App Store or Google Play reviews to CSV or Excel?
Run the Actor, open the run's Storage tab and choose CSV, Excel or JSON. The dataset ships with a reviews view, an app-profiles view and a coverage view, so the export already has sensible columns. Both stores share one column set, so one file holds iOS and Android together.
Can I get more than 500 App Store reviews for an app?
Yes. Apple's public review feed serves 500 per storefront and sort order, and that is where most tools stop. This Actor reads the feed in both sort orders and then continues into the store's deep catalog. Measured on one app in one storefront: 3,798 distinct reviews in a single run. How deep the catalog goes varies by app; every run reports what it reached in the coverage row, and no number is promised that was not measured.
Can I scrape App Store reviews from all countries at once?
Yes. Set countries to all and the run reads every one of the 175 storefronts, deduplicates
across them, and puts the storefront on every row. Measured: all 175 walked in 58 seconds.
Does it return the developer's reply?
Yes — replyText and replyDate on any review that has one, and hasReply to filter on. On
Google Play replies come with the review feed. On the App Store only the deep catalog publishes
them, so onlyWithReplies reads that source.
Why do Google Play reviews change with the language and not the country?
Because that is how Google Play partitions them: the English, German and Spanish review sets for
the same app share no reviews at all, while the same language read from different countries returns
identical ids. So languages is what decides which Google Play reviews you get; countries only
chooses which country's rating snapshot goes on the app profile.
Does it return the app version for each review?
Yes, where the store publishes it — on the App Store feed and on Google Play. Reviews read from the
App Store's deep catalog do not carry a version, and appVersion is null on those rather than
a guess. Measured fill rates on the platform: 90–99% on feed and Google Play rows.
Do I need an Apple or Google API key?
No. Both stores publish their reviews openly. The official developer APIs only cover your own apps — and Google's serves only the last seven days — so a research or competitor use case needs a scraper anyway. Nothing here expires and there is nothing to apply for.
What does a run actually cost?
You pay per review delivered, and per app profile if you keep that on. A run that returns 1,000 reviews on the Gold tier costs $3.00. Reviews filtered out by your settings, apps that cannot be found, error rows and the coverage report are free, and there is no charge for starting a run. The free Apify plan runs it exactly like a paid one.
Will a daily schedule bill me for the same reviews again?
Not with onlyNewSinceLastRun on. The Actor remembers the review ids it has delivered under your
stateLabel and skips them, so you are charged for new reviews only.
Is this an official Apple or Google tool?
No. It is an independent Actor that reads publicly available review pages and feeds. It is not affiliated with, endorsed by, or connected to Apple or Google in any way.
Notes and limits
- Unofficial. Not affiliated with, endorsed by, or connected to Apple Inc. or Google LLC. "App Store" and "Google Play" are used only to say which public stores this Actor reads.
- Public data only. It reads what any visitor to the store can open. It does not log in, and it collects no private or login-gated data.
- Personal data. Reviews carry the display name the reviewer chose to publish. If you process them for people in the EU/UK, that is personal data and the GDPR applies to what you do with it — you are the controller of your copy.
- Ratings without text. Both stores count star-only ratings that carry no review, and neither serves them as rows. The app profile carries the rating count and, on Google Play, the written review count, so the gap is visible up front.
- Depth is measured, not promised. The App Store's deep catalog varies by app; the coverage row says what was reached. Google Play was measured to 30,000 reviews for one app with no end found.
- No proxy needed. Both stores were read directly from Apify's network in every measured run. The proxy option is there for the day that changes.
Support
Something wrong, or a field you need? Open an issue on the Actor's issues tab and it gets looked at.
Use cases
- Release monitoring. Put your apps on a daily schedule with change tracking on and get only the reviews that appeared since the last run, with the app version on each one.
- Competitor research. Pull the 1 and 2 star reviews for rival apps on both stores and read, in their users' words, what makes people leave.
- Feed a sentiment or topic model. Review text with rating, version, date, storefront and language attached, deduplicated, in one schema for iOS and Android.
- App and developer data. One profile row per app with rating, star histogram, installs, version, release notes and the developer's published contact details, without paying for review text.
Run it on a schedule
A one-off pull answers a question; a schedule answers it every day without you. Open Schedules in the Apify Console, point a cron at this Actor, and the dataset keeps filling on its own — no server, no cron box, no babysitting. Everything here is built to be re-run: you are billed per review delivered, so a scheduled run that finds nothing new costs nothing.
FAQ
How do I export App Store and Google Play reviews to CSV or Excel?
Run it, then open the run's Storage tab and pick CSV, Excel or JSON. Both stores share one column set, so one file holds iOS and Android reviews together.
Can I get more than 500 App Store reviews for one app?
Yes. Apple's public feed stops at 500 per storefront and that is where most tools stop. This suite reads the feed in both sort orders and then continues into the store's deep catalog — measured at 3,798 distinct reviews for one app in one storefront. Every run reports what it reached in a free coverage row.
Can I scrape App Store reviews from all countries at once?
Yes. Set countries to all and the run reads every one of the 175 storefronts, deduplicates across them and puts the storefront on every row. Measured: all 175 in 58 seconds.
Will a daily schedule bill me for the same reviews twice?
No, with change tracking on. The Actor remembers the review ids it has already delivered under your tracking label and skips them, so you are charged for new reviews only. There is no run-start fee, so a quiet day costs nothing.
Something wrong, or a field you need that is missing? Open an issue on the Issues tab — it is read and it gets fixed. If this saved you time, a rating on the Store page helps the next person find it.