Competitor App Reviews Analysis Scraper - Compare Apps avatar

Competitor App Reviews Analysis Scraper - Compare Apps

Pricing

from $3.00 / 1,000 reviews

Go to Apify Store
Competitor App Reviews Analysis Scraper - Compare Apps

Competitor App Reviews Analysis Scraper - Compare Apps

Put several competing apps side by side: reviews from both stores for every app on your list in one dataset with identical columns, plus one profile row per app with average rating, star histogram, installs and current version. Filter to 1-3 stars to read what users leave a rival over.

Pricing

from $3.00 / 1,000 reviews

Rating

0.0

(0)

Developer

Blackcube Agency AB

Blackcube Agency AB

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 hours ago

Last modified

Share

More from this account: YouTube Transcript Suite · Website Contact & Email Suite · Career Site & ATS Jobs Suite · Google News Suite · Keyword Research Suite · Shopify Store Intelligence Suite · eBay Data Suite · Amazon Reviews Suite · Reddit · Meta Ad Library · Vinted · Trustpilot Review Intelligence Suite

Put several competing apps side by side: reviews from both stores for every app on your list in one dataset with identical columns, plus one profile row per app with average rating, star histogram, installs and current version. Filter to 1-3 stars to read what users leave a rival over.

Why this one

Both stores, one shape. Paste App Store and Google Play links, ids or package names into one list and get one dataset where an iOS review and an Android review have exactly the same columns — rating, text, publishedDate, appVersion, replyText, helpfulCount, country, language. No joining two exports with different field names.

It goes well past the 500-review feed. Apple's public review feed stops at 500 per storefront, and most tools stop there with it. This Actor reads that feed in both of its sort orders and then continues into the store's deep catalog, the same source the App Store's own review page uses. Measured on the platform: 3,798 distinct reviews for one app in one storefront, in one run. On Google Play it reads 1,000 reviews per request and was measured to 30,000 with no end in sight.

Every storefront in one run. App Store reviews are published per country, and the same app has a different set in each of the 175 storefronts. Enter all and the run walks every one of them and returns a single deduplicated dataset with the storefront on every row. Measured: 175 of 175 storefronts in 58 seconds, zero errors.

It tells you what it could not reach. Every app gets a free coverage row: partitions asked for, partitions read, partitions where the store's own ceiling was hit, and partitions your own cap stopped early — two different facts, reported as two different fields. No rival in this category emits any completeness signal.

Developer replies, app version, helpful votes, review tags. The developer's reply with its date on both stores, the app version the review was written on, helpful-vote counts, and Google Play's structured review tags (performance, battery, usability and so on) that no other listing returns.

A schedule does not re-bill you for history. Turn on change tracking and the Actor remembers every review id it has delivered, so tomorrow's run charges for tomorrow's reviews. There is no run-start fee, so a daily watch on a quiet app costs nothing on a quiet day.

Filters are applied before you pay. Star ratings, a date window, app versions, a keyword, replied-only — a review your filter drops is never charged. On Google Play the star filter is applied by the store itself, so a 1-star pull never reads the 5-star reviews at all.

What people use it for

  • Release monitoring. Put your apps on a daily schedule with change tracking on and get the reviews that appeared since the last run, with the app version on each one, so "the update broke login" reaches you the morning it is written.
  • Competitor research. Pull the 1 and 2 star reviews for three rival apps on both stores and read, in their users' words, what makes people leave.
  • Feeding a sentiment or topic model. Review text with rating, version, date, storefront and language attached, deduplicated, in one schema for iOS and Android.
  • App and developer data. One profile row per app with rating, star histogram, installs, version, release notes and the developer's published email, website, address and phone — without paying for review text you do not need.

Getting started

Paste one app per line into Apps — App Store or Google Play links, Apple ids or Android package names, mixed freely — set how many reviews you want per app, and run it. This listing starts already configured for several apps side by side, profile row per app; every other option is still available.

Recipes

Both stores for one app, newest first

{
"apps": [
"https://apps.apple.com/us/app/whatsapp-messenger/id310633997",
"https://play.google.com/store/apps/details?id=com.whatsapp"
],
"maxReviewsPerApp": 500
}

Every App Store storefront, merged and deduplicated

{
"apps": ["310633997"],
"countries": ["all"],
"maxReviewsPerApp": 0
}

0 means as much as the Actor can reach. The coverage row names any storefront it did not finish.

Just the complaints, with the developer's answer

{
"apps": ["com.whatsapp", "310633997"],
"ratings": ["1", "2"],
"maxReviewsPerApp": 1000
}

A daily watch over your apps, billed only for new reviews

{
"apps": ["com.yourcompany.app", "https://apps.apple.com/us/app/id123456789"],
"onlyNewSinceLastRun": true,
"stateLabel": "our-apps",
"reviewsSince": "2026-08-01"
}

What broke in the last release

{
"apps": ["com.whatsapp"],
"appVersions": ["2.26.32.83", "2.26.32.84"],
"ratings": ["1", "2", "3"]
}

App data only, no review text

{
"apps": ["com.whatsapp", "310633997", "org.telegram.messenger", "686449807"],
"appProfilesOnly": true
}

One or two requests per app. Rating, histogram, installs, version, release notes and developer contact details, and no review charges at all.

Input reference

FieldWhat it does
appsApp Store URLs, Google Play URLs, Apple app ids or Android package names, one per line
storesboth, App Store only, or Google Play only
maxReviewsPerAppper-app cap across all its storefronts and languages; 0 means as much as the Actor can reach
maxReviewsceiling across the whole run
countriesApp Store storefronts, or all for every one of the 175
languagesGoogle Play languages; each is a separate set of reviews
appStoreSourcefeed then catalog (default), feed only, or catalog only
includeAppProfileadd the app intelligence row (charged separately)
appProfilesOnlyapp rows only, no reviews and no review charges
ratingskeep only these star ratings; applied by Google Play before billing
sortnewest first, most helpful first, or by rating (Google Play)
reviewsSince / publishedBeforedate window; newest-first runs stop early at the bound
appVersionsonly reviews written on these versions
searchTermonly reviews mentioning this word
onlyWithReplieskeep only reviews the developer answered
onlyNewSinceLastRun + stateLabelchange tracking for scheduled runs
maxCostUsdhard spending ceiling for the run

What you get

Each review row, identical for both stores:

FieldWhat it is
storeapp-store or google-play
appId, appNamethe Apple app id or Android package name, and the app's name
rating1 to 5 stars
title, textthe review as written (Google Play reviews have no title)
publishedDateISO timestamp
appVersionthe version the review was written on, where the store publishes it
countrythe App Store storefront, or the country the Google Play profile was read under
languagethe Google Play language partition the review was read from
reviewerName, reviewerUrl, reviewerImagewho wrote it
helpfulCount, voteCounthelpful votes (App Store net votes and total; Google Play thumbs-up)
hasReply, replyText, replyDatethe developer's public answer
isEditedwhether the reviewer edited it (App Store catalog)
reviewTagsGoogle Play's structured tags, e.g. vaf_app_quality_performance: 1
appRating, appRatingCountthe app's average rating and count, flat on every row so a spreadsheet needs no joins
reviewUrl, reviewIda stable id, and a link on Google Play

Each app profile row:

FieldWhat it is
rating, ratingCount, reviewCountthe headline numbers; reviewCount is written reviews, where the store publishes it
ratingOneratingFivethe exact star histogram (Google Play)
installs, minInstalls, maxInstallsinstall counts (Google Play)
developerName, developerId, developerUrlwho publishes it
developerEmail, developerWebsite, developerAddress, developerPhonethe contact details the developer publishes on the store listing
category, categories, price, currency, isFreeclassification and price
version, releaseNotes, updatedDate, releasedDatethe current release
contentRating, minimumOsVersion, fileSizeBytes, languagesrequirements
hasInAppPurchases, inAppPurchaseRange, adSupportedmonetisation flags
bundleId, appUrl, iconUrl, description, screenshotCountidentity

And one free coverage row per app:

FieldWhat it is
reviewsReturnedwhat you got
partitionedBycountry for the App Store, language for Google Play
partitionsRequested, partitionsWalked, partitionsWithReviewshow much of what you asked for was read
cappedPartitionspartitions where the store's own ceiling was reached and more exists
unfinishedPartitionspartitions your cap, budget or a store error stopped early
requests, stoppedBecausehow much work it took and why it stopped

Fields a store does not publish are null, never 0 or a guess.

Run it on a schedule

This is built to be put on a cron. Set onlyNewSinceLastRun to true and give stateLabel a name — for example our-apps — and reuse that exact label on every run. The Actor keeps the ids of every review it has already handed you, so a scheduled run delivers and charges for new reviews only. There is no run-start fee, so a morning where nobody reviewed you costs nothing.

In Apify, open the Actor, choose Schedules, and add one — 0 7 * * * runs it every day at 07:00 UTC. Set reviewsSince as well and a newest-first run stops paging the moment it gets past the date, which keeps a daily run to a handful of requests per app.

Pricing

Charged forFreeBronzeSilverGoldPlatinumDiamond
1,000 reviews$6.00$5.40$3.90$3.00$2.80$2.60
1,000 app profiles$16.00$13.50$10.30$8.00$7.40$6.80

The Store card shows the Gold tier. So 1,000 reviews is $3.00 on Gold, and an app profile is $8.00 per 1,000.

There is no charge for starting a run, and these are always free:

  • apps that cannot be found, and anything else that produced no data
  • reviews excluded by your own filters
  • the per-app coverage report
  • every diagnostic row explaining why something returned nothing

FAQ

How do I export App Store or Google Play reviews to CSV or Excel?

Run the Actor, open the run's Storage tab and choose CSV, Excel or JSON. The dataset ships with a reviews view, an app-profiles view and a coverage view, so the export already has sensible columns. Both stores share one column set, so one file holds iOS and Android together.

Can I get more than 500 App Store reviews for an app?

Yes. Apple's public review feed serves 500 per storefront and sort order, and that is where most tools stop. This Actor reads the feed in both sort orders and then continues into the store's deep catalog. Measured on one app in one storefront: 3,798 distinct reviews in a single run. How deep the catalog goes varies by app; every run reports what it reached in the coverage row, and no number is promised that was not measured.

Can I scrape App Store reviews from all countries at once?

Yes. Set countries to all and the run reads every one of the 175 storefronts, deduplicates across them, and puts the storefront on every row. Measured: all 175 walked in 58 seconds.

Does it return the developer's reply?

Yes — replyText and replyDate on any review that has one, and hasReply to filter on. On Google Play replies come with the review feed. On the App Store only the deep catalog publishes them, so onlyWithReplies reads that source.

Why do Google Play reviews change with the language and not the country?

Because that is how Google Play partitions them: the English, German and Spanish review sets for the same app share no reviews at all, while the same language read from different countries returns identical ids. So languages is what decides which Google Play reviews you get; countries only chooses which country's rating snapshot goes on the app profile.

Does it return the app version for each review?

Yes, where the store publishes it — on the App Store feed and on Google Play. Reviews read from the App Store's deep catalog do not carry a version, and appVersion is null on those rather than a guess. Measured fill rates on the platform: 90–99% on feed and Google Play rows.

Do I need an Apple or Google API key?

No. Both stores publish their reviews openly. The official developer APIs only cover your own apps — and Google's serves only the last seven days — so a research or competitor use case needs a scraper anyway. Nothing here expires and there is nothing to apply for.

What does a run actually cost?

You pay per review delivered, and per app profile if you keep that on. A run that returns 1,000 reviews on the Gold tier costs $3.00. Reviews filtered out by your settings, apps that cannot be found, error rows and the coverage report are free, and there is no charge for starting a run. The free Apify plan runs it exactly like a paid one.

Will a daily schedule bill me for the same reviews again?

Not with onlyNewSinceLastRun on. The Actor remembers the review ids it has delivered under your stateLabel and skips them, so you are charged for new reviews only.

Is this an official Apple or Google tool?

No. It is an independent Actor that reads publicly available review pages and feeds. It is not affiliated with, endorsed by, or connected to Apple or Google in any way.

Notes and limits

  • Unofficial. Not affiliated with, endorsed by, or connected to Apple Inc. or Google LLC. "App Store" and "Google Play" are used only to say which public stores this Actor reads.
  • Public data only. It reads what any visitor to the store can open. It does not log in, and it collects no private or login-gated data.
  • Personal data. Reviews carry the display name the reviewer chose to publish. If you process them for people in the EU/UK, that is personal data and the GDPR applies to what you do with it — you are the controller of your copy.
  • Ratings without text. Both stores count star-only ratings that carry no review, and neither serves them as rows. The app profile carries the rating count and, on Google Play, the written review count, so the gap is visible up front.
  • Depth is measured, not promised. The App Store's deep catalog varies by app; the coverage row says what was reached. Google Play was measured to 30,000 reviews for one app with no end found.
  • No proxy needed. Both stores were read directly from Apify's network in every measured run. The proxy option is there for the day that changes.

Support

Something wrong, or a field you need? Open an issue on the Actor's issues tab and it gets looked at.

The full-featured version of this engine is App Store & Google Play Reviews Scraper API - iOS & Android.

Run it without configuring anythingCompare competitor app reviews side by side, a ready-made example you can start as-is or copy.

Use cases

  • Release monitoring. Put your apps on a daily schedule with change tracking on and get only the reviews that appeared since the last run, with the app version on each one.
  • Competitor research. Pull the 1 and 2 star reviews for rival apps on both stores and read, in their users' words, what makes people leave.
  • Feed a sentiment or topic model. Review text with rating, version, date, storefront and language attached, deduplicated, in one schema for iOS and Android.
  • App and developer data. One profile row per app with rating, star histogram, installs, version, release notes and the developer's published contact details, without paying for review text.

Run it on a schedule

A one-off pull answers a question; a schedule answers it every day without you. Open Schedules in the Apify Console, point a cron at this Actor, and the dataset keeps filling on its own — no server, no cron box, no babysitting. Everything here is built to be re-run: you are billed per review delivered, so a scheduled run that finds nothing new costs nothing.

FAQ

How do I export App Store and Google Play reviews to CSV or Excel?

Run it, then open the run's Storage tab and pick CSV, Excel or JSON. Both stores share one column set, so one file holds iOS and Android reviews together.

Can I get more than 500 App Store reviews for one app?

Yes. Apple's public feed stops at 500 per storefront and that is where most tools stop. This suite reads the feed in both sort orders and then continues into the store's deep catalog — measured at 3,798 distinct reviews for one app in one storefront. Every run reports what it reached in a free coverage row.

Can I scrape App Store reviews from all countries at once?

Yes. Set countries to all and the run reads every one of the 175 storefronts, deduplicates across them and puts the storefront on every row. Measured: all 175 in 58 seconds.

Will a daily schedule bill me for the same reviews twice?

No, with change tracking on. The Actor remembers the review ids it has already delivered under your tracking label and skips them, so you are charged for new reviews only. There is no run-start fee, so a quiet day costs nothing.


Something wrong, or a field you need that is missing? Open an issue on the Issues tab — it is read and it gets fixed. If this saved you time, a rating on the Store page helps the next person find it.