App Store Scraper (Apple)
Pricing
Pay per event
App Store Scraper (Apple)
Scrape Apple App Store app details, customer reviews and search results across any storefront. 29 fields per app, per-country ratings, no proxy needed.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Muhammad Ahmed
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Scrape app details, customer reviews and search results from the Apple App Store — across any storefront, in one run.
Why this one
Most App Store Actors do reviews only, for one country. This one covers the whole surface:
- App details — 29 fields including rating, rating count, price, version, release notes, genres, minimum iOS, file size, screenshots and supported languages.
- Customer reviews — rating, title, body, author, app version, helpful votes and timestamp.
- Search — turn a keyword into apps, then scrape those apps in the same run.
- Any storefront, and it genuinely matters. Ratings differ per country: WhatsApp is ⭐4.685 in the US and ⭐4.704 in the UK. Pass several country codes and each is scraped separately.
- Three ways to name an app — App Store URL, numeric ID, or bundle ID (
com.burbn.instagram).
It uses Apple's own public endpoints, so there is no browser, no login and no proxy required.
Input
| Field | Type | Description |
|---|---|---|
apps | array | App Store URLs, numeric IDs, or bundle IDs |
searchTerms | array | Each term returns up to searchLimit apps, which are then scraped |
countries | array | Two-letter storefront codes (default ["us"]) |
scrapeAppDetails | boolean | Include app metadata (default true) |
scrapeReviews | boolean | Include customer reviews (default true) |
maxReviewsPerApp | integer | Per app per storefront (default 100) |
reviewSort | string | mostRecent or mostHelpful |
searchLimit | integer | Apps returned per search term (default 10) |
maxItems | integer | Stop after N dataset items (0 = no limit) |
concurrency / requestDelayMs | integer | Throughput controls |
proxyConfiguration | object | Optional — not needed for Apple |
Example
{"apps": ["https://apps.apple.com/us/app/whatsapp-messenger/id310633997", "com.burbn.instagram"],"searchTerms": ["habit tracker"],"countries": ["us", "gb"],"maxReviewsPerApp": 100}
Output
Two item types in one dataset. App records (type: "app"):
{"type": "app","appId": 310633997,"bundleId": "net.whatsapp.WhatsApp","country": "US","title": "WhatsApp Messenger","sellerName": "WhatsApp Inc.","formattedPrice": "Free","version": "26.31.74","averageRating": 4.68524,"ratingCount": 18417400,"primaryGenre": "Social Networking","minimumOsVersion": "15.1","fileSizeBytes": 391026688,"contentRating": "12+","screenshots": ["https://..."],"languages": ["EN", "AR", "..."]}
Reviews (type: "review"):
{"type": "review","appId": 310633997,"country": "US","reviewId": "14431062325","title": "Simple","text": "Reliable","rating": 5,"version": "26.31.74","author": "Lynwasty","voteCount": 0,"updatedAt": "2026-08-15T07:42:28-07:00"}
Apps that cannot be found produce an item with error rather than vanishing from the results.
Notes and limits
- Apple caps reviews at roughly 500 per app per storefront (50 per page, ~10 pages). Asking for more returns what exists rather than failing. To get more, scrape additional storefronts — their reviews are different.
- Reviews are per-storefront. US reviews and UK reviews are separate sets, as are their ratings.
- A bundle ID must contain a dot (
com.burbn.instagram); a bare word is treated as invalid rather than guessed at. - You are charged per review actually returned, never per review requested.
Local development
npm installnpm run buildnode dist/main.js # reads storage/key_value_stores/default/INPUT.json