DEV Community

What do users hate about an app? Analysing Google Play and App Store reviews automatically

Reading app reviews by hand doesn't scale. After a few dozen they blur together, and you can't tell whether "it crashes" is one person's phone or a pattern.

I built an Apify Actor (disclosure: I'm the author) that pulls reviews from Google Play and the App Store in one run and adds a summary per app. Here is what it found on a real app, and how to run the same analysis yourself.

The experiment

I ran it on Duolingo, collecting only 1 and 2 star reviews from the US and UK stores:

{
  "appUrls": ["com.duolingo", "570060128"],
  "countries": ["us", "gb"],
  "maxReviewsPerApp": 300,
  "maxRating": 2
}
Enter fullscreen mode Exit fullscreen mode

That returned 600 reviews from Google Play and 154 from the App Store, plus one insights record per store.

A quick note on volume: Duolingo's recent negative reviews on Google Play come at roughly 120 per day. The 600 I collected only go back 5 days (30 Aug to 3 Sep). The App Store feed is smaller: 154 reviews over about 6 days.

What the App Store reviews said

The summary groups complaints into themes. Share of the 154 negative App Store reviews that mention each one:

Theme Share
Pricing / subscription 24.7%
Ads 15.6%
Bugs / crashes 11.7%
Update regressions 10.4%

A typical review in the pricing group says the app "used to be an amazing, free way to learn a language" and now feels like a cash grab. Nothing surprising, but now it comes with a number attached, and you can track it over time.

The surprise on Google Play

On Google Play the generic themes only covered a small part of the complaints (bugs 7.3%, ads 6.7%, pricing 6.3%). That looked odd until I read the most repeated phrases in the negative reviews. Among the top ones were "iranian" (43 mentions) and "test" (38).

Searching the reviews showed 64 of the 600 (about 11%) mention Iran. The reviewers say the Duolingo English Test is not available to people with an Iranian identity, and some complain the app no longer supports Persian. These are the reviewers' claims, I haven't verified them. What matters for the analysis: one specific issue accounted for roughly one in nine negative reviews in that window, and none of my predefined categories would have caught it.

This is why the summary includes a top phrases list as well as fixed themes. Themes tell you about problems you already expect. Phrases surface the ones you don't.

What the summary contains

For each app the Actor outputs:

  • rating distribution and a sentiment score from -1 to +1
  • rating trend (older third of reviews against newest third)
  • top complaint themes: bugs and crashes, pricing, ads, login, performance, support, UI, update regressions, feature requests, privacy (English and Spanish keywords)
  • most repeated phrases in negative and positive reviews
  • average rating by app version and by month

Everything is rule-based, no LLM. That keeps it fast and cheap and makes the output identical on every run. The trade-off is that it won't understand nuance the way a language model would.

Things to know before using it

  • Apple's public review feed exposes roughly the 500 most recent reviews per country. Add more countries to get more.
  • Filtering to 1-2 stars changes what the averages mean. Average rating is only informative when you collect all stars. For complaint analysis, filter. For trend analysis, don't.
  • Google Play is much larger. If you pull a lot, it takes longer.
  • Review text is public data. If you don't need usernames, drop that field before storing it.

Try it on your own app, or a competitor's

  1. Open the Actor page.
  2. Paste a Google Play URL (or package name) and an App Store URL (or id).
  3. Set maxRating to 2 to focus on complaints, and pick the countries you care about.
  4. Schedule it weekly and watch the themes change after each release.

It's pay per use (roughly $0.15 per 1,000 reviews plus $0.05 per summary). If you try it, tell me what's missing. I'm still deciding what to build next and the comments here will steer it.

Top comments (0)