App Store Reviews Scraper: Apple & Google Play API avatar

App Store Reviews Scraper: Apple & Google Play API

Pricing

from $0.10 / 1,000 reviews

Go to Apify Store
App Store Reviews Scraper: Apple & Google Play API

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

Morgan Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

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.

FieldTypeAppleGoogle Play
recordTypestringapp-detailapp-detail
storestringapplegoogle-play
appIdstringNumeric app idPackage name
countrystringStore country, for example ussame
titlestringyesyes
developer, developerIdstringyesyes
bundleIdstringyesPackage name
price, currency, formattedPricenumber, stringyesyes
rating, ratingCountnumberyesyes
ratingCurrentVersion, ratingCountCurrentVersionnumberyesnull
versionstringyesnull (see Limits)
releaseDate, lastUpdatedstringISO dateISO date
releaseNotesstringWhat's newWhat's new
genres, primaryGenrearray, stringyesyes
contentRatingstringFor example 12+For example Teen, PEGI 3
descriptionstringFull descriptionFull description
screenshotsCountnumberiPhone + iPad + Apple TVyes
iconUrlstringyesyes
installsstringnullFor example 1,000,000,000+
sizeBytes, minimumOsVersion, languagesnumber, string, arrayyesnull
storeUrl, developerUrlstringyesyes
inputstringWhat you typedsame
fetchedAt, fetchStatus, errorstring

Each review becomes one review record:

FieldTypeNotes
recordTypestringreview
store, appId, countrystringWhich app and store it came from
reviewIdstringThe store's review id
titlestringApple only; Play reviews have no title
bodystringReview text
ratingnumberStars, 1 to 5
authorstringReviewer name
authorUrlstringApple only
versionstringApp version the review was written on
datestringISO timestamp
voteSumnumberApple: helpful votes sum. Play: thumbs-up count
voteCountnumberApple only
developerReplystringPlay only, when the developer replied
sortBystringmostRecent or mostHelpful
positionnumberOrder within this app and country
fetchedAt, fetchStatus, errorstring

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 fetchStatus and an error message. 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-found and 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

  1. Open the Input tab.
  2. Add apps to Apps: an Apple id (284882215), an App Store URL, a Play package name (com.spotify.music), or a Play URL.
  3. Set Countries (default us). Each app is fetched once per country.
  4. Set Max reviews per app per country (default 100, up to 500), or turn Include reviews off for app details only.
  5. 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) or mostHelpful.
  • 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.

EventPrice
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 version is null. 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 error records (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.

More actors from the same developer

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.