Mobile data deep-dive · 2026

The App Store and Google Play store the same reviews completely differently

If you scrape both stores the same way, you'll miss half the data. Here's how each one actually exposes reviews — and how to turn the combined corpus into sentiment and ASO signal.

Open the App Reviews Actor →

"Scrape app reviews" sounds like one job. It's two. Apple and Google built their stores on different assumptions, and those assumptions leak straight into how reviews are addressed, paginated, split by region and tagged by version. Treat them as interchangeable and you'll quietly under-collect on one side. This guide goes store by store, then shows what the merged dataset is actually good for.

Apple App Store: storefronts and RSS feeds

Apple identifies an app by a numeric track ID (the long number in a store URL, e.g. id389801252 for Instagram). The crucial wrinkle is the storefront: Apple runs a separate store per country, and a review lives only in the storefront it was written in. There is no single global review list. To collect a worldwide app's feedback you iterate over country codes — us, gb, de, jp and so on.

Apple also surfaces recent reviews through a public RSS-style feed, sorted by most-recent or most-helpful, paginated in pages. It is generous on the newest reviews and thinner on deep history, which shapes how much back-catalogue you can realistically pull per country.

Fields the App Store gives you per review

FieldNotes
titleApple reviews have a headline; Google reviews do not.
review / textFull body, untruncated.
rating1–5 stars.
userNamePublic display name.
versionThe app version reviewed — reliable on Apple, the key to release-level analysis.
updated / dateTimestamp of the review.
countryWhich storefront it came from.

Google Play: package names and token pagination

Google identifies an app by its package name (reverse-DNS, e.g. com.instagram.android), taken straight from the ?id= in a Play URL. Reviews aren't split into separate storefronts the way Apple's are; instead you pass a language and country to filter, and you page through results with a continuation token rather than numbered pages. You also choose a sort: newest, rating, or most-helpful, and that choice changes which slice you can reach.

Fields Google Play gives you per review

FieldNotes
contentReview body. No separate title field.
score1–5 stars.
userNamePublic display name.
thumbsUpCountHow many users found it helpful — useful for ranking salient complaints.
replyContentThe developer's public reply, if any. Apple doesn't expose this in feed data.
atReview timestamp.
reviewCreatedVersionApp version — present but less consistently populated than Apple's.

The differences that bite you

App Store

  • Numeric track ID
  • Per-country storefronts — must loop countries
  • Has a review title
  • Reliable version per review
  • Recent-heavy, shallow deep history

Google Play

  • Reverse-DNS package name
  • Lang + country filter, token pagination
  • No title, body only
  • Developer replies exposed
  • Helpful-vote counts on each review
Gotcha 1: A US-only Apple pull silently drops every non-US review. Always enumerate the countries that matter for the app.
Gotcha 2: Don't join Apple and Google reviews on username — they're different identity spaces. Join on app + date windows instead.
Gotcha 3: Sort order limits reach. "Newest" caps how far back you go; switch to most-helpful for the high-signal historical complaints.

Worked example: did the v8.2 release tank the rating?

You shipped v8.2 on the App Store and ratings dipped. Reviews tell you why, faster than a survey:

  1. Pull the last 90 days of US, UK and DE reviews for your track ID.
  2. Filter on version == "8.2" — this is exactly why Apple's reliable version field matters.
  3. Bucket by rating and read the 1- and 2-star title + review text.
  4. Theme it: if "login," "crash" and "logged out" cluster, you have a regression, not a taste problem.
  5. Confirm cross-store: check whether Google Play 1-stars from the same week echo it, which separates a platform-specific bug from a universal one.

That's a root-cause loop you can run in an afternoon, entirely from review data.

Turning reviews into ASO and sentiment signal

Beyond firefighting, the merged corpus is a standing growth asset:

Running it as an API call

One run can target either store. Apple by track ID with countries; Google by package name with language:

curl -X POST "https://api.apify.com/v2/acts/renzomacar~app-store-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "store": "appstore",
    "appId": "389801252",
    "countries": ["us", "gb", "de"],
    "sort": "mostRecent",
    "maxReviews": 500
  }'

Swap "store": "googleplay" and "appId": "com.instagram.android" to hit the other store with the same call shape. Append &format=csv on the dataset URL for a spreadsheet.

Mine both stores without writing two scrapers

Apple storefronts and Google Play in one Actor — full review text, version, ratings and developer replies, country by country. Free Apify credits to start.

Get the App Reviews Scraper → Or get done-for-you leads

Disclosure: the links to Apify on this page are affiliate links. If you create a paid account through them we may earn a commission, at no extra cost to you. We recommend Apify because we build and ship the App Store Scraper on it ourselves.