Apple App Store App Scraper
Pricing
from $9.00 / 1,000 results
Apple App Store App Scraper
Extract iOS app metadata, user reviews, aggregate ratings, and pricing directly from the App Store. Perfect for ASO tracking and competitor analysis.
Apple App Store Intelligence API | Ratings, Reviews & Pricing
Next report-style Actors
If you already have data from this Actor, these follow-on Actors turn public or user-provided inputs into decision-ready reports. They are optional, capped by maxChargeUsd, and do not make business outcome claims.
- App Release Review Regression Report - turn public app metadata and reviews into release regression reports and QA backlog candidates.
- Mobile App Listing Gap Report - compare public app listings and identify metadata/action gaps.
Extract structured data from the Apple App Store using public iTunes lookup endpoints and native RSS review feeds. The actor returns app metadata, storefront pricing, aggregate ratings, and recent public review samples with explicit warnings when a storefront surface is unavailable. Marketers, ASO (App Store Optimization) teams, and product managers can use it for baseline checks, competitor listing comparisons, keyword-based rollups, pricing watchlists, and review-theme triage. The extracted dataset includes app version histories, release notes, developer URLs, file sizes, supported devices, and public review text in a normalized format for downstream analysis.
Store Quickstart
- Start with
store-input.example.jsonfor the smallest useful dataset run. - Check
sample-output.example.jsonfor a recent App Store sample captured from the repo's live output. - Check
live-proof.example.jsonfor the latest live canary + contract proof on the public actor surface. - Then move through
store-input.templates.jsonin this order:Quickstart Baseline (Single App)— smallest useful dataset runRecurring Baseline (Multi-App Review Watch)— same App Store row tuned for repeat monitoringWebhook Routed Monitor (App Store Alerts)— route the same payload after the dataset baseline and destination schema are stableStorefront Variant (Japan Example)— actor-specific lane when a country-specific check matters more than the default US baseline
What it does
For each App Store URL or numeric app ID you provide, the actor:
- Fetches app metadata via Apple's public iTunes Lookup API — name, developer, bundle ID, genres, icon, screenshots, age rating, supported devices, languages, version, release notes, and storefront pricing.
- Extracts the aggregate rating — overall average, total review count, and current-version rating/count.
- Extracts pricing — free/paid indicator, price, currency, and formatted price string.
- Samples individual reviews from Apple's public RSS customer review feed (up to 500 per storefront) — title, body, star rating, author, app version, date, and helpfulness votes.
- Builds keyword-based rollups — top themes (crashes, performance, UI, ads, privacy, etc.) and feature-request excerpts.
If any surface is unavailable, the actor returns explicit warnings instead of failing silently.
Data sources
| Surface | Source | Method |
|---|---|---|
| App metadata | iTunes Lookup API (itunes.apple.com/lookup) | JSON API |
| Rating | iTunes Lookup API | JSON API |
| Pricing | iTunes Lookup API | JSON API |
| Reviews | RSS feed (itunes.apple.com/{cc}/rss/customerreviews) | JSON RSS |
| Theme rollups | Review text | Keyword matching |
Use Cases
| Who | Why |
|---|---|
| ASO teams | Track rating drift, pricing, and storefront metadata by market |
| Product managers | Review public feedback after releases without App Store Connect access |
| Mobile analysts | Compare App Store positioning and review themes across competitors |
| Support teams | Pull review samples for issue triage and customer-voice summaries |
Input
| Field | Type | Default | Description |
|---|---|---|---|
appUrls | string[] | required | Apple App Store URLs or numeric app IDs |
country | string | "us" | Two-letter storefront code (e.g. us, gb, jp) |
reviewLimit | integer | 100 | Max reviews per app (1–500) |
timeoutMs | integer | 20000 | HTTP timeout per API call in ms |
delivery | string | "dataset" | "dataset" or "webhook" |
webhookUrl | string | — | Webhook URL when delivery=webhook |
dryRun | boolean | false | Skip dataset/webhook writes |
Accepted URL formats
- Full URL:
https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580 - Short URL:
https://apps.apple.com/app/id324684580 - Numeric ID:
324684580 - Prefixed ID:
id324684580
Input Examples
Example: Single app lookup
{"appIds": ["1234567890"],"country": "US"}
Example: Multi-region comparison
{"appIds": ["1234567890"],"country": "US,JP,GB"}
Example: Discovery by keyword
{"searchTerm": "productivity","country": "US","limit": 50}
Output
{"meta": {"generatedAt": "2025-01-01T00:00:00.000Z","implementationStatus": "live","totalSources": 1,"totals": { "apps": 1, "ok": 1, "partial": 0, "errors": 0, "warningCount": 0, "totalReviewsSampled": 50 },"notes": ["..."]},"apps": [{"appId": "324684580","slug": "spotify-music-and-podcasts","url": "https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580","status": "ok","app": {"name": "Spotify: Music and Podcasts","developer": "Spotify AB","bundleId": "com.spotify.client","primaryGenre": "Music","icon": "https://...","version": "8.9.80","ageRating": "12+","languageCodes": ["EN", "FR", "DE", "JA"],"..."},"rating": { "overall": 4.5, "totalReviews": 12345678, "currentVersionRating": 4.3, "currentVersionReviews": 5432 },"pricing": { "isFree": true, "price": 0, "currency": "USD", "formattedPrice": "Free" },"reviewSamples": [{ "reviewId": "...", "title": "...", "body": "...", "rating": 5, "author": "...", "date": "...", ... }],"rollups": { "themes": [{ "theme": "ease of use", "count": 5 }], "featureRequests": [...] },"warnings": [],"endpointStatuses": { "lookup": "ok", "reviews": "ok" },"error": null}]}
Known limitations
- Reviews are storefront-specific. Only reviews from the requested
countrystorefront are returned. To get global reviews, run the actor multiple times with different country codes. - Review cap: ~500 per storefront. Apple's RSS feed provides at most 10 pages of 50 reviews (most-recent first). This is a platform limitation.
- No per-star distribution. The iTunes Lookup API provides only the aggregate average — no per-star breakdown (1★, 2★, etc.).
- RSS feed availability. Apple's RSS review feed may occasionally be unavailable or return empty results for some apps/storefronts. The actor surfaces this as a warning.
- No private/auth data. This actor uses only public endpoints — no App Store Connect data, no developer-only metrics.
Local run
npm start # Uses input.jsonnpm test # Run unit tests
Docker
docker build -t apple-app-store-intelligence .docker run --rm apple-app-store-intelligence
Related Actors
Use this actor first for iOS-only monitoring or deeper App Store review sampling. Add the next actor when you need the adjacent signal:
- App Review Intelligence API | App Store + Google Play Summary — Promote to this once leadership wants one summary row across iOS and Android instead of separate store reports.
- Google Play Intelligence API — Add when the same launch or competitor set needs Android-side metadata, ratings, and public complaint sampling.
- Shopify Store Intelligence API — Add when the app belongs to a commerce brand and you want to connect App Store sentiment with storefront or catalog changes.
- Domain Security Audit API — Add when negative iOS reviews mention sign-in, payments, or site trust and you need to audit owned web properties.
Pricing & Cost Control
Apify Store pricing is usage-based, so total cost mainly follows how many apps and storefronts you analyze plus how many reviews you sample. Check the Store pricing card for the current per-event rates.
- Start with
Quickstart Baselineon 1–3 app IDs or URLs in dataset mode. - Keep
reviewLimitmodest forRecurring Baseline, and add extra storefront variants only for markets that actually matter. - Move to
Webhook Routed Monitoronce scheduled review monitoring already fits your workflow. - Use
dryRun: truebefore scheduled runs or webhook delivery.
⭐ Was this helpful?
If this actor saved you time, please leave a ★ rating on Apify Store. It takes 10 seconds, helps other developers discover it, and keeps updates free.
Bug report or feature request? Open an issue on the Issues tab of this actor.
Next Step: Listing Gap Report
If you need a buyer-ready listing improvement report instead of raw metadata or review rows, run mobile-app-listing-gap-report next. It compares one target app with competitor App Store / Google Play listings, checks buyer-provided seed keyword coverage in public metadata, and returns prioritized listing edits.
Recommended handoff:
{"targetApp": "APP_STORE_URL_OR_GOOGLE_PLAY_PACKAGE","competitorApps": ["COMPETITOR_APP_1", "COMPETITOR_APP_2", "COMPETITOR_APP_3"],"reportTier": "premium","maxChargeUsd": 29,"dryRun": false}
Related report Actors
Use these follow-on Actors when you want a capped, decision-ready report instead of more raw rows. They use public or user-provided inputs, respect maxChargeUsd, and do not promise rankings, revenue, conversion lifts, or sales outcomes.
- App Store & Google Play Listing Gap Report - compare public listing metadata against competitors before changing ASO copy.
- App Release Review Regression Report - turn public review signals into release regression and QA action reports.