Product teams and indie devs keep asking the same thing: how do I pull reviews for my app (or a competitor's) into a spreadsheet? Both stores have endpoints you can call without any key.
Apple App Store
Apple still serves customer reviews as JSON:
https://itunes.apple.com/us/rss/customerreviews/page=1/id=310633997/sortby=mostrecent/json
- 50 reviews per page, pages 1 to 10, so at most 500 recent reviews per app and country.
- Change
ustogb,de,jpand so on to get each storefront separately. - The first entry in the feed is app metadata, not a review. Skip entries without
im:rating. - App name:
https://itunes.apple.com/lookup?id=310633997.
Google Play
There is no public API, but the Play website loads reviews through an internal batchexecute call (rpc id UsvDTd):
const inner = JSON.stringify([null, null, [2, /*sort: 2 newest, 1 helpful*/ 2, [150, null, token], null, []], ['com.whatsapp', 7]]);
const body = 'f.req=' + encodeURIComponent(JSON.stringify([[['UsvDTd', inner, null, 'generic']]]));
const r = await fetch('https://play.google.com/_/PlayStoreUi/data/batchexecute?hl=en&gl=us', {
method: 'POST', body,
headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' } });
const data = JSON.parse(JSON.parse((await r.text()).split('\n')[2])[0][2]);
const reviews = data[0]; // each: [id, [name,...], rating, , text, [epochSeconds], thumbsUp, , [, replyText, [replyEpoch]], ... , version at index 10]
const nextToken = data[1]?.[1]; // pass back as `token` for the next page
Page until nextToken is empty. Expect thousands of reviews per app. The format is undocumented and shifts now and then, so check the array indexes when it breaks.
Useful filters
The highest-value slice is usually 1 and 2 star reviews: that is where bug reports and feature requests hide. Filter on rating after fetching, or sort by helpfulness on Google Play.
Prefer not to maintain it
I wrapped both in one Apify actor with the same output shape for both stores, multi-country, star filters and developer replies. About $2 per 1,000 reviews.
- Actor: https://apify.com/USERX/app-reviews-scraper-ios-android
- Source: https://github.com/USERX/app-reviews-scraper
Other small data actors by me: Google News with real article URLs and YouTube transcripts with RAG chunks.
Top comments (0)