> **For coding agents and LLMs:** This is one Social Fetch marketing page (markdown export). For API orientation start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for auth and crawl rules use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for every operation use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt).

## This page

- **On-site (HTML):** <https://www.socialfetch.dev/platforms/apple-app-store/apps-appid>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/apple-app-store/apps-appid.mdx>

---

# 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}` 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.

## Request

- **Endpoint:** `GET /v1/apple-app-store/apps/{appId}`
- **Credits:** 1 credit
Failed requests are free
- **Input:** by app id or bundle id
- **Full reference:** [docs](https://www.socialfetch.dev/docs/api/v1/apple-app-store/apps/appid/get)
- **Platform page:** [/platforms/apple-app-store](https://www.socialfetch.dev/platforms/apple-app-store)

## 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.
