๐ App Store Reviews Scraper
Pricing
from $5.00 / 1,000 app store review records
๐ App Store Reviews Scraper
Scrape Apple App Store reviews + app metadata across countries and apps. Rating, title, body, version, helpful votes, author. Watchlist mode emits only new reviews. Joins each review with app metadata. Export, run via API, schedule, or integrate with other tools.
Pricing
from $5.00 / 1,000 app store review records
Rating
0.0
(0)
Developer
Skootle
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
4
Monthly active users
18 days ago
Last modified
Categories
Share

TL;DR
Monitor Apple App Store reviews + app metadata across countries and apps. Returns clean structured JSON: rating, title, body, version reviewed, helpful votes, author, ISO 8601 dates. Each review is joined with a fresh app metadata snapshot (current rating, version, price, primary genre, content rating, release dates). Watchlist mode emits only NEW reviews since the previous run, so a daily 1-2-star feed is a clean negative-review triage queue. Built on Apple's public iTunes RSS + Lookup APIs. Zero authentication, zero anti-bot.
Try it on a small dataset, then let us know what you think in a review.
What does Apple App Store Reviews Monitor do?
Apple App Store Reviews Monitor extracts reviews and app metadata from the Apple App Store. You give it a list of Apple track IDs (the number after /id in any App Store URL) and a list of country codes; it returns one record per review with: rating, title, body, reviewed version, helpful-vote sum/count, author name, ISO 8601 submitted timestamp, plus a joined snapshot of current app metadata (current rating, current version, release date, price, primary genre, content rating).
By default the actor also emits one app_store_app metadata record per app per country with the current snapshot (rating, version, price, etc.). Disable with emitAppMetadataRecord: false.
Watchlist mode (watchlistMode: true) makes this scraper schedulable. State persists across runs in the actor's key-value store, so a daily cron only emits reviews NEW since the last run.
Why scrape Apple App Store reviews?
App reviews are the fastest moat-signal for any mobile app team. One bad release can crater your rating and conversion overnight, and a competitor's rating dip is your wedge. Daily 1-star triage and weekly competitor sentiment-shift reports are the workflows that pay back the most for mobile-marketing and ASO teams.
Track competitor reviews across 5 country App Stores in one query, catch a version regression the day it ships, harvest 5-star praise for marketing copy, and feed clean labeled review text into sentiment classifiers. Replaces the manual ritual of opening App Store country pages tab by tab.
Who needs this?
- iOS app developers monitoring their own apps for new 1-star reviews and version-regression signals
- ASO consultants benchmarking competitor reviews + ratings + version-release cadence
- App studios with portfolios tracking sentiment across many apps from a single watchlist
- Localization QA teams comparing rating distributions across countries (
countryCodes: ["us", "jp", "de", "br", "in"]) - Mobile-marketing teams measuring sentiment-velocity post-release
- AI / LLM teams training customer-feedback classifiers on labeled review data
- Competitive intelligence monitoring the top 10 competitor apps in your category
- AI agents routing new negative reviews to support channels with auto-classification
How to use Apple App Store Reviews Monitor
- Open the Input tab on the actor page
- Add Apple track IDs (e.g.,
284882215for Facebook) to theappIdsfield. Find them in any App Store URL:apps.apple.com/us/app/<name>/id<TRACKID>. - Add country codes to
countryCodes(e.g.,["us", "gb", "jp"]) - Optionally choose
sortBy:mostrecent(default) ormosthelpful - Set
reviewPagesPerApp(default 2; ~50 reviews per page; max 10 pages) - Optionally filter by
minRatingandmaxRating(e.g.,minRating: 1, maxRating: 2for negative-only triage) - Optionally enable
watchlistModefor daily diffs - Set
maxItems(default 50) - Click Start
How much will scraping App Store reviews cost?
This actor is priced per event:
- Actor Start: $0.01 once per run
- App Store record (review or app metadata): tiered, charged per record written
| Apify plan | $/1000 records |
|---|---|
| FREE | $20.00 |
| BRONZE | $17.00 |
| SILVER | $15.00 |
| GOLD | $12.00 |
| PLATINUM | $12.00 |
| DIAMOND | $10.00 |
A typical daily watchlist on 5 apps with 2 review pages per app per country returns ~50 reviews on day 1, then 0-20 per day in watchlist mode. Roughly $0.30-$0.70 per daily run on GOLD.
Is it legal to scrape App Store reviews?
Yes. The iTunes RSS feed at itunes.apple.com/<country>/rss/customerreviews/... and the Lookup API at itunes.apple.com/lookup are explicitly published as free public APIs by Apple, with no authentication required and no rate-limit block on commercial use.
Reviews are public, anyone visiting the App Store can read them. The data scraped (rating, title, body, author display name, version reviewed, helpful votes) is published by Apple as part of the App Store user experience. Use freely for research, AI training, ASO analytics, and competitive monitoring.
Examples
Example 1: Daily negative-review triage on your app
{"appIds": ["284882215"],"countryCodes": ["us"],"sortBy": "mostrecent","reviewPagesPerApp": 2,"minRating": 1,"maxRating": 2,"watchlistMode": true,"maxItems": 100}
Example 2: 5-star praise harvest for marketing
{"appIds": ["284882215"],"countryCodes": ["us"],"sortBy": "mosthelpful","reviewPagesPerApp": 5,"minRating": 5,"maxRating": 5,"maxItems": 250}
Example 3: Multi-country localization audit
{"appIds": ["284882215"],"countryCodes": ["us", "gb", "jp", "de", "br", "in", "fr", "es"],"reviewPagesPerApp": 2,"watchlistMode": true,"maxItems": 800}
Compare rating distributions per country to spot localization issues.
Example 4: Competitor watchlist (top 5 in category)
{"appIds": ["284882215", "389801252", "835599320", "544007664", "324684580"],"countryCodes": ["us"],"watchlistMode": true,"reviewPagesPerApp": 2,"maxItems": 500}
Example 5: Version-regression detector
{"appIds": ["284882215"],"countryCodes": ["us"],"sortBy": "mostrecent","reviewPagesPerApp": 5,"watchlistMode": true,"maxItems": 250}
After a release, filter the output downstream for reviewedVersion: <new> and chart rating distribution to detect regressions.
Example 6: AI training corpus for sentiment classification
{"appIds": ["284882215", "389801252", "835599320", "544007664", "324684580", "447188370", "414478124"],"countryCodes": ["us"],"reviewPagesPerApp": 10,"maxItems": 5000}
Example 7: ASO-keyword-mining base feed
{"appIds": ["284882215"],"countryCodes": ["us"],"sortBy": "mosthelpful","reviewPagesPerApp": 10,"maxItems": 500}
Pipe through a keyword-frequency analyzer to find what users actually call your app's features (often different from your marketing copy).
Example 8: App-metadata-only snapshot
{"appIds": ["284882215"],"countryCodes": ["us"],"reviewPagesPerApp": 0,"emitAppMetadataRecord": true,"maxItems": 1}
Returns one app_store_app record with the current rating, version, price, etc. Zero reviews fetched.
Input parameters
| Field | Type | Default | Description |
|---|---|---|---|
appIds | string[] | ["284882215"] | Apple track IDs (numbers from App Store URLs) |
countryCodes | string[] | ["us"] | 2-letter store country codes |
sortBy | enum | mostrecent | mostrecent or mosthelpful |
reviewPagesPerApp | int | 2 | ~50 per page, max 10 pages |
minRating | int | 1 | Filter (set 4 for positive only) |
maxRating | int | 5 | Filter (set 2 for negative-only triage) |
emitAppMetadataRecord | bool | true | Also emit app_store_app per app per country |
watchlistMode | bool | false | Idempotent diff against KV-stored seen review IDs |
maxItems | int | 50 | Hard cap on records |
App Store output format
The dataset has two record types. Filter by recordType.
app_store_review
| Field | Type | Description |
|---|---|---|
outputSchemaVersion, recordType, recordId | string | Discriminated identity (apple:review:<id>) |
reviewId, url | string | Apple review ID + canonical URL |
appId, countryCodes, sortBy, page, rank | int / string / enum / int | Source context |
rating | int 1-5 | Star rating |
title, body | string | Review headline + body |
reviewedVersion | string | App version the user reviewed |
voteSum, voteCount | int | "Found this helpful" votes |
authorName, authorReviewsUrl | string | Author display name + their reviews page |
createdAt, scrapedAt | ISO 8601 | Submitted + snapshot times |
app | object | Joined app metadata snapshot (see app_store_app below) |
fieldCompletenessScore, agentMarkdown | int / string | Quality + LLM-ready summary |
app_store_app
| Field | Type | Description |
|---|---|---|
outputSchemaVersion, recordType, recordId | string | Discriminated identity (apple:app:<id>:<country>) |
appId, countryCode | int / string | Store identity |
app | object | trackId, trackName, bundleId, sellerName, primaryGenre, contentRating, averageUserRating, userRatingCount, averageUserRatingCurrentVersion, userRatingCountCurrentVersion, currentVersion, currentVersionReleaseDate, releaseDate, priceUsd, fileSizeBytes, trackViewUrl, artworkUrl |
scrapedAt | ISO 8601 | Snapshot timestamp |
fieldCompletenessScore, agentMarkdown | int / string | Quality + LLM-ready summary |
Apple App Store Reviews scraper output example (review)
{"outputSchemaVersion": "2026-05-09","recordType": "app_store_review","recordId": "apple:review:1919375575","reviewId": "1919375575","appId": 284882215,"countryCode": "us","rating": 1,"title": "Issue unresolved","body": "App keeps crashing on launch since v560.1.","reviewedVersion": "560.1","authorName": "JaneFromBrooklyn","voteSum": 12,"voteCount": 14,"createdAt": "2026-05-07T18:18:45-07:00","app": {"trackName": "Facebook","averageUserRating": 4.52,"userRatingCount": 26185776,"currentVersion": "560.1"},"fieldCompletenessScore": 100,"agentMarkdown": "**โญ Facebook ยท \"Issue unresolved\"**\n> App keeps crashing on launch since v560.1.\n- by JaneFromBrooklyn ยท v560.1 ยท ๐ 2026-05-07 ยท ๐ US\n- ๐ 12/14 found helpful\n- ๐ https://itunes.apple.com/us/reviews/id1919375575"}
During the Actor run
The actor pulls reviews and current app metadata from Apple's public iTunes endpoints with respectful pacing (no API key required, no proxy needed). Alongside the dataset, three artifacts land in the actor's key-value store: OUTPUT (run summary), AGENT_BRIEFING (rating mix plus the top 10 negative reviews to triage), and WATCHLIST_STATE (seen review IDs, when watchlistMode: true).
FAQ
Where do I find an Apple track ID?
The number after /id in any App Store URL: apps.apple.com/us/app/facebook/id284882215 โ 284882215.
Can I scrape reviews from multiple countries?
Yes. Pass an array to countryCodes. The actor queries each country separately and emits records tagged with the country.
Can I monitor only new reviews?
Yes. Set watchlistMode: true. The first run captures everything; subsequent runs only emit reviews new since the previous run.
Can I filter by rating?
Yes. minRating and maxRating. Common patterns: 1, 2 for negative-only triage; 4, 5 for positive-only marketing harvest.
Does this work for Google Play?
No, this actor is iOS App Store only. Google Play uses a different platform and a different API.
Can I get the developer's response to reviews?
Apple's iTunes RSS feed does not include developer responses. This is a platform limitation, not an actor feature gap.
How fresh is the data?
Apple updates the RSS feed within ~minutes of new reviews. Watchlist mode + a 30-minute schedule gives you near-real-time alerting.
Can I use this with the Apify API?
Yes. POST to https://api.apify.com/v2/acts/skootle~app-store-reviews/runs.
Can I integrate with Make / Zapier / n8n / Slack?
Yes. Click Integrations on the actor page.
Why does this actor cost more than a free reviews scraper?
This actor ships joined app metadata per review, watchlist diff mode, versioned schema, idempotent IDs, multi-country support in one run, agent-ready markdown summaries, and a daily-digest briefing. If you're feeding it into a triage queue or AI pipeline, the per-record cost pays back in saved engineering time.
Your feedback
Hit a bug or want a feature? Open an issue on the Issues tab rather than the reviews page, and we'll fix it fast (typically within 48 hours).
Why choose Apple App Store Reviews Monitor
- Monitor mode emits only what's new since last run, so a daily cron is a clean negative-review triage queue instead of yesterday's noise
- Multi-country in one run, query US + GB + JP + DE + BR + IN simultaneously instead of opening the App Store country-by-country
- Every review carries the current app snapshot, rating, version, price, so downstream analytics and AI sentiment pipelines have both data points in one record
- Reliability free actors can't deliver, free scrapers break monthly when Apple shifts a tag. We auto-test daily and ship a fix within 24-48 hours
- No proxy, no auth, no anti-bot, built on Apple's official public iTunes APIs, so runs are cheap and predictable
- Agent-ready markdown per record drops straight into an LLM context window
- Re-runs are safe to dedupe by ID, stable
apple:review:<id>andapple:app:<id>:<country>keys - Schema doesn't break your pipeline, versioned and bumped on breaking change
- AI agents can self-filter sparse rows via
fieldCompletenessScoreper record
Other Skootle actors you might want to check
- Shopify App Store Scraper, Shopify app listings + pricing tiers
- Reddit Subreddit Scraper, sentiment + brand monitoring
- Hacker News Watchlist, tech discourse stream
- GitHub Trending Repos, daily trending dev repos
- SEC EDGAR Filings Monitor, public-company filings stream
Support and contact
File issues on this actor's page, replies within 48 hours. Feature requests welcome, tag with enhancement.