App Store Reviews & ASO Scraper icon

SEO & ads intelligence

App Store Reviews & ASO Scraper

Scrape Google Play AND Apple App Store reviews for the same app in one run, normalized to one schema, plus per-app ASO rollup signals — rating distribution, rating trend, review velocity, top praise/complaint keywords.

Free Apify credit covers a first run. No credit card to try.

What we handle for you

  • 🛡️ Browser fingerprint rotation — the target sees a real browser TLS handshake, not a script.
  • 🌐 Proxy rotation — fresh exit on every block through Apify Proxy.
  • 🔁 Retries with backoff — 408 / 429 / 5xx retried up to five times, Retry-After honoured.
  • 🧊 Clean, typed rows — schema-validated output with ISO-8601 timestamps.
  • 💰 Pay per result — no data, no result charge.

Input

Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.

FieldTypeRequiredWhat it does
apps array yes List of logical apps to scrape. Each entry needs at least one of playPackageName / appleAppId (playPackageName: Google Play package name, e.g. "com.instagram.android"; appleAppId: Apple numeric app id, e.g.…
maxReviewsPerApp integer no Cap on reviews fetched per store per app. Google Play paginates toward this cap; Apple is hard-capped at ~50 by the feed itself regardless of this value.
playHl string no 2-letter language code for the Google Play RPC's hl query param.
playGl string no 2-letter country code for the Google Play RPC's gl query param.
includeRollup boolean no Emit one additional ASO rollup row per app (rating distribution, trend, velocity, praise/complaint keyword frequency) alongside the individual review rows.
{
  "apps": [
    {
      "playPackageName": "com.instagram.android",
      "appleAppId": "389801252",
      "appleCountryCode": "us",
      "label": "Instagram"
    }
  ],
  "maxReviewsPerApp": 50,
  "playHl": "en",
  "playGl": "us",
  "includeRollup": true
}

Output

One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.

storeapp_idauthor_nameratingcontentreview_daterating_distributionreview_velocity_per_daytop_praise_keywordstop_complaint_keywords

Pricing

EventPriceWhen
Actor start$0.20Once per run, covers warm-up and proxy session setup.
Review scraped$0.0012Per result written to the dataset.
ASO rollup computed$0.0050Per result written to the dataset.

You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.

FAQ

Do I need an API key, a login, or my own proxy?
No. There is no public reviews API to get a key for — that is the whole point of this Actor. Everything is handled inside it.
Why does Apple return so few reviews?
Because Apple's public customer-reviews feed caps out around 50 per app, per country. That is their limit, not ours, and no scraper can raise it. Setting maxReviewsPerApp to 500 will not change Apple's answer — though it will still deepen the Google Play side.
Can I scrape only one store?
Yes. Omit the id for the store you don't want.
What happens if one app in my list fails?
That app is skipped and the run continues. You get every other app's reviews, and the log names which app failed and why. A single bad app id does not cost you the batch.
Does an app with zero reviews fail the run?
No. An app that legitimately has no reviews is a valid empty answer, not an error. The run finishes SUCCEEDED and says so.
How current are the reviews?
Both sources are sampled most-recent-first, so you get the newest reviews up to your cap — the right shape for tracking a rating trend after a release.
Is the ASO rollup computed from all reviews or only the sampled ones?
Only the ones actually sampled in that run, and total_reviews_sampled tells you exactly how many. We would rather report an honest sample size than imply a full-catalogue statistic we did not fetch. --- <div align="center"> Built by Devil Scrapes 😈 — a small fleet of opinionated public-data Actors. Honest pricing, real engineering, zero fine print. </div>

Ready to run it?

Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.

Related Actors

Teams that run this also run