Yesterday I wanted to see what people were actually saying about a competitor's app. Not a dashboard. Not a subscription. Just the recent reviews, as data.
Here's what I did and what it cost.
The problem
App Store review pages are endless-scroll JavaScript. Copying them by hand is miserable, and most review-monitoring tools bill monthly whether you use them or not.
What I ran
I pointed a pay-per-event scraper at one app (Spotify, US storefront) and asked for the 5 newest reviews. The input was a few lines of JSON:
{
"apps": ["324684580"],
"countries": ["us"],
"maxReviewsPerApp": 5,
"sortBy": "mostRecent"
}
The result
The run finished in 2.7 seconds. Cost: a fraction of a cent (compute and storage, no subscription, no minimum).
Each review came back as a clean record with real fields:
{
"rating": 5,
"title": "ABSOLUTE CINEMA",
"body": "Just perfection",
"appVersion": "8.9.94",
"reviewedAt": "2026-10-07",
"helpfulVotes": 0,
"sentimentHint": "positive"
}
The bit that saved me
When I themed the reviews, I kept reviewedAt and appVersion next to every theme. A recurring complaint might describe a bug that was already fixed two releases ago, and without the version field you can't tell the difference. That one extra column changed two of my conclusions.
Why I keep using this shape
- No API key, no login, no rate-limit dance.
- Pay per event, so a 5-review run costs a rounding error instead of a $49/mo plan.
- Output is a dataset I can export to JSON, CSV or Excel.
If you've ever signed up for a free trial just to export one week of reviews, you know the feeling this avoids.
Link: App Review Scraper on Apify Store — iOS reviews across 175 storefronts, pay per event.
Full disclosure: I build this actor. I ran it on my own account to write this post and paid the compute cost myself.
Top comments (1)
The
appVersioncolumn changing two conclusions is the whole lesson of data work in one anecdote — a complaint is a claim about a specific moment, and without the moment attached you end up shipping conclusions about bugs that died two releases ago. Same failure mode we keep hitting in Telegram OSINT: a "recent activity spike" is meaningless if half the rows are mirrors re-posting last month's content; the timestamp + permalink per row is what turns text into evidence.The shape itself (pay-per-event, no subscription, clean records) is where the monitoring market is going for episodic questions — "what are people saying right now about app X" is a one-off job, and a $49/mo subscription prices it like a daily job.
One thing that would harden it for citation use: an ingestion stamp (when you fetched the review) kept separate from
reviewedAt(when the author wrote it) — the gap between those two is where silent edits and review-bots slip in.