App Store & Google Play Reviews Scraper with AI Themes avatar

App Store & Google Play Reviews Scraper with AI Themes

Pricing

from $0.50 / 1,000 reviews

Go to Apify Store
App Store & Google Play Reviews Scraper with AI Themes

App Store & Google Play Reviews Scraper with AI Themes

Scrape App Store and Google Play reviews in one run: rating, title, text, author, date, app version and developer reply. Add AI complaint and praise themes per app with shares and quotes. Paste app names or store links.

Pricing

from $0.50 / 1,000 reviews

Rating

0.0

(0)

Developer

Andrey Afanasenko

Andrey Afanasenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Share

Apify Actor

Get the reviews of any app from the App Store and Google Play in one run — stars, title, text, author, date, app version and the developer's reply. Type an app's name and it is found in both stores for you. Turn on AI themes to get a broad summary of the main complaint and praise themes for each store, with how many reviews back each one, the share of 1–2 star ratings and real quotes.

🆓 Free to start: 3 apps a month on the free plan · the first 50 reviews of each app in each store in full · the next 50 shown with their stars, date and version.

🎯 What it does

You give one app per line: a name (Calm), an App Store link or id (https://apps.apple.com/us/app/calm/id571800810), or a Google Play link or package (com.calm.android). A name is matched in both stores; two links on one line pin the pair exactly.

You get one row per review: which store, the app, the stars, the title, the text, the reviewer's public name, the date, the app version it was written on, Google Play's helpful votes and the developer's public reply.

With AI themes on you also get one summary row per app and store — a broad summary of the main complaint themes (each with what to check first) and the main praise themes, with related issues grouped into one theme. Each theme carries how many reviews back it, what share of all reviews that is, how many of them are 1–2 stars, the app versions they name, and up to three verbatim quotes.

What you won't get more than the stores publish. The App Store gives at most 500 reviews per app — App Store rows stop there whatever you ask for. Google Play goes up to 100,000. The App Store does not publish helpful votes or developer replies, and Google Play reviews have no title.

📦 Output sample

There are three kinds of rows, told apart by rowType:

  • review — store, appName, appId, appUrl, country, position, reviewId, rating, title, text, author, date, appVersion, helpfulCount, developerReply, developerReplyDate, rowStatus, input, note, scrapedAt.
  • theme_summary — store, appName, appId, appUrl, country, storeRating, storeRatingsCount, reviewsAnalysed, averageRating, lowRatingShare, summary, complaintThemes, praiseThemes, input, note, scrapedAt.
  • app_skipped — store, input, skipReason, note, scrapedAt: an app a store does not list, or one the free plan's month left out. Never charged.

A Google Play review of Calm (US store; text shortened, reviewer name changed):

{
"rowType": "review",
"rowStatus": "full",
"store": "Google Play",
"appName": "Calm - Sleep, Meditate, Relax",
"appId": "com.calm.android",
"appUrl": "https://play.google.com/store/apps/details?id=com.calm.android&gl=US",
"country": "US",
"position": 3,
"reviewId": "2f436768-3eeb-48b7-b928-e2763ee5f893",
"rating": 1,
"title": null,
"text": "This app constantly drains my battery even with background usage switched off…",
"author": "sleepyreader",
"date": "2026-10-26T14:02:11.000Z",
"appVersion": "7.3",
"helpfulCount": 2,
"developerReply": "Thank you for your patience, and we're sorry about the battery drain…",
"developerReplyDate": "2026-10-26T18:46:02.000Z",
"input": "Calm",
"note": null,
"scrapedAt": "2026-10-27T13:38:40.512Z"
}

A theme summary from the same run (App Store, 300 reviews read; one theme of each list shown, texts shortened):

{
"rowType": "theme_summary",
"store": "App Store",
"appName": "Calm",
"storeRating": 4.8,
"storeRatingsCount": 1990602,
"reviewsAnalysed": 300,
"averageRating": 3.63,
"lowRatingShare": 30.7,
"summary": "Reviewers love the sleep stories and daily meditations. The biggest complaint is that paying subscribers are locked out or shown as free after an update…",
"complaintThemes": [
{
"rank": 1,
"title": "Paid subscribers locked out or not recognized",
"kind": "account",
"insight": "After the 7.x update, long-time subscribers are shown the paywall again.",
"action": "Investigate the subscription restore flow for purchases made before the 7.x update.",
"reviews": 21,
"shareOfReviews": 7,
"lowRatingShare": 90.5,
"averageRating": 1.38,
"versions": ["7.1", "7.3", "7.2"],
"quotes": [{ "text": "Paid for years and now it says I'm on the free plan…", "rating": 1, "date": "2026-10-21T00:00:00.000Z", "appVersion": "7.3" }]
}
],
"praiseThemes": [
{ "rank": 1, "title": "Sleep stories and sounds help people sleep", "kind": "content", "reviews": 20, "shareOfReviews": 6.7, "lowRatingShare": 0, "averageRating": 4.9, "versions": ["7.3"], "quotes": [] }
]
}

In Apify Console the dataset has two views:

ViewWhat it shows
Reviewsstore, app, stars, title, review, author, date, app version, helpful votes, developer reply, row status
Themesstore, app, reviews analysed, average stars, 1–2 star share, summary, complaint themes, praise themes, store rating

⚡ Quick start

  1. Put Calm in Apps.
  2. Leave Stores on App Store and Google Play and Max reviews per app on 500.
  3. Tick Complaint and praise themes (AI) if you want the summaries.
  4. Click Start. A run like this takes about a minute.

🧭 When to use it

  • Product and app teams — what users complain about after the latest release, store by store, with the app version.
  • Competitor research — the complaints and praise of a rival app in both stores, side by side.
  • Customer support and ASO — the reviews without a developer reply on Google Play, the 1–2 star reviews since a date.
  • Market research — reviews of many apps in one country's store, or one app in several countries (one run per country).

🛠 Input

FieldWhat it does
AppsOne app per line: a name, an App Store link or id, a Google Play link or package. Two links on one line pin the pair. Up to 50 apps a run.
StoresBoth, App Store only, or Google Play only.
Max reviews per appThe most reviews per app in each store. Default 500. Google Play: up to 100,000. The App Store gives at most 500.
Complaint and praise themes (AI)One summary row per app and store: a broad summary of the main complaint and praise themes. Reads up to 300 reviews per summary, in the order you sorted by.
CountryWhose store to read — 104 countries both stores serve.
Review languageGoogle Play returns only the reviews written in this language; the App Store returns the country's reviews in any language. Default: the country's main language.
Sort byNewest first, or the store's most-helpful order (Google Play calls it most relevant).
Star ratingsKeep only these stars, e.g. 1 and 2 for complaints.
Reviews sinceKeep only reviews written on or after this date.

💰 How much does it cost to scrape app reviews?

You pay per result, and nothing for a lookup that found nothing:

  • Review — charged per review delivered in full.
  • Theme summary — charged per app and store when its themes are written (only with AI themes on).

Filters are applied before you pay: a review that does not pass your stars or date filter is not charged. Reviews shown locked on the free plan are not charged. A theme summary that could not be written is not charged. The price per event for your plan is on the Pricing tab.

🆓 Free vs paid plan

Free planPaid plan
Apps a month3no limit
Reviews in full per app in each store50up to 100,000 (App Store: 500)
Next reviews50 shown locked (stars, date, version)—
AI themesyes, on the reviews in fullyes

🧪 Recipes

Only complaints: Star ratings 1, 2, Sort by Newest first, AI themes on — the themes then read only the complaints.

What changed after a release: Reviews since the release date, Sort by Newest first.

A competitor in both stores: two lines, Calm and Headspace, AI themes on — four summary rows to compare.

Pin an app exactly: https://apps.apple.com/us/app/calm/id571800810 https://play.google.com/store/apps/details?id=com.calm.android on one line.

📡 Live status & storage records

RecordWhat it holds
Live Status (status.html)Progress while the run works, then what was saved — or why nothing was.
Run Summary (RUN_SUMMARY)Per app and store: how it was matched, the store rating, reviews fetched, delivered, shown locked and filtered out, the themes; prices and the stop reason.
User Message (USER_MESSAGE)What happened and what to change — on every run that returned nothing, and whenever the App Store's 500 limit applied.
Free-Plan Limits Applied (FREE_LIMITS_APPLIED)The free-plan limits that affected the run.

🤖 Programmatic / API use

curl -X POST "https://api.apify.com/v2/acts/afanasenko~app-reviews-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"apps": ["Calm", "Headspace"], "maxReviewsPerApp": 500, "ratings": ["1", "2"], "complaintThemes": true}'

Filter the rows by rowType: review for reviews, theme_summary for the themes.

💡 Tips & Best Practices

Getting maximum results

  • Type the name as the store shows it. If an app is not found, paste its store link.
  • For more than 500 App Store reviews, read several countries' stores — each country has its own reviews.

Cost optimization

  • Set Max reviews per app to what you will read; the default 500 is enough for themes.
  • Use Star ratings instead of filtering afterwards — what does not pass is not charged.

Performance

  • A run with one app in both stores takes about a minute with themes, 20–30 seconds without.

Data quality

  • The themes are counted from the reviews themselves: every count, share and quote comes from real reviews, and quotes are verbatim.
  • The App Store gives the day of a review, not the time.

❓ FAQ

Why do I get only 500 App Store reviews? The App Store publishes at most 500 reviews per app per country. Google Play goes much deeper. The run says so in the log, the status message and the User Message.

How is my app found in the other store? A name is searched in each store and matched to the app whose title fits it. An App Store or Google Play link is read for the app's name and developer, and that name is searched in the other store. The Run Summary says how each app was matched. Two links on one line skip matching altogether.

What does "most helpful" mean on Google Play? Google Play has no most-helpful order; its own "most relevant" order is used.

Are the themes written by AI? The grouping is. The model only says which reviews belong to which theme; every number and quote in the row is computed from those reviews. The themes are broad: related problems are grouped together (for example, the price and what sits behind the paywall), so read them as the main topics reviewers raise, not as a list of every single issue.

In what language are the themes? English, whatever the language of the reviews. Quotes stay in the reviewer's own words.

Do I pay for an app that was not found? No. Nothing is charged for an app a store does not list, or for one the run could not reach.

🛟 Support & feedback

Open the Issues tab with the input you used and what you expected. Ideas are welcome there too.

The reviews are public pages of the App Store and Google Play. Reviewers' names are their public display names. Use the data in line with the stores' terms and the privacy laws that apply to you, especially if you store or publish reviewers' names.

📋 Changelog

See the Changelog tab.