App Store Scraper (Pay-Per-Event) avatar

App Store Scraper (Pay-Per-Event)

Pricing

from $0.15 / 1,000 app / track scrapeds

Go to Apify Store
App Store Scraper (Pay-Per-Event)

App Store Scraper (Pay-Per-Event)

Scrape Apple App Store, iTunes, Music, and Podcasts data — app details, ratings, and reviews. Pay-per-event pricing: $0.30 per 1000 apps + $0.10 per 1000 reviews. No monthly fee.

Pricing

from $0.15 / 1,000 app / track scrapeds

Rating

0.0

(0)

Developer

Arnas

Arnas

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

App Store Scraper is a fast, HTTP-only crawler that extracts apps, movies, podcasts, music, and reviews from Apple's App Store and iTunes Store. This is the Pay-Per-Event edition — there is no $25/month rental and no minimum spend. You pay only for the apps and reviews you actually scrape.

Run it on the Apify platform for scheduling, API access, dataset exports (JSON, CSV, Excel, HTML), proxy rotation, monitoring, and integration with Make, Zapier, and 5000+ other tools.

What does App Store Scraper do?

Give it App Store URLs (e.g., https://apps.apple.com/us/app/angry-birds-2/id880047117), iTunes detail URLs, podcast or music URLs, or a search keyword — the actor hits Apple's public itunes.apple.com/search, /lookup, and /rss/customerreviews/.../json endpoints. No API key, no headless browser, no authentication.

It supports two operating modes:

  • Search — search the App Store / iTunes catalog by keyword + country + media type.
  • Lookup — fetch one or more specific items by numeric Apple ID.

The scraper extracts:

  • App / track metadata — title, vendor (artistName), genre, average rating, rating count, price, currency, release date, version, file size, supported devices, languages, screenshots, artwork at multiple resolutions.
  • Reviews (optional) — id, score (1–5), title, body, reviewer username, version, updated date.
  • Cross-media — works for apps (software), movies, TV shows, podcasts, music albums and songs, music videos, audiobooks, short films, and ebooks.

Smarter review pagination — pull ~1000 reviews per app, not ~500

Apple's reviews RSS feed caps each sort order (sortby) at roughly 10 pages × 50 reviews = ~500 reviews. This actor runs two passessortby=mostrecent AND sortby=mosthelpful — and de-duplicates by review id. The result: ~700–1000 unique reviews per popular app, depending on overlap. You're charged once per deduped review, never twice for the same review.

Why use App Store Scraper?

  • Competitive intelligence — Track competitor app updates, version bumps, rating drift, and review themes.
  • Market research — Aggregate app catalogs across categories and countries.
  • Sentiment analysis — Feed reviews into your LLM or analytics pipeline.
  • ASO (App Store Optimization) — Surface which keywords match which apps and how rankings shift.
  • Catalog enrichment — Augment your dataset with Apple-side metadata (icons, descriptions, ratings).

How to use App Store Scraper

  1. Click "Try for free" on this actor's page.
  2. Paste one or more Apple URLs in the Start URLs field, or enter a Search term. You can mix any of these in one run:
    • https://apps.apple.com/us/app/angry-birds-2/id880047117
    • https://itunes.apple.com/us/movie/inception/id400763833
    • https://podcasts.apple.com/us/podcast/game-dev-unchained/id1043547750
  3. Enable "Include reviews" if you want each app's reviews attached. Tune Max reviews per app to control review spend.
  4. Set "Max apps per run" to cap your overall cost.
  5. (Optional) Set a country, media type filter, or a custom map function.
  6. Click "Save & Start". Results stream into the dataset as they're scraped.
  7. Export as JSON, CSV, Excel, or HTML — or hit the Dataset API directly.

Input

ParameterTypeRequiredDescription
startUrlsArrayNo*iTunes / App Store / podcasts / music / books detail URLs.
termstringNo*Search keyword (or numeric ID(s) when mode=lookup).
countrystringNoTwo-letter Apple country code. Default us.
mediaTypestringNoOne of all, software, movie, podcast, music, musicVideo, audiobook, shortFilm, tvShow, ebook. Default all.
modestringNosearch or lookup. Default search.
includeReviewsbooleanNoPull reviews for every scraped app. Default false.
maxItemsintegerNoHard cap on emitted detail items. 0 = unlimited. Default 100.
maxReviewsPerAppintegerNoCap reviews per app. 0 = unlimited (effectively ~1000). Default 500.
endPageintegerNoMax search-result pages per source. 0 = unlimited.
customMapFunctionstringNoJS function body that transforms each item before dataset push.
proxyConfigurationobjectNoApify Proxy. Default: Apify Proxy datacenter with AUTO rotation.

* You must provide at least one of startUrls or term.

Input examples

Use caseInput JSON
Scrape one app with all reviews{ "startUrls": [{ "url": "https://apps.apple.com/us/app/angry-birds-2/id880047117" }], "includeReviews": true, "maxReviewsPerApp": 1000 }
Search "game dev" for podcasts in GB{ "term": "game dev", "mediaType": "podcast", "country": "gb", "maxItems": 50 }
Lookup multiple ids at once{ "mode": "lookup", "term": "880047117,400763833,1043547750" }
Stay on first 3 search pages only{ "term": "calculator", "mediaType": "software", "endPage": 3 }
Custom transform{ "term": "todo", "customMapFunction": "return { id: item.trackId, name: item.trackName };" }

Output

All results land in the run's default dataset, one row per app/track. If includeReviews=true, each row has a reviews array.

Sample output

{
"wrapperType": "software",
"kind": "software",
"trackId": 880047117,
"trackName": "Angry Birds 2",
"artistName": "Rovio Entertainment Oyj",
"primaryGenreName": "Games",
"averageUserRating": 4.5,
"userRatingCount": 1234567,
"trackPrice": 0,
"currency": "USD",
"trackViewUrl": "https://apps.apple.com/us/app/angry-birds-2/id880047117?uo=4",
"artworkUrl100": "https://is5-ssl.mzstatic.com/.../100x100bb.jpg",
"artworkUrl512": "https://is5-ssl.mzstatic.com/.../512x512bb.jpg",
"releaseDate": "2015-07-27T07:00:00Z",
"version": "3.18.1",
"description": "Welcome to the world of Angry Birds 2...",
"screenshotUrls": ["https://..."],
"languageCodesISO2A": ["EN", "FR", "DE", "ES"],
"reviews": [
{
"id": "9519350766",
"userName": "ultrageoffe",
"userUrl": "https://itunes.apple.com/us/reviews/id212958678",
"version": "2.3",
"score": 1,
"title": "Ad nightmare",
"text": "Ads every few seconds. Don't waste your time",
"url": "https://itunes.apple.com/us/review?id=1660464064",
"updated": "2026-04-12T19:34:21-07:00"
}
],
"scrapedAt": "2026-05-15T19:00:00.000Z"
}

You can download the dataset as JSON, JSONL, CSV, Excel, or HTML.

Data table

FieldTypeDescription
wrapperTypestringApple wrapper (software, track, collection, etc.)
kindstringApple subkind (software, feature-movie, podcast, etc.)
trackIdintegerApple numeric id
trackNamestringDisplay title
artistNamestringDeveloper / publisher / artist
primaryGenreNamestringTop genre
genresstring[]All assigned genres
averageUserRatingnumber1.0–5.0
userRatingCountintegerTotal rating count
trackPricenumberPrice in local currency
currencystring3-letter ISO code
releaseDatedatetimeISO 8601
versionstringApp version (software only)
screenshotUrlsstring[]iPhone screenshots
ipadScreenshotUrlsstring[]iPad screenshots
languageCodesISO2Astring[]Supported languages
reviewsobject[]Reviews (when includeReviews=true)
scrapedAtdatetimeISO 8601 when this row was emitted

Pricing / Cost estimation

This actor uses Pay-Per-Event pricing. There is no monthly rental. You pay only when records are emitted.

EventFired whenFree tier rate
app-scrapedA detail item is written to the dataset$0.0003 / item (i.e. $0.30 per 1000)
review-scrapedA review row is written into an app's reviews array$0.0001 / review ($0.10 per 1000)

Higher Apify subscription tiers receive lower per-event rates — see the Pricing tab on this actor's listing for the current rate table.

Cost examples (Free tier):

WorkloadAppsReviewsCost
One app + 100 reviews1100$0.0103
100 apps, no reviews1000$0.030
500 apps, 200 reviews each500100,000$10.15
10,000 apps, no reviews10,0000$3.00

How does this compare to $25/month App Store actors?

The most popular App Store actor on Apify Store charges $25/month + usage. This actor charges $0.30 per 1000 apps + $0.10 per 1000 reviews with no monthly fee. For workloads under ~80,000 items per month, PPE is strictly cheaper — and for one-off jobs (a few hundred items) the cost is pennies, instead of $25.

You also get:

  • Streaming output — results appear in your dataset within seconds, not after a long batch.
  • Up to ~1000 reviews per app via dual-sortby pagination (vs ~500 in subscription competitors).
  • No headless browser — pure HTTP, so runs are 10× faster and cheaper in compute.

Tips and advanced options

  • Lookup mode is fastest. If you have numeric IDs, set mode=lookup and pass them in term (comma-separated) or as the id... portion of URLs in startUrls. One HTTP request returns up to 100 items.
  • Country matters for reviews. Reviews are country-specific. To see UK reviews vs. US reviews, run the actor twice with different country values.
  • mediaType=all is broad. Set a specific media type (software, podcast, etc.) to narrow search hits and avoid surprises.
  • Use endPage to cap search-result pagination for shallow scans.
  • customMapFunction runs in the actor container. It receives the raw Apple item shape; return a transformed object. Errors fall back to the unmapped item.

Errors and partial failures

Bad input (malformed URL, non-existent ID, network error on one app) does not abort the run. Each error is captured to a sidecar key-value store entry named errors-YYYY-MM-DD.jsonl. Check the Key-value stores tab on your run for this file.

FAQ, disclaimers, and support

Is this legal? Scraping public App Store metadata is generally legal in most jurisdictions, but you are responsible for complying with Apple's Terms of Service, copyright on screenshots/icons/copy, and applicable data-protection laws (GDPR, CCPA). Don't scrape personal data, and don't use reviewer names in ways that violate the reviewer's rights.

Why are some reviews missing? Apple's reviews RSS feed has a hard cap around 10 pages per sort order. This actor runs two sort orders (mostrecent + mosthelpful) and de-duplicates to get past ~500 — but Apple ultimately decides what's available.

Why are some fields null? Apple returns different field sets for different wrapperType values. A podcast row won't have screenshotUrls; a song row won't have supportedDevices. This is normal.

How do I report bugs? Open an issue on this actor's Issues tab on the Apify Store.