~ / endpoints / Apple App Store API

Apple App Store Scraper API

Our Apple App Store scraper takes any numeric app id, reverse-DNS bundle id, or apps.apple.com URL and returns the full listing as JSON: title, developer, exact rating, review count, price, version, release dates, description, and every screenshot in a single request.

Get a free API keyEndpoint catalog
1,000
free requests / mo
2.6s
median response
JSON
structured output
1
call per app
the hurdle

The hard part of Apple App Store data

The App Store web page ships most of its numbers in late-loading scripts, so hand-written selectors break within weeks and the rating you scrape from the HTML is often the rounded star, not the real average. Apple's own iTunes Lookup endpoint is cleaner but throttles at roughly 20 requests per minute per IP and returns a 403 block page once you cross it.

step one

Send one request to the Apple App Store Scraper API

cURL
curl "https://api.appstorescraperapi.com/api/v1/appstore/product?id=324684580&api_key=$API_KEY"
Python
import requests

BASE = "https://api.appstorescraperapi.com"
API_KEY = "YOUR_API_KEY"

# Pass a numeric app id, an apps.apple.com URL, or a bundle id.
data = requests.get(
    f"{BASE}/api/v1/appstore/product",
    params={"id": "324684580", "api_key": API_KEY},
    timeout=30,
).json()

print(data["title"], "by", data["seller_name"])
print(data["rating"], "stars across", data["reviews_count"], "ratings")
print("Version", data["version"], "-", data["formatted_price"])

# Look an app up by its bundle id instead of the numeric id.
by_bundle = requests.get(
    f"{BASE}/api/v1/appstore/product",
    params={"bundleId": "com.spotify.client", "api_key": API_KEY},
    timeout=30,
).json()
print(by_bundle["id"], by_bundle["minimum_os_version"])
parameters list

Parameters

ParameterRequiredDefaultNotes
idoptional-The numeric App Store track id. Accepts a bare id like 324684580, an id324684580 token, or a full apps.apple.com/.../id324684580 URL. Required unless you pass bundleId.
bundleIdoptional-The app's reverse-DNS bundle id, e.g. com.spotify.client. Use it instead of id when you know the bundle but not the numeric id. One of id or bundleId is required.
urloptional-An apps.apple.com app URL. Pass it as the id value and we extract the numeric track id from it server side.
countryoptionalusTwo-letter ISO storefront country. Defaults to us. Set it to read the listing, price, and availability for another region's store.
api_keyrequired-Your API key, passed as a query parameter. Get one free at signup.
data back

Reading the Apple App Store Scraper API response

200 OK
{
  "id": "324684580",
  "track_id": "324684580",
  "bundle_id": "com.spotify.client",
  "title": "Spotify: Music and Podcasts",
  "seller_name": "Spotify",
  "artist_id": "324684583",
  "primary_genre": "Music",
  "genres": ["Music", "Entertainment"],
  "price": 0,
  "formatted_price": "Free",
  "currency": "USD",
  "rating": 4.78005,
  "rating_current_version": 4.78005,
  "reviews_count": 40687986,
  "reviews_count_current_version": 40687986,
  "content_advisory_rating": "12+",
  "version": "9.1.60",
  "current_version_release_date": "2026-06-26T07:29:24Z",
  "release_date": "2011-07-14T11:22:37Z",
  "release_notes": "We're always making changes and improvements to Spotify. To make sure you don't miss a thing, just keep your Updates turned on.",
  "file_size_bytes": 281802752,
  "minimum_os_version": "16.1",
  "description": "With the Spotify app, you can explore an extensive library of music and podcasts for free...",
  "artwork_url": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/50/c5/33/50c533fe-3854-b5ce-92c5-b2a1cb4fafe2/AppIcon-0-0-1x_U007epad-0-1-0-0-sRGB-85-220.png/512x512bb.jpg",
  "thumbnail": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/50/c5/33/50c533fe-3854-b5ce-92c5-b2a1cb4fafe2/AppIcon-0-0-1x_U007epad-0-1-0-0-sRGB-85-220.png/512x512bb.jpg",
  "screenshot_urls": [
    "https://is1-ssl.mzstatic.com/image/thumb/PurpleSource211/v4/f3/ce/05/f3ce0547-690a-b355-b1dd-6b6e91808279/IOS_-_5.5_-_S01.png/392x696bb.png"
  ],
  "ipad_screenshot_urls": [
    "https://is1-ssl.mzstatic.com/image/thumb/PurpleSource211/v4/31/15/15/31151525-510a-a212-ea51-e023e7b6351f/IOS_-_Ipad_6th_-_S01.png/552x414bb.png"
  ],
  "supported_devices": ["iPhone13-iPhone13", "iPadPro13M4-iPadPro13M4"],
  "languages": ["EN", "FR", "DE", "ES", "JA"],
  "advisories": ["Infrequent/Mild Profanity or Crude Humor"],
  "is_game_center_enabled": false,
  "kind": "software",
  "url": "https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580?uo=4",
  "seller_url": "https://www.spotify.com/",
  "artist_view_url": "https://apps.apple.com/us/developer/spotify/id324684583?uo=4"
}
FieldTypeDescription
idstringThe App Store track id, the stable numeric identifier for the app.
bundle_idstringThe app's reverse-DNS bundle identifier, e.g. com.spotify.client.
titlestringThe app's display name as shown on its App Store page.
seller_namestringThe seller or developer name behind the listing.
primary_genrestringThe app's primary App Store category, e.g. Music. A genres array carries the full category list.
pricenumberNumeric price in the storefront currency. formatted_price gives the display string, e.g. Free.
ratingnumberAverage user rating across all versions, unrounded. rating_current_version gives the current build's average.
reviews_countintegerTotal number of ratings. reviews_count_current_version gives the count for the current version.
content_advisory_ratingstringThe age rating, e.g. 12+. An advisories array lists the specific content descriptors.
versionstringThe current app version string, with current_version_release_date and release_notes alongside it.
release_datestringISO timestamp of the app's original App Store release.
file_size_bytesintegerDownload size of the current build in bytes.
minimum_os_versionstringThe lowest iOS version the app supports.
descriptionstringThe full App Store description text for the listing.
artwork_urlstringURL of the app icon. thumbnail mirrors it for convenience.
screenshot_urlsarrayiPhone screenshot URLs. ipad_screenshot_urls carries the iPad set.
languagesarrayISO language codes the app is localized into.
urlstringThe canonical apps.apple.com listing URL. seller_url and artist_view_url point to the developer site and their App Store page.
common builds

What you can ship with it

>

App Store Optimization

Track a title's rating, review count, category, and description on a schedule to measure how listing edits and updates move the numbers over time.
>

Competitor monitoring

Resolve a list of rival app ids into version, price, rating, and release cadence so you can watch how competing apps ship and reprice.
>

App catalogs and directories

Enrich a spreadsheet of app ids or bundle ids into clean rows: title, developer, icon, genre, and screenshots for a searchable app database.
>

Rating and version alerts

Poll an app daily and store rating, reviews_count, and version to fire an alert when the score drops or a new build lands.
>

Market research

Pull price, category, content rating, and localization data across a segment of apps to size a market before you build or invest.
>

Store listing sync

Read the live listing to keep your own site's app cards, pricing, and screenshots in step with what the App Store actually shows.
why it works

Why our Apple App Store Scraper API earns its keep

Pass a numeric id, a bundle id, or an apps.apple.com URL and we return the parsed listing with no key from Apple and no rate limit of your own to nurse. Every request runs through rotating proxies, anti-bot handling, and retries across proxy tiers, returning validated JSON with a stable schema in about 2.6 seconds.

*

id, bundle id, or URL input

Look an app up by its numeric track id, its reverse-DNS bundle id, or a full apps.apple.com URL, all resolved server side.
*

Unrounded ratings

We return the average user rating as a full decimal, e.g. 4.78005, plus the current-version rating, not just the rounded star.
*

Anti-bot and proxy rotation

Rotating residential and datacenter proxies with anti-bot handling keep lookups flowing past Apple's per-IP throttling.
*

Auto-retry across pools

A throttled or blocked fetch retries through paid-residential, datacenter, and free proxy tiers before a response is returned.
*

Full listing in one call

Title, developer, price, rating, version, description, screenshots, languages, and device support all come back in a single response.
*

Storefront targeting

The country parameter reads the listing, price, and availability as seen from any Apple storefront.
comparison table

Apple App Store Scraper API vs official and roll-your-own

Our APIDIY (requests / headless)iTunes Lookup direct
Input by id, bundle, or URLYes, all threeManual fetch and parse per shapeid or bundleId only
Exact ratingFull decimal, unroundedOften the rounded star from HTMLFull decimal
SetupAPI key onlyProxies, headless browser, parsersNone, but bring your own IPs
Rate limitsBy plan, retries handledBound by your proxy poolAround 20 req/min/IP, then 403
Anti-bot and proxiesBuilt inYou build and maintain itNot included
OutputValidated JSON, stable schemaWhatever you parseRaw Apple JSON, field names differ
what you pay

From free to high volume

PlanPriceBest for
Free1,000 requestsTesting and small jobs
Pro$0.60 / 1kProduction workloads
Pay-as-you-go$0.90 / 1kSpiky or one-off volume

Median response 2.6s. You only pay for successful requests.

FAQ

What is an Apple App Store scraper?

An Apple App Store scraper is a tool that reads a public app listing and returns it as structured data. Our Apple App Store scraper API takes an app id, a bundle id, or an apps.apple.com URL and returns the title, developer, rating, review count, price, version, release dates, description, screenshots, supported languages, and device list as JSON from a single request.

How do I get App Store data by app id or bundle id?

Send one GET request to our appstore/product endpoint. Pass id with the numeric App Store id (or an apps.apple.com URL, which we parse for the id), or pass bundleId with the reverse-DNS bundle such as com.spotify.client. Either key returns the same full listing. Add country to read a specific storefront.

Do I need an Apple developer account or API key?

No. You only need an appstorescraperapi key, passed as the api_key query parameter. There is no Apple developer account, no App Store Connect access, and no OAuth. The endpoint reads the public listing that any visitor can see, and the free tier includes 1,000 requests per month.

Can I get the exact app rating instead of the rounded star?

Yes. The rating field returns the full decimal average, for example 4.78005, and rating_current_version returns the average for the current build. That is the precise number behind the rounded star shown on the App Store page, which is what you need for tracking small movements over time.

Can I read another country's App Store?

Yes. Set the country parameter to a two-letter ISO storefront code. The default is us. Price, availability, and localized fields reflect the storefront you request, so you can compare a listing across regions.

How fast is the Apple App Store scraper API?

Median end-to-end response is about 2.6 seconds, including proxy routing, anti-bot handling, retries, and parsing. Apple's own lookup endpoint throttles at roughly 20 requests per minute per IP and returns a 403 once you exceed it, which is exactly the limit our proxy rotation and retries absorb for you.

Stream apple app store api as JSON
Spin up free with 1,000 requests.
Get a free API key Endpoint catalog