~ / 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

Why it is hard

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.

Quickstart

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"])

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.

Use it for

>

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.

Under the hood

Pricing

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.

Get apple app store api as JSON
Free plan, 1,000 requests. No credit card required.
Get a free API key All endpoints