Apple App Store App Scraper avatar

Apple App Store App Scraper

Pricing

from $9.00 / 1,000 results

Go to Apify Store
Apple App Store App Scraper

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.

Pricing

from $9.00 / 1,000 results

Rating

0.0

(0)

Developer

太郎 山田

太郎 山田

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

6 hours ago

Last modified

Share

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.

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.json for the smallest useful dataset run.
  • Check sample-output.example.json for a recent App Store sample captured from the repo's live output.
  • Check live-proof.example.json for the latest live canary + contract proof on the public actor surface.
  • Then move through store-input.templates.json in this order:
    • Quickstart Baseline (Single App) — smallest useful dataset run
    • Recurring Baseline (Multi-App Review Watch) — same App Store row tuned for repeat monitoring
    • Webhook Routed Monitor (App Store Alerts) — route the same payload after the dataset baseline and destination schema are stable
    • Storefront 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:

  1. 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.
  2. Extracts the aggregate rating — overall average, total review count, and current-version rating/count.
  3. Extracts pricing — free/paid indicator, price, currency, and formatted price string.
  4. 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.
  5. 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

SurfaceSourceMethod
App metadataiTunes Lookup API (itunes.apple.com/lookup)JSON API
RatingiTunes Lookup APIJSON API
PricingiTunes Lookup APIJSON API
ReviewsRSS feed (itunes.apple.com/{cc}/rss/customerreviews)JSON RSS
Theme rollupsReview textKeyword matching

Use Cases

WhoWhy
ASO teamsTrack rating drift, pricing, and storefront metadata by market
Product managersReview public feedback after releases without App Store Connect access
Mobile analystsCompare App Store positioning and review themes across competitors
Support teamsPull review samples for issue triage and customer-voice summaries

Input

FieldTypeDefaultDescription
appUrlsstring[]requiredApple App Store URLs or numeric app IDs
countrystring"us"Two-letter storefront code (e.g. us, gb, jp)
reviewLimitinteger100Max reviews per app (1–500)
timeoutMsinteger20000HTTP timeout per API call in ms
deliverystring"dataset""dataset" or "webhook"
webhookUrlstringWebhook URL when delivery=webhook
dryRunbooleanfalseSkip 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 country storefront 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.json
npm test # Run unit tests

Docker

docker build -t apple-app-store-intelligence .
docker run --rm apple-app-store-intelligence

Use this actor first for iOS-only monitoring or deeper App Store review sampling. Add the next actor when you need the adjacent signal:

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 Baseline on 1–3 app IDs or URLs in dataset mode.
  • Keep reviewLimit modest for Recurring Baseline, and add extra storefront variants only for markets that actually matter.
  • Move to Webhook Routed Monitor once scheduled review monitoring already fits your workflow.
  • Use dryRun: true before 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
}

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.