App Store Scraper (Pay-Per-Event)
Pricing
from $0.15 / 1,000 app / track scrapeds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
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 passes — sortby=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
- Click "Try for free" on this actor's page.
- 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/id880047117https://itunes.apple.com/us/movie/inception/id400763833https://podcasts.apple.com/us/podcast/game-dev-unchained/id1043547750
- Enable "Include reviews" if you want each app's reviews attached. Tune Max reviews per app to control review spend.
- Set "Max apps per run" to cap your overall cost.
- (Optional) Set a country, media type filter, or a custom map function.
- Click "Save & Start". Results stream into the dataset as they're scraped.
- Export as JSON, CSV, Excel, or HTML — or hit the Dataset API directly.
Input
| Parameter | Type | Required | Description |
|---|---|---|---|
startUrls | Array | No* | iTunes / App Store / podcasts / music / books detail URLs. |
term | string | No* | Search keyword (or numeric ID(s) when mode=lookup). |
country | string | No | Two-letter Apple country code. Default us. |
mediaType | string | No | One of all, software, movie, podcast, music, musicVideo, audiobook, shortFilm, tvShow, ebook. Default all. |
mode | string | No | search or lookup. Default search. |
includeReviews | boolean | No | Pull reviews for every scraped app. Default false. |
maxItems | integer | No | Hard cap on emitted detail items. 0 = unlimited. Default 100. |
maxReviewsPerApp | integer | No | Cap reviews per app. 0 = unlimited (effectively ~1000). Default 500. |
endPage | integer | No | Max search-result pages per source. 0 = unlimited. |
customMapFunction | string | No | JS function body that transforms each item before dataset push. |
proxyConfiguration | object | No | Apify Proxy. Default: Apify Proxy datacenter with AUTO rotation. |
* You must provide at least one of startUrls or term.
Input examples
| Use case | Input 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
| Field | Type | Description |
|---|---|---|
wrapperType | string | Apple wrapper (software, track, collection, etc.) |
kind | string | Apple subkind (software, feature-movie, podcast, etc.) |
trackId | integer | Apple numeric id |
trackName | string | Display title |
artistName | string | Developer / publisher / artist |
primaryGenreName | string | Top genre |
genres | string[] | All assigned genres |
averageUserRating | number | 1.0–5.0 |
userRatingCount | integer | Total rating count |
trackPrice | number | Price in local currency |
currency | string | 3-letter ISO code |
releaseDate | datetime | ISO 8601 |
version | string | App version (software only) |
screenshotUrls | string[] | iPhone screenshots |
ipadScreenshotUrls | string[] | iPad screenshots |
languageCodesISO2A | string[] | Supported languages |
reviews | object[] | Reviews (when includeReviews=true) |
scrapedAt | datetime | ISO 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.
| Event | Fired when | Free tier rate |
|---|---|---|
app-scraped | A detail item is written to the dataset | $0.0003 / item (i.e. $0.30 per 1000) |
review-scraped | A 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):
| Workload | Apps | Reviews | Cost |
|---|---|---|---|
| One app + 100 reviews | 1 | 100 | $0.0103 |
| 100 apps, no reviews | 100 | 0 | $0.030 |
| 500 apps, 200 reviews each | 500 | 100,000 | $10.15 |
| 10,000 apps, no reviews | 10,000 | 0 | $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=lookupand pass them interm(comma-separated) or as theid...portion of URLs instartUrls. 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
countryvalues. mediaType=allis broad. Set a specific media type (software,podcast, etc.) to narrow search hits and avoid surprises.- Use
endPageto cap search-result pagination for shallow scans. customMapFunctionruns 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.