App Store Reviews Monitor & Analyzer
Pricing
from $0.50 / 1,000 review scrapeds
App Store Reviews Monitor & Analyzer
Fetches the most recent App Store reviews for any app from Apple's official public RSS feed and returns clean structured data plus a built-in summary: average rating, rating breakdown, low-rating share, most-reviewed app versions, and the top complaint signals in 1-2 star reviews. No login, no...
Pricing
from $0.50 / 1,000 review scrapeds
Rating
0.0
(0)
Developer
Donghai Li
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Share
App Store Reviews Monitor & Analyzer β Apify Actor (deploy-ready, not yet published)
Fetches the most recent App Store reviews for any app and returns clean structured data plus a run summary (average rating, rating breakdown, low-rating share, most-reviewed app versions, top complaint signals in 1β2β reviews). Built for ASO monitoring, indie devs, support/QA teams and scheduled "new bad review" alert pipelines (Make/Zapier/n8n via Apify schedules + webhooks).
Status: built and locally verified 2026-10-29 (offline sample test + live test, both below). No Apify account exists yet and nothing has been published β deployment steps are at the bottom.
Why this niche (scan summary, Oct 2026)
Selection rules: public/legit data only, visible demand, no dominant free incumbent, AI-maintainable, and pay-per-event economics that can't go negative (Apify retired rental pricing Apr 2026 β PPE is the only model for new Actors, and browser/proxy-heavy Actors can lose money per sale).
| Candidate | Demand evidence | Verdict |
|---|---|---|
| App Store / Play Store reviews β | Oct 2026 public bench of Store review Actors (300-review jobs, field-fill 71β85%, $0.09β$0.43 per 1K reviews); G2 reviewers cite review fetching as a real Apify use; every app team needs review monitoring | WINNER β official public RSS feed, zero proxy/browser cost |
| Google Maps business leads | 541β577K users, 35K monthly, $1.50β$4.00/1K places | Rejected: dominant incumbent (compass/crawler-google-places), criterion (c) fails |
| Google SERP / SEO data | 171K users, 15K monthly, ~$1.80/1K pages | Rejected: dominant official Actor, saturated |
| Job postings (Indeed etc.) | valig/indeed-jobs-scraper 36.7K users but $0.10/1K jobs | Rejected: price already at floor, margin impossible; Indeed anti-bot = breakage |
Shopify price/stock monitor (public /products.json) | Real merchant pain, public endpoints | Strong #2 β demand evidence thinner/less quantified; build next |
| E-commerce price monitoring (Amazon/Kroger) | Kroger Actors ~$3.30/1K products | Rejected for #1: ToS-hostile targets, residential-proxy costs eat PPE margin, high breakage |
| Public company registers (Georgia/Armenia-style) | Dev.to build log: 5 Actors live, top Store results β 0 paying users in week 1 | Rejected: no competition but demand UNPROVEN (weak evidence, marked honestly) |
| Google review monitors ("Review Radar" pattern) | Dev.to playbook sells $0.25/run + $0.01/review | Rejected for #1: depends on Google Maps scraping infra (browser + proxy cost, breakage) |
Winner justification: Apple's customer-reviews RSS feed is an official, login-free, public feed β no scraping arms race, no proxy bill, compute per run is a few plain HTTPS GETs, so PPE margin is structurally safe. Incumbents are beatable on fields/speed (bench: most-used Actor 71% fields filled, 183s vs 57s for a 300-review job) and none lead with analytics. The summary block (rating mix, low-rating share, top complaint words per version) is the differentiator: raw scrapers sell rows, this sells "is the new update hurting us?" in one scheduled run.
What it does
Input: an App Store app ID or apps.apple.com URL, a storefront country,
and a max review count (β€500 β Apple's feed cap). Output: one dataset item
per review + a SUMMARY object in the key-value store. Optional mode pushes
only 1β2β
reviews to the dataset (alert pipelines) while the summary is
still computed over everything fetched.
Input (/.actor/input_schema.json)
| Field | Type | Default | Notes |
|---|---|---|---|
appIdOrUrl | string (required) | 389801252 | Numeric id or full store URL |
country | string | us | Storefront, e.g. us, gb, de, jp |
maxReviews | int 1β500 | 100 | 50/page, max 10 pages |
onlyLowRatings | bool | false | Dataset gets only 1β2β reviews |
Output (per review)
reviewId, appId, country, author, rating, title, body, appVersion, updatedAt, helpfulVotes, totalVotes, isLowRating, negativeSignals, storeUrlSummary (SUMMARY key)
reviewCount, averageRating, ratingBreakdown{5..1}, lowRatingCount, lowRatingSharePct, topVersionsReviewed, topNegativeSignalsInLowReviews, newestReviewAt, oldestReviewAtProject layout
first-actor/βββ .actor/β βββ actor.json # name/title/description, dockerfile + schema pointersβ βββ input_schema.jsonβ βββ output_schema.json # dataset schemaβ βββ pay_per_event.json # PPE pricing (see below)βββ Dockerfile # apify/actor-python:3.12βββ requirements.txt # core is stdlib-only; SDK from base imageβββ src/β βββ core.py # ALL logic, pure stdlib β testable offlineβ βββ main.py # thin Apify entrypoint (charge β fetch β push)βββ local_run.py # offline/live test harness, no account neededβββ tests/sample_feed.json # real Apple feed page (captured 2026-10-29, trimmed)βββ output/ # reviews.json / reviews.csv / summary.json from test runs
Local test results (2026-10-29, actually run)
Offline (python3 local_run.py --sample tests/sample_feed.json):
6 reviews parsed, avg 1.67, breakdown {5:1, 1:5}, low-rating share 83.3%.
Live (python3 local_run.py --app-id 389801252 --country us --max-reviews 20):
20 reviews parsed from Apple's live feed, avg 2.55, breakdown
{5:7, 4:0, 3:0, 2:3, 1:10}, low-rating share 65.0%, newest review
2026-10-28. Full items in output/reviews.json; example item:
{"reviewId": "14721711404", "appId": "389801252", "country": "us","author": "Larmyclarmyparmy", "rating": 1,"title": "Pausing music when opening the app","body": "This is new with the last update. Instagram now pauses my music when I open the app...","appVersion": "453.0", "updatedAt": "2026-10-28T06:28:12-07:00","helpfulVotes": 0, "totalVotes": 0, "isLowRating": true,"negativeSignals": ["bug"]}
Proposed pricing (pay-per-event, .actor/pay_per_event.json)
| Event | Price | Reasoning |
|---|---|---|
actor-start | $0.10 / run | Covers fixed cost on every run β the documented PPE trap is per-result-only pricing losing money on small runs. Kept at half the $0.20β$0.25 start fee proven by monitor-style Actors because this Actor has no browser/proxy cost. |
review-scraped | $0.0005 / review ($0.50 / 1K) | Comparables: raw review Actors charge $0.09β$0.43/1K for rows only. $0.50/1K is a small premium for the summary analytics, version breakdown and complaint signals β still trivially cheap for the buyer (a maxed 500-review run costs $0.35 total). |
Economics: a 500-review run bills $0.35; compute is a few seconds of a small Python container (no browser, no proxy) β $0.005β0.02 platform cost. Creator keeps 80% of event revenue minus platform costs (Apify's standard split; Apify reports $760K paid to creators in Jan 2026 and ~$1.6M in a recent month across the Store). Every Apify user also gets $5/mo free credits, so expect free-tier trial runs before real revenue β normal.
Honest expectation: week-1 paying users may be zero (a comparable niche build log reported exactly that). Store ranking is driven by README quality, working defaults, example tasks and early reviews β budget the first month as distribution work, not passive income.
Deployment steps (when Brian's Apify account exists β Brian's step)
- Brian creates the Apify account and adds a payout method (PayPal/Wise) β account/payout are his alone; Muse never logs in.
- From this folder:
apify login(Brian) βapify pushβ or zip-upload via Console β Actors β Create Actor β upload. - In Console, confirm the PPE events from
.actor/pay_per_event.jsonappear under the Actor's pricing (file placement matters: it must live in.actor/, or charges silently don't record). - Run the built-in example task (app
389801252,us, 50 reviews) and verifychargedEventCountsin the run object shows 1Γ actor-start + 50Γ review-scraped before making the Actor public. - Publish to Store with example tasks + this README's Store description
(in
actor.json), then submit for Store review. - Any publish/pricing change after that still goes through Brian's approval, per standing rules.
Maintenance notes
- Breakage risk: LOW. The RSS-JSON format has been stable for years and is an official feed. Main risks: Apple retiring the feed (would hit every competitor equally) or an app having <50 reviews in a storefront (handled: pagination stops on an empty page; summary handles 0 reviews).
- No proxies/browsers to babysit. If a storefront returns non-JSON
(rare regional quirk), the run fails loudly rather than billing for junk β
actor-startis the only charge in that case; monitor failed-run rate after launch. - Known limits: 500 reviews/app/run max (feed cap); most-recent order
only (Apple offers
sortby=mosthelpfulβ a v1.1 toggle is a one-line change incore.py); Play Store reviews are a separate v2 (different, unofficial endpoints β deliberately out of scope for v1's legit-data rule). - Roadmap if it gets traction: v1.1 sort toggle + multi-app input; v1.2 scheduled-diff mode ("only reviews newer than last run" via KVS state β the monitor pattern that supports the $0.10 start fee best); then the Shopify price/stock monitor as Actor #2.