A surprising amount of product strategy starts with somebody reading an App Store page: what a competitor charges, which in-app purchases they sell, what their last ten versions shipped, how their rating moves. I got tired of doing that reading by hand, so I built the Apple App Store Product API on Apify. Feed it App Store IDs or URLs and it returns the full product record for any iOS, iPadOS, or macOS app as structured JSON, one row per app per country.
Disclosure: the Apify links in this post are affiliate links. If you run the Actor, I may earn a referral commission at no extra cost to you.
Does the Apple App Store have an API?
Yes, partly, and the partly is why this Actor exists. Apple's iTunes Search and Lookup endpoints are real and free, and for basic metadata they're fine. But the payload reflects an older App Store: you won't find the privacy "nutrition" cards, the itemized in-app purchase price list, version-by-version release notes, or the sample reviews that sit on today's product page, and Apple publishes no firm rate guarantees for it. When the data you need is "everything on the modern product page, per storefront," a scraper consumed as an API is the practical route.
What the App Store product API returns
The Apple App Store Product API returns one complete app record per ID and country: title, developer, description, price, ratings, version history, screenshots, in-app purchases, supported languages, privacy cards, and a sample of reviews.
| Field | Example | Notes |
|---|---|---|
title |
Spotify: Music and Podcasts |
App name as listed |
developer |
Spotify |
Publisher of record |
price_text |
Free |
Localized price for the storefront queried |
| Ratings | 4.8 |
Star average plus counts |
| In-app purchases | subscription tiers with prices |
Itemized, the pricing intelligence core |
lookup_country |
de |
Which storefront this row came from |
Version history, privacy cards, and supported languages ride along in the same row, and include_reviews_sample controls whether the page's few visible reviews are attached.
Who this is for
Pricing intelligence is the headline use: analysts comparing what an app charges across 50 storefronts, or watching a competitor's in-app purchase ladder change quarter to quarter. Product and ASO teams doing competitive research are the second group. The third is AI agent builders who want app metadata as agent context, so "summarize this competitor's app and its monetization" runs on real data.
The manual way, and where it breaks
The product page is public, so scraping it yourself is tempting. The details fight back. Much of the page content lives in embedded data structures that shift with App Store redesigns, storefront selection depends on URL country prefixes and headers that are easy to get subtly wrong, and localized price formatting differs per region, so your parser needs currency logic on day one. Multiply all of that by a country matrix and a retry layer, and the quick script becomes a project. I wrote the throwaway version three times before admitting it wasn't throwaway.
The faster way: run the Apple App Store Product API
Apify Console
- Open the Apple App Store Product API and click Try for free.
- Paste App Store IDs or full URLs into
product_idsand pick acountry. - Run it and download the records as JSON or CSV.
REST
curl -X POST "https://api.apify.com/v2/acts/johnvc~apple-app-store-product-api/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "product_ids": ["324684580"], "country": "us" }'
ID 324684580 is Spotify; a full URL like https://apps.apple.com/us/app/spotify/id324684580 works too, since the ID gets parsed out. Run mechanics are in the Apify API docs.
Fetch app records in Python
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("johnvc/apple-app-store-product-api").call(
run_input={
"product_ids": ["324684580", "310633997"],
"countries": ["us", "gb", "de"],
}
)
for app in client.dataset(run["defaultDatasetId"]).iterate_items():
print(app.get("title"), app.get("lookup_country"), app.get("price_text"))
Two IDs across three storefronts returns six rows, one per app-country pair, which is the shape you want for a pricing matrix.
Compare prices across country stores
The task App Store prices by country is the regional pricing sweep: one app, many storefronts, localized price_text per row.
Benchmark competitor apps
Compare competitor iOS apps on price and features runs a set of rival apps through one pull, which is the fastest way to build a feature-and-price comparison table that's current.
Extract in-app purchase price lists
Extract iOS app in-app purchase prices targets the monetization ladder specifically, the part Apple's official lookup won't give you.
Look up any app by ID
Get Apple App Store app details by app ID is the minimal single-app run, useful as a smoke test before you scale up.
Watch ratings and releases over time
Track iOS app ratings and version history shows the monitoring setup: run it on a schedule and you accumulate a longitudinal record of rating drift and release cadence.
App data as AI agent context
Hooked up over the Model Context Protocol, the Actor becomes a tool that Claude, Claude Code, and Cursor can call, so an agent can pull a live app record before answering questions about it. The task iOS app details in Claude MCP has the wiring, and there's more on Claude at claude.ai.
FAQ about scraping App Store product data
What does the App Store scraper cost to run?
Two cents per app record returned, plus a two-cent setup fee per run. A 100-app competitive sweep, the per-run maximum, lands around $2. Apify's free credit on new accounts covers plenty of experimentation first.
How is this scraper different from Apple's own lookup endpoints?
Apple's endpoints return the classic metadata slice. The scraper returns the product page as it exists now, including in-app purchase pricing, privacy cards, version history, and per-storefront localization, which is where pricing intelligence work actually happens.
Can an AI agent call this App Store scraper over MCP?
Yes. Registered as an MCP tool, it's callable from Claude, Claude Code, and Cursor, and each call returns full app records as tool output.
Can I schedule the scraper to monitor price changes?
Yes. Save your app list as a task, attach an Apify schedule, and compare price_text and in-app purchase entries between runs. Start from the Apple App Store Product API.
What won't this product scraper give you?
The full review corpus. It carries the small review sample Apple displays on the page, typically three, which is enough for flavor but not sentiment analysis. It also reports one storefront per row, so worldwide coverage means listing the countries you care about rather than assuming one row covers all.
More from Truffle Pig Data
The rest of the Apple toolkit: the Apple App Store Reviews API when you do need reviews at volume, Apple App Store Search for finding app IDs by keyword, and the Apple Maps API for Apple's places data.
Wrapping up
Competitive app research shouldn't mean reading product pages in fifty tabs. Point the Apple App Store Product API at your competitor set and get the whole picture as JSON.
Top comments (0)