> **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-details>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/apple-app-store/apps-appid-details.mdx>

---

# Apple App Store Details API

Everything the app record leaves out: rating breakdown, privacy label, versions, in-app purchases, similar apps and per-platform records.

`GET /v1/apple-app-store/apps/{appId}/details` takes the numeric app id and an optional `country` storefront. The response names the two parts in `data.sources.page` and `data.sources.catalogue`, each `ok`, `failed` or `skipped`. `data.details` carries the page part: `subtitle`, `url`, `ratings.histogram`, `chartPosition`, `inAppPurchases` (at most 10), `topInAppPurchases`, `versionHistory`, `privacy`, `developerLinks`, `compatibility`, `capabilities`, `accessibilityFeatures`, `events`, `featuredReviews`, `similarApps`, `developerApps` (up to 15), `featuredIn`, `bundleParents`, `screenshots` and `previewVideos`.

`data.catalogue` carries the per-platform record: `ratings`, `ageRating`, `chartPositions`, `privacy`, `requirements`, `accessibility`, `distributionKind`, `isAppleArcade`, `isPreorder`, `gameCenterFeatures`, `macCompatible`, `genres`, `tags`, `developer`, `events` and `platforms`, where each platform has its own price, version history, developer links, capabilities, icon, screenshots, preview videos, editorial notes and Mac support. `ratings.average` is rounded to one decimal, as the App Store displays it; use the app route for the precise average. When one part fails, the other is still returned, the failed field is null, and `data.sources` says which failed. The request is still billed, so check `sources` before treating a null as missing data.

## Request

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

## FAQ

### Why are details or catalogue null?

Read data.sources. page and catalogue are ok, failed or skipped. failed means that part is temporarily unavailable; the other part is still returned. skipped means the app is not in this storefront, so neither part is returned.

### Can I use a bundle id on the details route?

No. The details route takes a numeric app id. Look the app up by bundle id with GET /v1/apple-app-store/apps/{appId} first and use the id it returns.

### What can I get here that the app route does not return?

ratings.histogram, privacy, versionHistory, inAppPurchases, topInAppPurchases, similarApps, featuredReviews, in-app events, developer links, compatibility, capabilities, accessibility features, per-platform records, chart positions, tags, requirements and preview videos.

### Are old versions returned?

Yes. data.details.versionHistory lists versions newest first, and each catalogue platform has its own versionHistory. Apple publishes at most 25 versions per platform, so an older app can have more history than the response shows.

### Is a partial details response still billed?

We do bill it, because the request completed. data.sources and the response meta show which parts are present. Retry when the missing part matters, or use the app route for the core record.

### How many credits does the details route 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.
