Apple App Store hub

Apple App Store In-App Purchases API

Products and subscriptions with prices, renewal periods, introductory offers and Family Sharing.

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

1 credit Failed requests are free

About this endpoint

GET /v1/apple-app-store/apps/{appId}/in-app-purchases takes the numeric app id, an optional country, and a 1-based page of 10 products. The details route carries only the first 10 products. This route goes on to the end, and a large app can list thousands.

Each item has id, productId, name, description, price.amount, price.formatted, price.currency, isSubscription, recurringPeriod, introOffers, familyShareable, subscriptionFamily and url. recurringPeriod is an ISO-8601 duration such as P1M, and each intro offer has its own type, mode, price and period. The response has data.lookupStatus, data.storefront, data.appId, data.items and data.page with hasMore and nextPage. Apple's order for this list can change between reads, so a product can appear on more than one page. De-duplicate on id when you walk pages.

Apple App Store In-App Purchases API FAQ

Why do products repeat across pages?

The list order can differ between requests, so a product can appear on page 2 and again on page 3. The page offsets are exact but the order is not stable. De-duplicate on items[].id after you collect the pages.

Does this include subscriptions?

Yes. isSubscription says whether an item renews, recurringPeriod gives the renewal period as an ISO-8601 duration, and subscriptionFamily names the subscription group with its rank. introOffers lists free trials and promotional offers when they exist.

How deep can I page?

10 products a page and up to page 1,000, so up to 10,000 products. An app that sells nothing answers found with an empty list rather than an error.

Are prices in my currency?

No. Prices follow the country storefront you pass: price.amount, price.formatted and price.currency are in that storefront's currency. Pass the same country when you compare products across apps.

When is lookupStatus not_found?

When the app is not sold in that storefront or does not exist. An app that sells no products is found with an empty items list.

How many credits does the in-app purchases 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. Each paginated page is a separate billed request.