DEV Community

Cover image for Get App Store and Google Play reviews as JSON, both stores in one run
Joshua Smith
Joshua Smith

Posted on

Get App Store and Google Play reviews as JSON, both stores in one run

Product teams read reviews by scrolling the store page. That works until you want the last 500 one-star reviews of your competitor, split by app version, in a spreadsheet. Both stores publish this data; here is where it lives and the shortest path to a clean dataset.

Where the public data is

Apple publishes an RSS/JSON customer-reviews feed for every app and storefront: https://itunes.apple.com/us/rss/customerreviews/page=1/id=324684580/sortby=mostrecent/json. It is paginated in pages of 50 and stops at page 10, so 500 reviews per app per country is the hard ceiling, and it carries no developer replies. The public lookup API gives you the app name, developer, average rating and rating count.

Google Play has no documented API for reviews, but the store page loads them from public endpoints that the MIT-licensed google-play-scraper library wraps. Pages are 150 reviews and you can go much deeper than Apple. Developer replies are included.

Writing this yourself means two different clients, two different date formats, two ID schemes, and unifying them into one table.

The two-minute version

App Store & Google Play Reviews Scraper takes app links or IDs from either store, mixed, and returns one record shape for both.

  1. Paste apps into Apps, one per line: App Store URLs, Play Store URLs, numeric Apple IDs or Android package names.
  2. Pick Country, Sort order and Max reviews per app. Narrow Min/Max rating to pull only complaints or only praise.
  3. Click Start, then download JSON, CSV or Excel, or send it to Google Sheets.

From code

curl -X POST "https://api.apify.com/v2/acts/josh99smith~app-reviews-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "apps": ["https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580", "com.spotify.music"], "country": "us", "sort": "newest", "maxReviewsPerApp": 200, "minRating": 1, "maxRating": 2 }'
Enter fullscreen mode Exit fullscreen mode

What you get back

{
    "store": "google",
    "appId": "com.spotify.music",
    "appName": "Spotify: Music and Podcasts",
    "developer": "Spotify AB",
    "reviewId": "4cac1797-5266-4c68-b3f6-f86f63b2c5f5",
    "title": null,
    "text": "too much ad",
    "rating": 2,
    "version": "9.1.30.1993",
    "date": "2026-09-17T19:23:03.181Z",
    "helpfulVotes": 0,
    "developerReply": { "text": "Hi! We welcome your feedback ...", "date": "2026-09-17T19:45:13.542Z" },
    "country": "us",
    "language": "en"
}
Enter fullscreen mode Exit fullscreen mode

Apple records have the same fields (title is populated, developerReply is always null, language is null because the Apple feed does not filter by language). Apps that do not exist come back as a free { "success": false, "errorType": "not-found" } record instead of stopping the run.

Cost and limits

$0.00015 per review ($0.15 per 1,000). Apps that cannot be found, store errors and reviews filtered out by rating are never billed; runs stop at your cost cap. Apple's 500-per-country ceiling applies to everyone; to go past it, run the same app for several countries.

Reviewer display names are the ones the store shows publicly. The Actor stores nothing else about reviewers and does not touch logged-in areas.

Use it from an AI agent

Add https://mcp.apify.com?tools=josh99smith/app-reviews-scraper to your MCP client and ask "pull the 100 newest 1-2 star Play Store reviews of com.spotify.music and summarise the complaints".

Disclosure: I built this Actor. Source: github.com/josh99smith/app-reviews-scraper.

Top comments (0)