Apple APIapps.apple.com ↗
Search the Apple App Store and fetch full app details including version, file size, ratings, price, and release notes via 2 JSON endpoints.
What is the Apple API?
This API provides 2 endpoints for querying Apple App Store data: search_apps finds apps by keyword and returns up to 200 results per call with metadata like version, file size, developer, category, ratings, and price, while get_app fetches full details for a specific app by numeric ID or App Store URL, including description, release notes, screenshot URLs, minimum OS version, and supported devices.
curl -X GET 'https://api.parse.bot/scraper/abbb162e-67e3-42a0-b936-851517830481/search_apps?limit=5&query=instagram' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace apps-apple-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Apple App Store SDK — search apps, drill into details."""
from parse_apis.apps_apple_com_api import AppStore, AppNotFound
client = AppStore()
# Search for apps by keyword, cap total items fetched.
for app in client.apps.search(query="weather", limit=3):
print(app.app_name, app.version, f"{app.file_size_mb:.1f} MB")
# Drill down: take the first result and fetch full details by its track_id.
hit = client.apps.search(query="instagram", limit=1).first()
if hit is not None:
detail = client.apps.get(app_id=str(hit.track_id))
print(detail.app_name, detail.version, detail.developer)
print("Rating:", detail.average_rating, f"({detail.rating_count} ratings)")
print("Description:", detail.description[:120])
# Point lookup with typed error handling for a missing app.
try:
app = client.apps.get(app_id="9999999999")
except AppNotFound as e:
print("App not found:", e.message)
print("exercised: apps.search / apps.get")
Search for apps on the US Apple App Store by keyword. Returns a list of matching apps with metadata including name, version, file size, developer, category, ratings, price, screenshot URLs, and App Store URL. Results are ordered by relevance as determined by the App Store. One upstream request per call; no pagination beyond the limit parameter (max 200).
| Param | Type | Description |
|---|---|---|
| limit | integer | Maximum number of results to return (1-200). |
| query | string | Search term for finding apps (e.g. 'instagram', 'weather', 'spotify'). |
{
"type": "object",
"fields": {
"apps": "Array of app objects with name, version, file size, developer, category, ratings, price, screenshot URLs, and App Store URL",
"query": "The search term used",
"result_count": "Number of apps returned"
},
"sample": {
"data": {
"apps": [
{
"price": 0,
"version": "444.0.0",
"app_name": "Instagram",
"category": "Photo & Video",
"icon_url": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/23/59/e9/2359e92d-376c-cc29-b9e6-ab9a4a00fcf4/Prod-0-0-1x_U007epad-0-1-0-sRGB-85-220.png/100x100bb.jpg",
"track_id": 389801252,
"bundle_id": "com.burbn.instagram",
"developer": "Instagram, Inc.",
"file_size_mb": 570.4,
"rating_count": 29408916,
"release_date": "2010-10-06T08:12:41Z",
"app_store_url": "https://apps.apple.com/us/app/instagram/id389801252?uo=4",
"average_rating": 4.69059,
"file_size_bytes": 598086656,
"formatted_price": "Free",
"minimum_os_version": "16.3",
"current_version_release_date": "2026-08-24T13:21:42Z"
}
],
"query": "instagram",
"result_count": 5
},
"status": "success"
}
}About the Apple API
Search Apps
The search_apps endpoint accepts a query string (e.g. 'spotify', 'weather', 'photo editor') and an optional limit integer between 1 and 200. It returns an apps array where each object includes the app name, current version, file_size, developer, category, ratings, price, and App Store url. The result_count field tells you how many results were returned. Results are ordered by relevance as the App Store determines it — there is no parameter to change sort order.
Get App Details
The get_app endpoint takes a single required app_id parameter, which can be either a numeric App Store ID (e.g. '389801252') or a full App Store URL containing the ID. It returns a richer set of fields: app_name, bundle_id, track_id, developer, version, genres, category, icon_url (100×100), price, currency, description, release_notes (version history), screenshot_urls, minimum_os_version, release_date, ratings, file_size, and supported_devices.
Data Coverage
Both endpoints target the US App Store storefront. Pricing is returned in USD with a currency field confirming the code. Free apps return 0.0 for price. The icon_url field points to a 100×100 image hosted by Apple's CDN. Bundle identifiers (bundle_id) are available on get_app, useful for cross-referencing apps in MDM systems or analytics pipelines.
The Apple API is a managed, monitored endpoint for apps.apple.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when apps.apple.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official apps.apple.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track version changes and release notes for a set of competitor apps using
get_appon their numeric IDs - Build an app discovery tool that searches by category keyword and surfaces ratings and file size via
search_apps - Monitor pricing changes across a list of App Store apps by polling
priceandcurrencyfields onget_app - Compile a dataset of minimum OS requirements and supported devices for app compatibility research
- Extract screenshot URLs from
get_appto display App Store previews in a third-party product catalog - Audit developer portfolios by searching a developer's name and collecting all matching
bundle_idvalues - Feed app metadata (name, category, ratings, file size) into a mobile analytics dashboard
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Apple provide an official developer API for App Store data?+
What does `get_app` return beyond what `search_apps` provides?+
get_app returns several fields not present in search_apps results: description, release_notes (the version history text), screenshot_urls, minimum_os_version, release_date, supported_devices, and bundle_id. Use search_apps to find app IDs, then get_app to retrieve the full record.