The fastest way to start scraping the Apple App Store at scale. Structured JSON for app search, full listing detail with both lifetime and current-version ratings, customer reviews, developer portfolios and Top Free / Top Paid / Top Grossing charts — on every storefront. No Apple Developer account.
No credit card required · PAYG credits never expire
# Full listing for one App Store app
import scrapebadger
client = scrapebadger.ScrapeBadger("sb_live_...")
app = client.app_store.app(
app_id="324684580",
country="us",
){
"app_id": "324684580",
"bundle_id": "com.spotify.client",
"title": "Spotify: Music and Podcasts",
"developer": "Spotify",
"score": 4.8,
"current_version_score": 4.6,
"reviews": 29184112,
"price": 0
}Structured JSON responses with normalized data models. No HTML parsing. No proxy management. No Apple Developer account.
/v1/app-store/search/v1/app-store/apps/{app_id}/v1/app-store/apps/{app_id}/reviews/v1/app-store/developers/{developer_id}/v1/app-store/charts/v1/app-store/genres/v1/app-store/marketsAll fields are normalized from Apple's own listing data — no HTML for you to parse. App detail carries the current-version rating alongside the lifetime average, which is where a bad release shows up first.
app_id / bundle_idstringNumeric track id and the reverse-DNS bundle identifiertitle / subtitlestringListing title and the short subtitle beneath itdescriptionstringFull store description as Apple serves itdeveloperobjectDeveloper name, numeric id, website and store URLprice / currencyfloat / stringPrice in the storefront’s own currency, 0 for free appsscore / reviewsfloat / integerAverage star rating and the number of ratings behind itcurrent_version_scorefloatRating for the current version only — often very different from lifetimeversion / updatedstringCurrent version string and last-update timestamprelease_notesstringThe “what’s new” notes for the current releasesizeintegerDownload size in bytescontent_ratingstringAge rating and the advisories behind itgenres / genre_idsarrayPrimary and secondary genres with their chart-filter idsscreenshots / ipad_screenshotsarrayFull-resolution store media per device classsupported_devices / languagesarrayDevice compatibility and localisations Apple listsreview_idstringStable review identifier for deduplicationuser_namestringReviewer display namescoreintegerStars this reviewer gave, 1–5title / textstringReview headline and bodyversionstringThe app version the review was left againstupdatedstringSubmission timestamp, ISO 8601 UTCurlstringCanonical link back to the review on the storefrontThe App Store is one store per country. Pass a two-letter country code — us by default — and price, currency, availability, ranking and the review pool all resolve against that storefront.
/markets — it is free — for the authoritative country-code list, and /genres for the ids that narrow a chart.Scraping the App Store gives you real mobile-market signals — where an app ranks on each storefront, how the current release is being received, and what a competitor's whole portfolio looks like.
Poll Top Free, Top Paid and Top Grossing per country and genre to see exactly where an app sits and how fast it is climbing — the ranking Apple actually publishes.
Pull reviews per storefront and version, then split complaints by release. Apple exposes a current-version rating separately, so a bad update is visible immediately.
Pull a developer’s whole catalogue in one call, then watch pricing, versions and ratings across every app they publish.
Run the same keyword against different storefronts and languages to see which titles, subtitles and metadata win in each market.
Collect structured app metadata — descriptions, genres, ratings, sizes, device support and review text — for classification and recommendation models.
Compare price, availability, rating and rank for the same bundle id across storefronts to find where an app is under-priced or missing entirely.
You only pay for successful responses — failed requests are always free. PAYG credits never expire; volume subscription tiers reduce per-credit cost further.
| Endpoint | Credits / request | PAYG | Subscription |
|---|---|---|---|
Search Apps /search | 5 credits | — | — |
App Detail /apps/{app_id} | 5 credits | — | — |
App Reviews /apps/{app_id}/reviews | 5 credits | — | — |
Developer Portfolio /developers/{developer_id} | 5 credits | — | — |
Charts /charts | 5 credits | — | — |
Genres /genres | Free | — | — |
Markets /markets | Free | — | — |
See the full plan comparison on the pricing page — subscription tiers step down per-credit cost beyond the cheapest column shown above.
ScrapeBadger's App Store Scraper API handles everything Apple throws at automated requests — so your pipeline keeps running.
Top Free, Top Paid and Top Grossing come back as real ranked lists, optionally narrowed to a genre — no scraping a chart page and hoping the layout holds.
Apple publishes a separate rating for the current version. A lifetime 4.7 hiding a 2.1 on the latest build is one of the most useful signals on the store, and it is in every app response.
Every call takes a two-letter country code. Price, availability, rank and review pool all resolve against that storefront, so a comparison is never accidentally mixed.
The entity parameter lets you search other App Store entity types from the same endpoint, so one integration covers more than software listings.
No App Store Connect access, no Apple ID, no upstream quota. One ScrapeBadger API key covers every endpoint on this page.
Credits are deducted for successful responses. Blocks and timeouts return a 422 and cost nothing, so you never pay for a retry.
Get started in minutes with Python, Node.js, or plain HTTP requests.
The scrapebadger Node.js library wraps the App Store API with typed methods. Install with npm install scrapebadger, then start scraping the App Store in a few lines of code.
import ScrapeBadger from 'scrapebadger'
const client = new ScrapeBadger({ apiKey: 'sb_live_...' })
// Meditation apps on the German storefront
const { apps } = await client.appStore.search({
query: 'meditation',
country: 'de',
limit: 25,
})
// Full listing for the top three
for (const a of apps.slice(0, 3)) {
const app = await client.appStore.app({ appId: a.app_id })
console.log(app.title, app.score, app.current_version_score)
}import ScrapeBadger from 'scrapebadger'
const client = new ScrapeBadger({ apiKey: 'sb_live_...' })
// Who is top-grossing in Health & Fitness in the US?
const { apps } = await client.appStore.charts({
type: 'top-grossing',
genre: '6013',
country: 'us',
})
// Read what the current release is getting complained about
const res = await client.appStore.reviews({
appId: apps[0].app_id,
sort: 'recent',
page: 1,
})
for (const r of res.reviews) {
console.log(r.score, r.version, r.title)
}Common questions about scraping the App Store with the API — Python, Node.js, or REST.
No. You only need a ScrapeBadger API key. There is no Apple ID, no App Store Connect and no upstream quota involved.
It is the numeric track id in an App Store URL — the digits after /id, for example 324684580 for Spotify. Search, chart and developer responses all return it on every app, so you can go straight from a result to full detail or reviews.
Apple exposes ten pages of customer reviews per app per storefront, so pages 1 to 10 are the hard ceiling. To go wider rather than deeper, fetch the same app across several storefronts — each has its own review pool.
The storefront is a two-letter country code, defaulting to us. Call the free /markets endpoint for the authoritative list. Price, ranking, availability and reviews are all storefront-specific, so pin the country whenever you compare markets.
Yes. The charts endpoint returns top-free, top-paid or top-grossing as a real ranked list, and you can narrow it to a genre with an id from the free /genres endpoint.
Per-request credit costs are listed above. For higher monthly volume, subscription tiers reduce the per-credit rate substantially. All App Store endpoints — search, app detail, reviews, developers and charts — are included on every plan.
1,000 free credits. No credit card. Get your API key in under a minute.
PAYG credits never expire · Pay only for successful requests · Every storefront