App Store Reviews Scraper: Apple & Google Play API
Pricing
from $0.10 / 1,000 reviews
App Store Reviews Scraper: Apple & Google Play API
App Store reviews scraper and Google Play reviews scraper in one actor: export app reviews and app details by app ID, package name or store URL, in any country, to JSON or CSV. Rating, rating count, price, version, developer and review text. Failed items are free and still reported.
Pricing
from $0.10 / 1,000 reviews
Rating
0.0
(0)
Developer
Morgan Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Share
App Store Reviews Scraper (Apple + Google Play)
What is App Store Reviews Scraper?
App Store Reviews Scraper is an App Store reviews scraper and Google Play reviews scraper in one actor: it collects app reviews and app details from the Apple App Store and Google Play as clean JSON, ready to export to CSV or Excel. Give it Apple app ids, App Store URLs, Google Play package names, or Play URLs, in any mix, and pick the store countries. For each app and country it returns the title, developer, price, star rating, rating count, version, release and update dates, genres, description, and screenshot count. For each review it returns the stars, title, text, author, app version, and date.
It reads Apple's public iTunes lookup API and customer-reviews feed, and Google Play's public app pages, over plain HTTP. No browser, no proxy, no sign-in. You pay per record: $0.003 per app-detail record and $0.0001 per review ($0.10 per 1,000 reviews). Failed items are never charged.
The easiest way to try it: paste a few app ids into the Apps field and press Start.
What data can you extract from the App Store and Google Play?
Each app becomes one app-detail record per country. Anything a store does not publish is null; no key is ever missing.
| Field | Type | Apple | Google Play |
|---|---|---|---|
recordType | string | app-detail | app-detail |
store | string | apple | google-play |
appId | string | Numeric app id | Package name |
country | string | Store country, for example us | same |
title | string | yes | yes |
developer, developerId | string | yes | yes |
bundleId | string | yes | Package name |
price, currency, formattedPrice | number, string | yes | yes |
rating, ratingCount | number | yes | yes |
ratingCurrentVersion, ratingCountCurrentVersion | number | yes | null |
version | string | yes | null (see Limits) |
releaseDate, lastUpdated | string | ISO date | ISO date |
releaseNotes | string | What's new | What's new |
genres, primaryGenre | array, string | yes | yes |
contentRating | string | For example 12+ | For example Teen, PEGI 3 |
description | string | Full description | Full description |
screenshotsCount | number | iPhone + iPad + Apple TV | yes |
iconUrl | string | yes | yes |
installs | string | null | For example 1,000,000,000+ |
sizeBytes, minimumOsVersion, languages | number, string, array | yes | null |
storeUrl, developerUrl | string | yes | yes |
input | string | What you typed | same |
fetchedAt, fetchStatus, error | string |
Each review becomes one review record:
| Field | Type | Notes |
|---|---|---|
recordType | string | review |
store, appId, country | string | Which app and store it came from |
reviewId | string | The store's review id |
title | string | Apple only; Play reviews have no title |
body | string | Review text |
rating | number | Stars, 1 to 5 |
author | string | Reviewer name |
authorUrl | string | Apple only |
version | string | App version the review was written on |
date | string | ISO timestamp |
voteSum | number | Apple: helpful votes sum. Play: thumbs-up count |
voteCount | number | Apple only |
developerReply | string | Play only, when the developer replied |
sortBy | string | mostRecent or mostHelpful |
position | number | Order within this app and country |
fetchedAt, fetchStatus, error | string |
Example app-detail record (description shortened):
{"recordType": "app-detail","store": "apple","appId": "324684580","country": "us","title": "Spotify: Music and Podcasts","developer": "Spotify","developerId": "324684583","bundleId": "com.spotify.client","price": 0,"currency": "USD","formattedPrice": "Free","rating": 4.77159,"ratingCount": 42549933,"version": "9.1.90","releaseDate": "2011-07-14T11:22:37Z","lastUpdated": "2026-10-08T07:37:17Z","genres": ["Music", "Entertainment"],"primaryGenre": "Music","contentRating": "12+","screenshotsCount": 14,"storeUrl": "https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580","fetchStatus": "ok","error": null}
The Output tab has two views: App details and Reviews.
Why use this app review scraper?
- Both stores in one run. Apple ids and Play package names go in the same list; the store is detected from the format.
- Every input comes back. Each app and country produces a record, including failures, with a
fetchStatusand anerrormessage. Nothing is dropped silently, and failed records are free. - Tested before release. In the release verification runs on Apify (2026-10-12), 10 of 10 Apple apps in 3 countries returned 30 of 30 app-detail records and 1,500 of 1,500 reviews, and 5 of 5 Google Play apps in 2 countries returned 10 of 10 app-detail records and 500 of 500 reviews. Title, developer, price, rating, and rating count filled on every record; review text, stars, and date on every review. Dead ids came back as
not-foundand were not charged. - Fast and light. No browser and no proxy. The Apple test run (30 app-country pairs, 50 reviews each) finished in 51 seconds.
- Price per record, usage included. There is no separate platform usage bill, and you can cap the total charge for any run.
How to scrape App Store and Google Play reviews
- Open the Input tab.
- Add apps to Apps: an Apple id (
284882215), an App Store URL, a Play package name (com.spotify.music), or a Play URL. - Set Countries (default
us). Each app is fetched once per country. - Set Max reviews per app per country (default 100, up to 500), or turn Include reviews off for app details only.
- Press Start. When the run finishes, open the Output tab or download the dataset as JSON, CSV, or Excel.
App Store reviews API: call it from your code
No App Store Connect key and no Google Play Console access needed, and the app doesn't have to be yours. Call the actor over the Apify API and get the records back in the same request:
curl -X POST "https://api.apify.com/v2/acts/morgan-studio~app-store-reviews-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"appIds": ["284882215", "com.duolingo"], "countries": ["us"], "maxReviewsPerApp": 100}'
The response is the JSON array of app-detail and review records. The API tab above has ready-made snippets for JavaScript, Python, the CLI and MCP.
Export Apple App Store reviews to CSV or JSON
Run with Apple ids or App Store URLs and download the dataset from the Output tab as CSV, Excel or JSON, or from https://api.apify.com/v2/datasets/<datasetId>/items?format=csv. The Reviews view gives one row per review: stars, title, text, author, app version and date.
Google Play reviews scraper
Google Play apps go in the same Apps list, by package name (com.spotify.music) or Play URL. Each Play review carries the stars, text, author, app version, date, thumbs-up count and the developer's reply when there is one. Play and Apple apps can be mixed in one run.
Input
- Apps (
appIds): Apple ids, App Store URLs, Play package names, or Play URLs. - Countries (
countries): two-letter store codes, default["us"]. - Include app details (
includeAppDetails): default on. - Include reviews (
includeReviews): default on. - Max reviews per app per country (
maxReviewsPerApp): default 100, up to 500. - Review order (
sortBy):mostRecent(default) ormostHelpful. - Max concurrency (
maxConcurrency): apps worked on at once, default 4, up to 10.
Example input:
{"appIds": ["284882215", "https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580", "com.duolingo"],"countries": ["us", "gb"],"maxReviewsPerApp": 100}
How much does it cost to scrape app reviews?
You pay per record. There is no separate charge for Apify platform usage; it is included in the record price.
| Event | Price |
|---|---|
App-detail record (fetchStatus: "ok") | $0.003 |
Review record (fetchStatus: "ok") | $0.0001 ($0.10 per 1,000) |
| Actor start | $0.00005 per run |
Only records that came back with data are charged. Failed records (not-found, invalid-input, error) and status rows (no-reviews) are free. They are still written to the dataset so you can see what happened.
For example, 10 apps in one country with 100 reviews each is 10 app-detail records and 1,000 reviews: about $0.13. Reviews only (details off) for the same run: about $0.10.
You can cap a run's total charge in the run options (maximum cost per run). If the next app-detail record would pass the cap, details stop and reviews continue; when the next review would pass it, the run stops.
Limits
- Apple serves at most 500 reviews per app per country (10 pages of 50) through its public feed. Asking for more returns 500. For more history, add more countries.
- Apple's most-recent feed is occasionally empty for an app that has reviews (seen for Instagram in Germany). The actor then uses the most-helpful feed and says so in each review's
sortBy. - Google Play
versionisnull. Play's public app page no longer shows the app version. Review records still carry the version each review was written on. - Google Play reviews come from the same call the Play website uses. Google can change it without notice; if it stops working, Play reviews come back as
errorrecords (free) while Play details and all Apple data keep working. - Prices, ratings, and reviews are per country store, as a signed-out visitor sees them.
How failures are reported
Every app and country produces at least one record. Each record has a fetchStatus:
ok: data was read.not-found: the store has no app with this id in this country.invalid-input: the line is not an app id, package name, or store URL.no-reviews: the app exists but the store returned no reviews for it in this country.error: the store failed three times in a row, or the response could not be read.
The error field says what happened. The run log ends with a summary line: records, failures, requests, retries, elapsed time, and usage.
FAQ
How do I scrape App Store reviews? Paste the app's id or App Store URL into Apps, pick the countries, and press Start. You get up to 500 reviews per app per country, newest first, plus the app's details.
Is there an App Store reviews API I can use for any app? Apple's App Store Connect API only covers your own apps. This actor reads Apple's public review feed for any app, and you call it like an API from your code.
Can I export Google Play reviews? Yes. Add the Play package name, run, and download the Reviews view as CSV, Excel or JSON.
Can I get more than 500 Apple reviews for one app? Not from one country. Apple's public feed stops at 10 pages of 50. Running the same app across several countries gives each country's 500.
Does it need an API key or a login? No. Apple's lookup API and review feed are public and key-free, and Google Play's pages are public.
Can I call it from my code or an AI agent? Yes. Like any Apify actor it runs through the Apify API: start a run with your input and read the dataset as JSON.
How do I keep costs under control? Set a maximum cost per run in the run options, and use maxReviewsPerApp to bound reviews.
Is it legal to scrape app store reviews? The actor reads only public data that a signed-out visitor can see. Whether your use is allowed depends on what you do with the data and where you are. If you are unsure, ask a lawyer.
Ready-made examples
Each one opens with its input filled in; copy it to your account and run.
- App Store and Google Play app details lookup
- App Store and Google Play reviews to JSON
- Export Apple App Store reviews to CSV
- Google Play reviews by package name
- Google Play reviews exporter: CSV and Excel
More actors from the same developer
- Amazon Product Scraper & Price API (ASIN, Keyword)
- YouTube Transcript API & Scraper with Timestamps
- Zillow Scraper API: Property, Search & Zestimate
Changelog
- 2026-10-15: README and listing reworded for search; new sections on API use, scheduling and export; links to the ready-made examples. No change to the scraper or the prices.
- 0.1 (2026-10-12): First release. Apple App Store and Google Play app details and reviews, any country. Pay per record: app-detail $0.003, review $0.0001, failed records free.