Apple App Store API — Apps, Reviews, Ratings & ASO
Pricing
from $1.00 / 1,000 results
Apple App Store API — Apps, Reviews, Ratings & ASO
Unofficial Apple App Store API in one Apify actor. 10 endpoints: app details, search, reviews, top charts, similar apps, developer profiles, autocomplete, rating histograms, privacy labels, version history. Pure HTTP, sub-3s cold start, batch & parallel. For iOS devs, ASO and AI tools.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Logiover
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 hours ago
Last modified
Categories
Share
🍎 App Store Data API — Unofficial REST-style Scraper for Apple App Store
One actor. Ten endpoints. Sub-3-second cold start. The fastest, most complete unofficial Apple App Store API on Apify — built for iOS developers, ASO platforms, market researchers, AI agents, and anyone who needs structured data from the App Store without an App Store Connect account.
Search iOS apps by keyword, pull full app details, scrape reviews, get top charts by category, find similar apps, list a developer's portfolio, mine autocomplete suggestions for ASO keyword research, get Apple Privacy Labels, fetch rating histograms, and pull version release history — all from a single Apify actor.
No headless browser. No proxy required. No App Store Connect account. Pure HTTP. Just JSON.
🎯 What you can do with this Apple App Store scraper
| You want to… | Use mode | Typical input |
|---|---|---|
| Find iOS apps matching a keyword | search | "query": "meditation" |
| Get every detail about a specific app | app | "id": 324684580 or "appId": "com.spotify.client" |
| Pull user reviews (up to ~500 per app) | reviews | "id": 324684580, "maxResults": 500 |
| See top free / paid / grossing iOS or iPad apps | list | "collection": "TOP_FREE_IOS" |
| Find competitors and similar apps | similar | "id": 324684580 |
| List every app by a developer | developer | "devId": 324684580 |
| Get ASO autocomplete keywords | suggest | "query": "fit" |
| Get rating histogram (1-star to 5-star breakdown) | ratings | "id": 324684580 |
| Read Apple Privacy Labels | privacy | "id": 324684580 |
| Pull version release history | versionHistory | "id": 324684580 |
Every result is tagged with a _mode field so you can run multiple modes back-to-back and slice the dataset afterwards.
🚀 Why iOS developers, ASO teams, and analysts pick this actor
Compared with other App Store scrapers on Apify
| Most others | This actor | |
|---|---|---|
| Endpoints | 1–3 (reviews only, or details only) | 10 endpoints in one |
| Cold start | 8–15 seconds (headless browser) | ~3 seconds (pure HTTP) |
| Batch app lookups | Sequential | 5× concurrent |
| Privacy Labels support | Rare | Built-in privacy mode |
| Rating histogram | Often missing | Dedicated ratings mode |
| Version history | Rare | Dedicated versionHistory mode |
| Output schema | Sparse / undocumented | All fields documented with examples |
| Dataset views | None | 4 pre-built views (Overview, Apps, Reviews, App details) |
Compared with Apple's official App Store Connect API
| Apple App Store Connect API | This actor | |
|---|---|---|
| Access scope | Your own apps only | Any public app on App Store |
| Reviews API | App Store Connect account + JWT auth required | Just call it |
| Search / discovery | Not available | Yes |
| Top charts | Not available | Yes |
| Competitor analysis | Not possible | Yes (search, similar, developer modes) |
| Setup time | Hours (developer account, certificates, JWT) | Seconds |
⚡ Quick start — three runs in 30 seconds
Run 1 — Search apps by keyword
{"mode": "search","query": "meditation","country": "us","language": "en-us","maxResults": 50}
Returns: 50 iOS apps matching "meditation" with title, icon, developer, rating, price, screenshots, genre, and direct App Store URL.
Run 2 — Get full details for one app
{"mode": "app","id": 324684580,"country": "us","language": "en-us"}
Or by bundle ID:
{"mode": "app","appId": "com.spotify.client","country": "us"}
Returns: every public field — full description, all screenshots (iPhone, iPad, Apple TV variants), all-time and current-version ratings, version history, content rating, supported devices, supported languages, file size, required iOS version, developer name and website, and more.
Run 3 — Pull 500 newest reviews (App Store hard cap)
{"mode": "reviews","id": 324684580,"country": "us","language": "en-us","maxResults": 500,"reviewSort": "RECENT"}
Returns: Up to 500 reviews (10 pages × 50 — App Store's hard limit) with user name, star rating, review title, full text, date, and app version.
📖 All 10 endpoints in depth
1. mode: "search" — Keyword search
Find iOS apps that match a search term — same results as App Store's search box.
{"mode": "search","query": "spotify","country": "us","language": "en-us","maxResults": 50,"idsOnly": false}
Set idsOnly: true to return only numeric app IDs (much faster — useful when you'll enrich via app mode afterwards).
Use cases: keyword tracking for App Store ASO, finding competitors, niche discovery, building iOS app directories.
2. mode: "app" — Full app details
Pull every public field for one app — or many apps in parallel (5× concurrency). Accepts numeric id or bundle appId, individual or batched.
{"mode": "app","ids": [324684580, 389801252, 686449807],"country": "us","language": "en-us"}
Or via bundle IDs:
{"mode": "app","appIds": ["com.spotify.client", "com.burbn.instagram"],"country": "us"}
Returns 45+ fields including:
- Identity:
id,appId(bundle),title,description,url - Ratings:
score,ratings,currentVersionScore,currentVersionRatings - Visual assets:
icon,screenshots[],ipadScreenshots[],appletvScreenshots[] - Pricing:
price,currency,free - Version:
version,releaseDate,currentVersionReleaseDate,releaseNotes,versionHistory[] - Compatibility:
requiredOsVersion,supportedDevices[],languages[],features[],size - Genre:
primaryGenre,primaryGenreId,genres[],genreIds[] - Content:
contentRating,advisoryRating - Developer:
developer,developerId,developerUrl,developerWebsite
Use cases: iOS app intelligence dashboards, version monitoring, competitor pricing analysis, supported-device research.
3. mode: "reviews" — User reviews
Pull up to ~500 reviews per app — the App Store hard cap (10 pages × 50 reviews). The actor automatically iterates pages until it hits your maxResults or the cap.
{"mode": "reviews","id": 324684580,"country": "us","language": "en-us","maxResults": 500,"reviewSort": "RECENT"}
Sort options: RECENT (default), HELPFUL (most helpful first).
Use cases: review sentiment analysis, NPS-style monitoring, support-load forecasting, competitor weakness research.
⚠️ App Store limitation: Unlike Google Play, the iOS App Store caps reviews at roughly 500 per app per country via its public RSS feed. To pull more historical reviews, run the same
reviewsmode for multiplecountrystorefronts and dedupe.
4. mode: "list" — Top charts
Pull top charts for any collection × category combination across iOS, iPad, and Mac App Stores.
{"mode": "list","collection": "TOP_FREE_IOS","category": "GAMES_PUZZLE","maxResults": 100,"country": "us","language": "en-us"}
Collections:
- iPhone/iOS:
TOP_FREE_IOS,TOP_PAID_IOS,TOP_GROSSING_IOS,NEW_IOS,NEW_FREE_IOS,NEW_PAID_IOS - iPad:
TOP_FREE_IPAD,TOP_PAID_IPAD,TOP_GROSSING_IPAD - Mac App Store:
TOP_MAC,TOP_FREE_MAC,TOP_PAID_MAC,TOP_GROSSING_MAC
Common category codes: GAMES, BUSINESS, EDUCATION, FINANCE, SOCIAL_NETWORKING, MUSIC, PHOTO_AND_VIDEO, PRODUCTIVITY, SHOPPING, UTILITIES, TRAVEL, HEALTH_AND_FITNESS, LIFESTYLE, ENTERTAINMENT, NEWS, NAVIGATION, FOOD_AND_DRINK, WEATHER, REFERENCE, BOOKS, MEDICAL, SPORTS, MAGAZINES_AND_NEWSPAPERS.
Game sub-categories: GAMES_ACTION, GAMES_ADVENTURE, GAMES_ARCADE, GAMES_BOARD, GAMES_CARD, GAMES_CASINO, GAMES_DICE, GAMES_EDUCATIONAL, GAMES_FAMILY, GAMES_MUSIC, GAMES_PUZZLE, GAMES_RACING, GAMES_ROLE_PLAYING, GAMES_SIMULATION, GAMES_SPORTS, GAMES_STRATEGY, GAMES_TRIVIA, GAMES_WORD.
Use cases: chart-position tracking, category benchmarking, country-by-country expansion research, iPad-vs-iPhone analysis.
5. mode: "similar" — Apps similar to a given app
Get the "You Might Also Like" / similar-apps list that App Store shows on every app page.
{"mode": "similar","id": 324684580,"country": "us","language": "en-us"}
Use cases: competitor mapping, market sizing for a niche, finding adjacent categories, ad-targeting lookalike audiences.
6. mode: "developer" — All apps by a publisher
List every app a developer has published. Requires numeric devId (artistId).
{"mode": "developer","devId": 324684580,"country": "us","language": "en-us"}
The devId is the developerId field in any app record. You can also extract it from a developer's App Store URL: https://apps.apple.com/us/developer/spotify-ltd/id324684580.
Use cases: publisher portfolio analysis, M&A research, agency competitive monitoring.
7. mode: "suggest" — Autocomplete suggestions for ASO
Get the autocomplete suggestions App Store shows as you type — gold for ASO keyword research because they reflect actual user search behavior.
{"mode": "suggest","query": "fit","country": "us","language": "en-us"}
Returns: ranked list of suggested search terms (e.g. fitness apps, fitness tracker, fitness coach).
Use cases: ASO keyword discovery, long-tail keyword mining, title and subtitle optimization, paid Apple Search Ads keyword seeding.
8. mode: "ratings" — Rating histogram (iOS-exclusive)
Get the all-time rating breakdown (1-star to 5-star counts) for an app. Useful for sentiment distribution analysis.
{"mode": "ratings","id": 324684580,"country": "us"}
Returns: ratings count plus histogram object like { "1": 240000, "2": 80000, "3": 150000, "4": 800000, "5": 12200000 }.
💡 You can pass bundle
appIdinstead of numericid— the actor will resolve it for you.
Use cases: sentiment distribution research, "is this app loved or polarizing?" analysis, competitor rating comparisons.
9. mode: "privacy" — Apple Privacy Labels (iOS-exclusive)
Get the "App Privacy" section that Apple requires every developer to fill in — what data the app collects, how it's used, whether it's linked to user identity, and tracking practices.
{"mode": "privacy","id": 324684580,"country": "us","language": "en-us"}
Returns: structured privacy data with data[] (categories collected and their purposes), privacyTypes[] (high-level groupings like "Data Used to Track You" / "Data Linked to You" / "Data Not Linked to You"), and managePrivacyChoicesUrl.
Use cases: GDPR/CCPA compliance research, vendor security reviews, consumer privacy tools, "App Tracking Transparency" research, building privacy-comparison UIs.
10. mode: "versionHistory" — Version release history (iOS-exclusive)
Pull the full version-release history of an app, with release dates and release notes for every version.
{"mode": "versionHistory","id": 324684580,"country": "us","language": "en-us"}
Returns: an array of version records, each with versionDisplay, releaseDate, and releaseNotes.
Use cases: update-cadence analysis, "what's changed in the last 6 months?" research, competitor release-velocity benchmarking, changelog mining for product trend analysis.
💡 Real-world use cases
iOS ASO platforms and App Store optimization tools
- Keyword tracking — run
searchmode daily across your tracked keywords, compute rank changes - Suggest mining — feed
suggestmode 1,000 seed terms, harvest tens of thousands of long-tail keywords - Competitor monitoring — run
appmode on competitors weekly, alert on title / subtitle / description / screenshot changes - Top-chart tracking —
listmode by country + category for market-share dashboards - Update cadence —
versionHistorymode to see how often competitors ship updates
iOS app intelligence and analytics platforms
- Bulk metadata ingestion —
appmode in batch (pass hundreds ofidsorappIds) - Review streaming —
reviewsmode scheduled hourly, dedupe by review identifier - Rating distribution analysis —
ratingsmode for full histogram, not just average - Pricing intelligence —
price,free,currencyfields tracked by country
AI agents and LLM-powered tools
- ChatGPT / Claude plugins — wrap this actor as a tool so users can ask "what are the top 10 fitness apps in Japan?"
- RAG pipelines — pull full app
description+ recentreviews+versionHistoryfor context-rich embeddings - Customer-support bots — fetch latest reviews + version + release notes to answer "what's broken in the new version?"
Market research and consultancies
- Category benchmarking — top-100 free + grossing charts by country, joined to ratings histograms
- Genre trend analysis — track which categories are growing by sampling top charts over time
- Publisher M&A research —
developermode to map a target's portfolio
Privacy, compliance, and security teams
- Privacy Label audits —
privacymode for vendor procurement and ATT (App Tracking Transparency) research - Building "privacy nutrition labels" UIs — surface what an app collects in a user-friendly format
- GDPR / CCPA compliance research — bulk privacy-label extraction across procured iOS apps
Internal alerting and product monitoring
- Your own app's reviews — schedule
reviewsmode hourly, alert on sudden 1-star spikes - Version drift —
appmode + diffcurrentVersionReleaseDatebetween runs to detect new releases - Competitor releases —
versionHistorymode on competitor IDs daily, alert on new entries
🔌 Integration — call this actor from your stack
REST API (curl)
curl -X POST \"https://api.apify.com/v2/acts/YOUR-USERNAME~app-store-data-api/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"mode": "search","query": "meditation","maxResults": 50}'
JavaScript / Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const { defaultDatasetId } = await client.actor('YOUR-USERNAME/app-store-data-api').call({mode: 'reviews',id: 324684580,country: 'us',maxResults: 500,reviewSort: 'RECENT',});const { items } = await client.dataset(defaultDatasetId).listItems();for (const review of items) {console.log(`${review.score}★ ${review.userName}: ${review.text}`);}
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("YOUR-USERNAME/app-store-data-api").call(run_input={"mode": "app","ids": [324684580, 389801252],"country": "us","language": "en-us",})for app in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{app['title']:40s} ⭐ {app['score']:.1f} 💰 {app['price']} {app['currency']}")
No-code automation (n8n, Make, Zapier)
This actor works out-of-the-box with any tool that supports Apify's HTTP API. Trigger it on a schedule, push results to Google Sheets, Airtable, Notion, Slack, your warehouse — whatever you already use.
📊 Output format
Universal fields (on every item, every mode)
| Field | Type | Description |
|---|---|---|
_mode | string | Which endpoint produced this item — use it to filter when you mix modes |
scrapedAt | string (ISO 8601) | UTC timestamp of when this item was scraped |
Pre-built dataset views
Switch between these in the Apify dataset UI without any post-processing:
- Overview — universal columns across all modes (
_mode,id,appId,title,developer,score,price,url) - App catalog — best for
search,list,similar,developermodes (icon, title, developer, rating, price, genre) - Reviews — best for
reviewsmode (user, rating, title, text, date, version) - App details — wide view for
appmode (40+ fields including ratings, pricing, version, supported devices, content rating)
Export formats
The Apify dataset exposes the data as JSON, CSV, XLSX (multi-sheet workbook), HTML, RSS (great for review monitoring), and JSONLines (for streaming pipelines).
⚡ Performance benchmarks
Measured on Apify default resources, us locale:
| Operation | Time |
|---|---|
| Cold start (container spin-up to first result) | ~3 seconds |
search — 50 results | 2–4 seconds |
app — single app full details | 1–2 seconds |
app — batch of 100 apps (5× concurrency) | 20–30 seconds |
reviews — 500 reviews (10 pages) | 8–12 seconds |
list — top 100 from a chart | 2–4 seconds |
similar — full list | 2–4 seconds |
developer — full portfolio | 2–4 seconds |
suggest — autocomplete | <1 second |
ratings | 1–2 seconds |
privacy | 1–2 seconds |
versionHistory | 1–2 seconds |
Non-US storefronts may be slightly slower due to localization.
🌍 Country and language support
App Store has 115+ country storefronts. Pass any combination of country (ISO 3166-1 alpha-2) and language (BCP 47 with region, e.g. en-us, tr-tr, de-de, ja-jp, pt-br).
💡 Important: Unlike Google Play, App Store treats
countryas a storefront — the same numeric appidcan exist in multiple storefronts with different titles, descriptions, screenshots, ratings, pricing, and even availability. Always specify the country relevant to your research.
Tested heavily in: us/en-us, gb/en-gb, de/de-de, fr/fr-fr, es/es-es, it/it-it, tr/tr-tr, jp/ja-jp, kr/ko-kr, br/pt-br, mx/es-mx, in/en-in, cn/zh-cn.
❓ FAQ
Is this an official Apple API?
No — this is an unofficial scraper. It uses public iTunes Search API and public App Store endpoints, the same way the App Store web pages do. No authentication, no App Store Connect account, no JWT.
Do I need an Apple Developer account or API key?
No. You only need an Apify account (free tier works for testing).
Is this legal?
This actor accesses publicly available data from apps.apple.com and itunes.apple.com. As with any scraper, use it responsibly: respect rate limits, follow Apple's terms of service, and use the data for legitimate research, analytics, or product purposes. Bulk redistribution of Apple's data or commercial resale may require additional consideration — consult your legal counsel.
Should I use numeric id or bundle appId?
Both work for most modes. Numeric id (e.g. 324684580) is universally supported by every endpoint. Bundle appId (e.g. com.spotify.client) works for app, reviews, similar, ratings, privacy, and versionHistory — when used with ratings or privacy, the actor automatically resolves the bundle ID to the numeric ID first.
Why is the reviews cap only ~500?
This is an App Store limitation, not an actor limit. Apple's public review RSS feed returns up to 10 pages of ~50 reviews each. To pull more historical reviews, run the reviews mode for additional country storefronts and dedupe by review identifier.
How accurate is the rating data?
score is the floating-point all-time average rating (e.g. 4.8). ratings is the total count of all-time ratings. currentVersionScore and currentVersionRatings cover only the current app version. The ratings mode returns a full histogram with exact 1-star to 5-star counts.
Can I scrape paid app prices and in-app purchases?
Yes — price returns the numeric price in the requested country's currency. App Store doesn't expose granular IAP prices via the public API (those are visible only on the app page itself).
What about app screenshots?
app mode returns three separate arrays: screenshots (iPhone), ipadScreenshots (iPad), and appletvScreenshots (Apple TV). Each is a direct CDN URL — no auth required to fetch.
Can I run multiple modes in one actor run?
Each actor run executes one mode. To combine modes, call the actor multiple times via the API and join the datasets on id. Each result includes _mode so you can keep everything in a single combined dataset.
What's the difference between Google Play Data API and this one?
This actor is the Apple App Store counterpart of the Google Play Data API — same architecture, same Apify Store conventions, same pricing model. Run both together for cross-platform app intelligence.
How do I monitor my own iOS app's reviews?
Set up a scheduled Apify task with this config:
{"mode": "reviews","id": YOUR_APP_ID,"country": "us","reviewSort": "RECENT","maxResults": 100}
Schedule it hourly. Use the Apify dataset's RSS export to feed into Slack, email, or a webhook.
Does this support proxy rotation?
The actor uses pure HTTP and works fine from Apify's default infrastructure without proxies. For very high-volume runs, you can configure proxy settings in the Apify run options.
🛠 Built on open source
This actor is built on top of app-store-scraper — the de-facto unofficial App Store library (MIT-licensed, actively maintained, sister project of google-play-scraper). The actor wraps the library with:
- A unified mode-based interface so all 10 methods are accessible from one input form
- Automatic pagination for reviews (1–10 pages)
- Concurrent batch processing (5× workers) for app detail lookups
- Automatic bundleId → numeric ID resolution for
ratingsandprivacymodes - Retry logic with exponential backoff for transient errors
- Output normalization (consistent price / free reconciliation)
- A complete dataset schema with all fields documented
- Production logging with per-mode and per-app progress
🆘 Support
Have an issue, a feature request, or a use case you'd like supported?
- Bug reports & feature requests: open an Issue on this actor's page
- Response time: typically within 24 hours
- Custom modifications: available on request — contact via Apify Console
Keywords
app store scraper · app store api · unofficial app store api · apple app store scraper · ios app data api · app store reviews scraper · app store search api · app store top charts · apple privacy labels · ios app analytics · app store ratings histogram · app store version history · ios aso keyword research · app store metadata · app store autocomplete · ios app intelligence · app store competitor analysis · app store similar apps · ipad app charts · mac app store scraper