Apple App Store Reviews Scraper & Monitor

Export Apple App Store reviews across 50 markets. Filter by rating, date, version, and keyword; monitor new reviews and enrich results with app metadata.

Data fields

FieldTypeDescription
recordIdstringStable app-country-review identifier for deduplication.
outputSchemaVersionstringVersion of this output record contract.
appIdstringValue exported as appId.
appUrlstringValue exported as appUrl.
countrystringValue exported as country.
appNamestring | nullValue exported as appName.
developerNamestring | nullValue exported as developerName.
reviewIdstringValue exported as reviewId.

Input preview

appUrlsOrIdsApp URLs or IDs *
countryCountry
countriesCountries
allMajorMarketsInclude 50 major App Store markets
sortBySort reviews by
maxReviewsPerAppMaximum reviews per app

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

Ready-to-run examples

Open a saved Apify example, adjust the input, and run the actor in your own Apify account.

View all examples

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Export and monitor public Apple App Store reviews across 50 major markets, with rating, date, version, and keyword filters plus helpful votes and enriched app metadata.

Apple App Store Reviews Scraper saves one public review per dataset row. Use it for ASO, product feedback mining, release monitoring, support triage, competitor review analysis, and mobile app intelligence.

At a glance

  • Input: Apple App Store URLs or numeric app IDs in appUrlsOrIds.
  • Output: review text, rating, version, date, helpful votes, stable record ID, app metadata, and source feed URL.
  • Controls: one or many countries, 50 major markets, rating/date/version/keyword filters, concurrency, review caps, and incremental monitoring.
  • Exports: download JSON, CSV, Excel, XML, RSS, or HTML, or read results through API/MCP.
  • Best for: ASO analysis, post-release monitoring, competitor review mining, and support issue triage.

What can it do?

  • Export public app reviews: Save one row per public Apple App Store review for one or more apps.
  • Filter by country and sort: Use localized review feeds and choose recent or helpful review ordering.
  • Compare markets in one run: Collect several storefronts or a curated set of 50 major App Store markets.
  • Filter before export: Keep selected ratings, dates, versions, or review keywords.
  • Track ratings and versions: Capture star ratings, review text, dates, version labels, and public author display names.
  • Monitor new reviews: Compare with a previous dataset, save only new stable review IDs, and read CHANGE_SUMMARY plus per-market diagnostics.
  • Add app metadata: Include app identity, genre, ratings, current version, release notes, icon, price, and currency when available.
  • Use as an App Store reviews API workflow: Run from API, schedules, webhooks, or MCP-compatible agents and export CSV/Excel/JSON.

Input example

{
  "appUrlsOrIds": ["https://apps.apple.com/us/app/whatsapp-messenger/id310633997"],
  "countries": ["us", "gb"],
  "sortBy": "mostrecent",
  "maxReviewsPerApp": 20,
  "minRating": 1,
  "maxRating": 3,
  "keywords": ["crash", "subscription"],
  "includeAppMetadata": true
}

Output example

{
  "appId": "310633997",
  "appUrl": "https://apps.apple.com/us/app/whatsapp-messenger/id310633997",
  "country": "us",
  "appName": "WhatsApp Messenger",
  "developerName": "WhatsApp Inc.",
  "recordId": "apple-review:310633997:us:14177411298",
  "outputSchemaVersion": "1.0",
  "reviewId": "14177411298",
  "reviewUrl": "https://itunes.apple.com/us/review?id=310633997&type=Purple%20Software",
  "authorName": "Example reviewer",
  "authorUri": "https://itunes.apple.com/us/reviews/id123456789",
  "rating": 4,
  "voteSum": 0,
  "voteCount": 0,
  "version": "25.12.0",
  "title": "Example review title",
  "content": "Example public review text...",
  "updatedAt": "2026-06-13T04:03:53-07:00",
  "sortBy": "mostrecent",
  "status": "ok",
  "bundleId": "net.whatsapp.WhatsApp",
  "genre": "Social Networking",
  "averageUserRating": 4.7,
  "userRatingCount": 18000000,
  "currentVersion": "25.12.0",
  "sourceFeedUrl": "https://itunes.apple.com/us/rss/customerreviews/page=1/id=310633997/sortby=mostrecent/json",
  "scrapedAt": "2026-07-03T00:00:00.000Z"
}

Who is it for?

  • ASO and growth teams tracking review language, ratings, and country-level product feedback.
  • Product managers and support teams monitoring new issues after releases or app-store experiments.
  • Competitive-intelligence analysts comparing public review themes across multiple mobile apps.
  • Data and AI teams feeding public review text into tagging, summarization, sentiment, or alerting workflows.

Common workflows

  • Release monitoring: schedule mostrecent reviews after each app update and compare version, rating, and content.
  • ASO review mining: export review text by country to identify feature language, complaints, and competitor positioning.
  • Support triage: collect low-star review text and route common issues to support or engineering.
  • Competitor analysis: run several app IDs with the same country and cap, then compare themes and ratings.
  • Downstream AI analysis: send title, content, rating, version, and updatedAt into tagging or summarization workflows.

Incremental review monitoring

Run once to create a baseline dataset. On the next run, select that dataset in compareDatasetId; optionally enable onlyNewReviews. The Actor writes:

  • RUN_SUMMARY with pages fetched, reviews scanned and saved, filter counts, duplicates, existing-review skips, failures, retries, and SUCCEEDED or PARTIAL status.
  • CHANGE_SUMMARY with baseline/current/new/removed/unchanged counts and stable IDs.

For recurring monitoring, schedule a small mostrecent run. Update the task's baseline periodically when you want comparison against the latest accepted snapshot.

Tips for best results

  • Use numeric IDs when possible: App Store URLs work, but IDs are easiest to reuse in scheduled tasks.
  • Start with a few countries: review availability and language vary by storefront; use maxAppCountryPairs to control global sweeps.
  • Keep first runs small: start with 20-50 reviews per app before increasing to 500.
  • Use sort intentionally: mostrecent is best for monitoring; mosthelpful is useful for evergreen review samples.
  • Expect optional fields: author URI, review URL, version, and app metadata can be missing for some rows.

Limits and caveats

  • Public reviews only: the actor does not log in and does not collect private Apple account data.
  • Feed limits: Apple review feeds may expose fewer rows than your requested cap, often up to about 500 per country/sort combination.
  • Metadata is optional: review rows can still be saved if app metadata lookup is unavailable.
  • No ratings aggregate history: the actor exports review rows, not complete historical rating curves.
  • No developer replies: Apple's public RSS review feed does not expose developer responses.

API usage

Node.js

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/apple-app-store-reviews-scraper').call({
  appUrlsOrIds: ['https://apps.apple.com/us/app/whatsapp-messenger/id310633997'],
  country: 'us',
  sortBy: 'mostrecent',
  maxReviewsPerApp: 20,
  includeAppMetadata: true
});
console.log(run.defaultDatasetId);

Python

from apify_client import ApifyClient
import os

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/apple-app-store-reviews-scraper').call(run_input={
    'appUrlsOrIds': ['https://apps.apple.com/us/app/whatsapp-messenger/id310633997'],
    'country': 'us',
    'sortBy': 'mostrecent',
    'maxReviewsPerApp': 20,
    'includeAppMetadata': True,
})
print(run['defaultDatasetId'])

cURL

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~apple-app-store-reviews-scraper/runs?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"appUrlsOrIds":["https://apps.apple.com/us/app/whatsapp-messenger/id310633997"],"country":"us","sortBy":"mostrecent","maxReviewsPerApp":20,"includeAppMetadata":true}'

MCP and AI agents

Focused Apify MCP server URL:

https://mcp.apify.com?tools=fetch_cat/apple-app-store-reviews-scraper

Add the focused server to Claude Desktop/Claude Code:

claude mcp add apple-app-store-reviews "https://mcp.apify.com?tools=fetch_cat/apple-app-store-reviews-scraper"

Or configure an MCP client with JSON:

{
  "mcpServers": {
    "apple-app-store-reviews": {
      "url": "https://mcp.apify.com?tools=fetch_cat/apple-app-store-reviews-scraper"
    }
  }
}

Example prompts showing MCP usage:

  • "Collect the 20 newest US App Store reviews for this app, then group complaints by app version and rating."
  • "Compare recent low-star reviews for these two app IDs and summarize recurring subscription complaints."
  • "Run a small multi-country review monitor and return the dataset link plus the CHANGE_SUMMARY."

Support

If a run fails or a field looks wrong, report it from the Actor page. Include the Apify run ID or run URL, input JSON, expected output, actual output, and one public App Store URL that reproduces the problem.

Common questions

Questions and answers reused from the canonical actor README.

Does it require an Apple account?

No. It collects public App Store review data.

Can I export reviews to CSV or Excel?

Yes. Apify datasets export to CSV, Excel, JSON, JSONL, XML, RSS, and HTML.

Can I scrape multiple apps in one run?

Yes. Add multiple app URLs or IDs to appUrlsOrIds. The review cap applies per app.

Can I scrape reviews from several countries?

Yes. Pass countries, or enable allMajorMarkets for the curated 50-storefront set. Every row includes country, and the app-country pair limit prevents accidental oversized runs.

Why did I get fewer reviews than requested?

The selected app, country, or sort order may expose fewer public reviews than your requested maxReviewsPerApp value.