iOS App Store Scraper
Pricing
from $0.79 / 1,000 apps
iOS App Store Scraper
Scrape Apple App Store app data and localized prices across 41 storefronts. Search, charts, or by ID. 50+ fields per app.
Pricing
from $0.79 / 1,000 apps
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share

Extract apps from apps.apple.com at scale, in a clean, consistent structure ready for price monitoring, market research, catalogue analysis and resale tooling. No API key required.
Why this scraper?
๐ฏ Built for apps.apple.com
A dedicated global scraper tuned for apps.apple.com โ its categories, price formats and currency (USD), not a generic tool pointed at it.
๐ถ Structured pricing
Current price as a clean number in USD, plus discounts and previous prices where the source shows them. Items without a published price return null, never a guess.
๐ค Seller and condition
Seller details and item condition in structured fields, ready for filtering.
๐ Full item content
Complete description and title for every record, with a direct link back to the source.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQuery | string | (empty) | Keyword(s) to search the App Store for (e.g. "meditation", "photo editor"). Leave empty if you use charts, App IDs, or Start URLs instead. |
chart | string | "none" | Discover apps from an App Store top chart instead of (or in addition to) a search. |
appIds | array | (empty) | Specific numeric App Store track IDs to fetch directly (e.g. 310633997). Found in any apps.apple.com URL after "id". |
startUrls | array | (empty) | Optional apps.apple.com URLs to scrape directly. The app ID is extracted from each URL. |
country | string | "us" | Single storefront to price against. Each country returns prices in its own local currency. Ignored if you set multiple Countries below or enable All major storefronts. |
countries | array | (empty) | Price each app across several storefronts in one run (multi-currency). Each adds a row per app with that country's local price. |
allCountries | boolean | false | Price every app across all 41 major storefronts in one run. Overrides the country selection above. |
maxResults | integer | 50 | Maximum number of apps to return per storefront. |
priceFilter | string | "all" | Restrict to free or paid apps. |
minPrice | integer | (empty) | Only return apps priced at or above this amount (in the storefront's local currency, major units). |
maxPrice | integer | (empty) | Only return apps priced at or below this amount (in the storefront's local currency, major units). |
minRating | number | (empty) | Only return apps with an average user rating at or above this value (0โ5). Apps with no rating are kept. |
minRatingCount | integer | (empty) | Only return apps with at least this many ratings. Apps with no rating count are kept. |
genres | array | (empty) | Only return apps matching one of these genres (case-insensitive substring, e.g. "Games", "Productivity", "Photo & Video"). |
releasedAfter | string | (empty) | Only return apps first released on or after this date (ISO, e.g. 2024-01-01). |
releasedBefore | string | (empty) | Only return apps first released on or before this date (ISO, e.g. 2025-12-31). |
gameCenterOnly | boolean | false | Only return apps with Game Center enabled. |
includeDescription | boolean | true | Include the full app description and release notes in each record. |
includeScreenshots | boolean | true | Include screenshot URLs (iPhone, iPad) in each record. |
fetchInAppPurchases | boolean | false | Fetch the in-app purchase price list (top IAPs with localized prices) from each app's store page. Adds one extra request per app per storefront, so runs are slower. Prices are localized to each storefront. |
fetchDetails | boolean | false | Premium enrichment per app: privacy nutrition label (data used to track / linked to you), rating histogram (1-5 star breakdown), live chart position, structured content advisories, app preview video, and high-quality screenshots. Adds one extra request per app per storefront and is billed at the detailed-record rate. |
fetchDeveloperApps | boolean | false | For each app, also list other apps by the same developer. Adds one extra request per app per storefront and is billed at the detailed-record rate. |
developerAppsLimit | integer | 50 | Maximum number of other apps to return per developer. |
requestDelayMs | integer | 1200 | Minimum pause between requests to the Apple API. Apple throttles aggressively; do not set this too low. |
maxRequestsPerMinute | integer | 30 | Hard cap on requests over a rolling 60-second window. |
Output schema
Every field below is present on every record. Fields the source does not publish for a given item are returned as null rather than omitted.
| Field | Type | Description |
|---|---|---|
trackId | number | Track id. |
bundleId | string | Bundle id. |
name | string | Item name as published. |
censoredName | string | Censored name. |
url | string | Direct link to the item. |
kind | string | Kind. |
country | string | Country. |
price | number | Current price (null when no price is published). |
formattedPrice | string | Formatted price. |
currency | string | Currency code of the price. |
isFree | boolean | Is free. |
sellerName | string | Seller name. |
artistName | string | Artist name. |
artistId | number | Artist id. |
sellerUrl | string | Seller url. |
developerUrl | string | Developer url. |
primaryGenre | string | Primary genre. |
primaryGenreId | number | Primary genre id. |
genres | array | Genre substring match |
genreIds | array | Genre ids. |
averageUserRating | number | Average user rating. |
userRatingCount | number | User rating count. |
averageUserRatingCurrentVersion | number | Average user rating current version. |
userRatingCountCurrentVersion | number | User rating count current version. |
contentRating | string | Content rating. |
advisories | array | Advisories. |
version | string | Version. |
releaseDate | string | Release date. |
currentVersionReleaseDate | string | Current version release date. |
releaseNotes | string | Release notes. |
minimumOsVersion | string | Minimum os version. |
fileSizeBytes | number | File size bytes. |
fileSizeMB | number | File size mb. |
supportedDevices | array | Supported devices. |
features | array | Features. |
isGameCenterEnabled | boolean | Is game center enabled. |
languageCodes | array | Language codes. |
description | string | Full item description in plain text. |
descriptionMarkdown | string | Description markdown. |
artworkUrl512 | string | Artwork url512. |
artworkUrl100 | string | Artwork url100. |
artworkUrl60 | string | Artwork url60. |
screenshots | array | Screenshots. |
ipadScreenshots | array | Ipad screenshots. |
scrapedAt | string | Timestamp when this record was scraped. |
Example record
{"trackId": 310633997,"bundleId": "net.whatsapp.WhatsApp","name": "WhatsApp Messenger","censoredName": "WhatsApp Messenger","url": "https://apps.apple.com/us/app/whatsapp-messenger/id310633997?uo=4","kind": "software","country": "US","price": 0,"formattedPrice": "Free","currency": "USD","isFree": true,"sellerName": "WhatsApp Inc.","artistName": "WhatsApp Inc.","artistId": 310634000,"sellerUrl": "http://www.whatsapp.com/","developerUrl": "https://apps.apple.com/us/developer/whatsapp-inc/id310634000?uo=4","primaryGenre": "Social Networking","primaryGenreId": 6005,"genres": ["Social Networking","Utilities"],"genreIds": ["6005","6002"],"averageUserRating": 4.68656,"userRatingCount": 18179078,"averageUserRatingCurrentVersion": 4.68656,"userRatingCountCurrentVersion": 18179078,"contentRating": "12+","advisories": ["Infrequent/Mild Mature/Suggestive Themes","Infrequent/Mild Horror/Fear Themes","Infrequent/Mild Medical/Treatment Information","Infrequent/Mild Profanity or Crude Humor"],"version": "26.25.77","releaseDate": "2009-05-04T02:43:49Z","currentVersionReleaseDate": "2026-07-02T15:01:50Z","releaseNotes": "We update the app regularly to fix bugs, optimize performance and improve the experience. Thanks for using WhatsApp!","minimumOsVersion": "15.1","fileSizeBytes": 377632768,"fileSizeMB": 360.1,"supportedDevices": ["MacDesktop-MacDesktop","iPhone5s-iPhone5s","iPadAir-iPadAir","iPadAirCellular-iPadAirCellular"],"features": ["iosUniversal"],"isGameCenterEnabled": false,"languageCodes": ["AR","BN","CA","HR"],"description": "WhatsApp from Meta is a free messaging and calling app used by over 2 billion people across 180+ countries. It's super simple, reliable and private, making it perfect for staying in touch with your fr โฆ","descriptionMarkdown": "WhatsApp from Meta is a free messaging and calling app used by over 2 billion people across 180+ countries. It's super simple, reliable and private, making it perfect for staying in touch with your fr โฆ","artworkUrl512": "https://is1-ssl.mzstatic.com/image/thumb/Purple211/v4/6b/a7/5f/6ba75fe7-ab00-ecd9-3ea8-726ec96423bc/AppIcon-0-0-1x_U007epad-0-0-0-1-0-0-sRGB-0-85-220.png/512x512bb.jpg","artworkUrl100": "https://is1-ssl.mzstatic.com/image/thumb/Purple211/v4/6b/a7/5f/6ba75fe7-ab00-ecd9-3ea8-726ec96423bc/AppIcon-0-0-1x_U007epad-0-0-0-1-0-0-sRGB-0-85-220.png/100x100bb.jpg","artworkUrl60": "https://is1-ssl.mzstatic.com/image/thumb/Purple211/v4/6b/a7/5f/6ba75fe7-ab00-ecd9-3ea8-726ec96423bc/AppIcon-0-0-1x_U007epad-0-0-0-1-0-0-sRGB-0-85-220.png/60x60bb.jpg","screenshots": [],"ipadScreenshots": [],"scrapedAt": "2026-07-02T16:05:02.490Z"}
Examples
Search for meditation:
{"searchQuery": "meditation","maxResults": 100}
Cap the price:
{"searchQuery": "meditation","maxResults": 100,"maxPrice": 39.99}
Scrape a specific search URL:
{"startUrls": [{"url": "https://www.apps.apple.com/"}],"maxResults": 200}
Daily monitoring (run on a schedule):
{"searchQuery": "meditation","maxResults": 500}
Schedule this input to run once a day in the Apify Scheduler to track prices, stock and new items over time.
๐ฐ Pricing
$0.99 per 1,000 results โ you only pay for successfully retrieved apps. Failed retries are never charged.
| Results | Cost |
|---|---|
| 100 | ~$0.10 |
| 1,000 | ~$0.99 |
| 10,000 | ~$9.9 |
| 100,000 | ~$99 |
Flat-rate alternatives typically charge $29โ$49/month regardless of usage.
Subscription tiers lower the rate further, down to $0.69 per 1,000 at the highest tier. Use the Max results cap in the input to control your spend exactly.
Performance
| Run size | Typical time |
|---|---|
| 100 results | under 1 minute |
| 1,000 results | 2โ4 minutes |
| 10,000 results | 20โ35 minutes |
Known limitations
- Some fields (brand, condition, shipping) are only returned when the seller or source publishes them โ expect
nullon a share of records. - Prices and stock change constantly; records reflect the moment of scraping.
- Very large result sets are bounded by the source's own paging limits.
- Items can sell or be withdrawn at any time, so a small share of URLs may expire shortly after scraping.
Technical details
- Source: apps.apple.com
- Coverage: everything the public search exposes, filterable via the input parameters above
- Retry: automatic retry on network errors with exponential backoff
Need a custom scraper?
Unfenced Group builds Apify actors for any website โ for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results โ we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl