๐ŸŽ App Store Reviews Scraper avatar

๐ŸŽ App Store Reviews Scraper

Pricing

from $5.00 / 1,000 app store review records

Go to Apify Store
๐ŸŽ App Store Reviews Scraper

๐ŸŽ 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

Skootle

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

4

Monthly active users

18 days ago

Last modified

Share

Apple App Store Reviews hero

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

  1. Open the Input tab on the actor page
  2. Add Apple track IDs (e.g., 284882215 for Facebook) to the appIds field. Find them in any App Store URL: apps.apple.com/us/app/<name>/id<TRACKID>.
  3. Add country codes to countryCodes (e.g., ["us", "gb", "jp"])
  4. Optionally choose sortBy: mostrecent (default) or mosthelpful
  5. Set reviewPagesPerApp (default 2; ~50 reviews per page; max 10 pages)
  6. Optionally filter by minRating and maxRating (e.g., minRating: 1, maxRating: 2 for negative-only triage)
  7. Optionally enable watchlistMode for daily diffs
  8. Set maxItems (default 50)
  9. 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.

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

FieldTypeDefaultDescription
appIdsstring[]["284882215"]Apple track IDs (numbers from App Store URLs)
countryCodesstring[]["us"]2-letter store country codes
sortByenummostrecentmostrecent or mosthelpful
reviewPagesPerAppint2~50 per page, max 10 pages
minRatingint1Filter (set 4 for positive only)
maxRatingint5Filter (set 2 for negative-only triage)
emitAppMetadataRecordbooltrueAlso emit app_store_app per app per country
watchlistModeboolfalseIdempotent diff against KV-stored seen review IDs
maxItemsint50Hard cap on records

App Store output format

The dataset has two record types. Filter by recordType.

app_store_review

FieldTypeDescription
outputSchemaVersion, recordType, recordIdstringDiscriminated identity (apple:review:<id>)
reviewId, urlstringApple review ID + canonical URL
appId, countryCodes, sortBy, page, rankint / string / enum / intSource context
ratingint 1-5Star rating
title, bodystringReview headline + body
reviewedVersionstringApp version the user reviewed
voteSum, voteCountint"Found this helpful" votes
authorName, authorReviewsUrlstringAuthor display name + their reviews page
createdAt, scrapedAtISO 8601Submitted + snapshot times
appobjectJoined app metadata snapshot (see app_store_app below)
fieldCompletenessScore, agentMarkdownint / stringQuality + LLM-ready summary

app_store_app

FieldTypeDescription
outputSchemaVersion, recordType, recordIdstringDiscriminated identity (apple:app:<id>:<country>)
appId, countryCodeint / stringStore identity
appobjecttrackId, trackName, bundleId, sellerName, primaryGenre, contentRating, averageUserRating, userRatingCount, averageUserRatingCurrentVersion, userRatingCountCurrentVersion, currentVersion, currentVersionReleaseDate, releaseDate, priceUsd, fileSizeBytes, trackViewUrl, artworkUrl
scrapedAtISO 8601Snapshot timestamp
fieldCompletenessScore, agentMarkdownint / stringQuality + 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> and apple:app:<id>:<country> keys
  • Schema doesn't break your pipeline, versioned and bumped on breaking change
  • AI agents can self-filter sparse rows via fieldCompletenessScore per record

Other Skootle actors you might want to check

Support and contact

File issues on this actor's page, replies within 48 hours. Feature requests welcome, tag with enhancement.