Apple App Store hub

Apple App Store App API

Resolve one app to a typed record with its price, ratings, genres, developer and current version in a storefront.

GET /v1/apple-app-store/apps/{appId}

1 credit Failed requests are free

About this endpoint

GET /v1/apple-app-store/apps/{appId} takes a numeric app id such as 284882215, a bundle id such as com.facebook.Facebook, an App Store link, or an id with the id prefix used in links. Pass country for the storefront and language to change the language of the text. The answer is data.storefront, data.lookupStatus and data.app.

On found, data.app carries id, bundleId, name, url, platforms, deviceFamilies, developer, seller, price, ratings, ageRating, contentAdvisories, genres, primaryGenre, currentVersion, releasedAt, minimumOsVersion, fileSizeBytes, languages, features, gameCenter, supportsDeviceLicensing, description, icon and screenshots. Prices and ratings are for the storefront you asked for. The app route returns the current store tier when it can. App records inside list responses can still carry Apple's older tier, and the details route also returns the current tier. On not_found, data.app is null. HTTP 200 alone does not mean the app exists, so read lookupStatus first.

Apple App Store App API FAQ

Can I look up an app by bundle id?

Yes. Pass a bundle id such as com.facebook.Facebook as appId. A numeric id, an App Store link and an id with the id prefix also work. A word that is not any app's bundle id comes back as not_found.

What does the app response include?

On found, data.app has id, bundleId, name, url, platforms, deviceFamilies, developer, seller, price, ratings, ageRating, contentAdvisories, genres, primaryGenre, currentVersion, releasedAt, minimumOsVersion, fileSizeBytes, languages, features, gameCenter, supportsDeviceLicensing, description, icon and screenshots.

Why do the price and ratings differ from another request?

Price, currency, rating count and review text are specific to the storefront in country. Pass the same country when you compare two apps or refresh a row. Apple keeps one rating count per storefront, so there is no worldwide total.

What happens when the app is not sold in this storefront?

data.lookupStatus is not_found and data.app is null. A removed app, an app that never existed and an app not offered in the storefront all look the same.

Why can ageRating differ from the details route?

The app route and the details route return the current store tier. App records inside search, batch, chart and developer responses can still carry Apple's older age rating tier for the same app. Use the details route when the exact current rating matters.

How many credits does an app lookup cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth.