App Store Search Scraper API
Our App Store search scraper turns any keyword into the ranked iOS results Apple shows: position, app id, title, developer, rating, review count, price, and genre for each hit, returned as structured JSON from one request.
The hard part of App Store Search data
App Store keyword rankings are personalized and rendered in-app, so there is no public results page you can reliably parse from a browser. Apple's iTunes Search API returns clean JSON but throttles near 20 requests per minute per IP and answers a 403 block page the moment you go over.
Send one request to the App Store Search Scraper API
curl "https://api.appstorescraperapi.com/api/v1/appstore/search?term=spotify&limit=10&api_key=$API_KEY" import requests
BASE = "https://api.appstorescraperapi.com"
API_KEY = "YOUR_API_KEY"
# One keyword in, the ranked iOS app results out as JSON.
data = requests.get(
f"{BASE}/api/v1/appstore/search",
params={
"term": "spotify", # the search keyword or app name
"country": "us", # storefront, two-letter ISO code
"limit": 10, # up to 200 results
"api_key": API_KEY,
},
timeout=30,
).json()
print(data["query"], "-", data["total_results"], "results")
for app in data["results"]:
print(app["position"], app["title"], app["seller_name"], app["rating"]) Parameters
| Parameter | Required | Default | Notes |
|---|---|---|---|
term | required | - | The search keyword or app name to look up, e.g. spotify. This is the primary parameter. |
country | optional | us | Two-letter ISO storefront country. Defaults to us. Set it to rank results for another region's App Store. |
limit | optional | 10 | Maximum number of results to return. Defaults to 10, hard cap 200. |
url | optional | - | Pass an itunes.apple.com search URL and we run it as the query. For most cases term is simpler. |
api_key | required | - | Your API key, passed as a query parameter. Get one free at signup. |
Reading the App Store Search Scraper API response
{
"query": "spotify",
"page": 1,
"total_results": 9,
"results": [
{
"position": 1,
"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.78001,
"reviews_count": 40698000,
"content_advisory_rating": "12+",
"version": "9.1.60",
"minimum_os_version": "16.1",
"artwork_url": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/50/c5/33/50c533fe-3854-b5ce-92c5-b2a1cb4fafe2/AppIcon.png/512x512bb.jpg",
"kind": "software",
"url": "https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580?uo=4"
},
{
"position": 2,
"id": "1108187390",
"track_id": "1108187390",
"bundle_id": "com.apple.Music",
"title": "Apple Music",
"seller_name": "Apple Inc.",
"artist_id": "284417353",
"primary_genre": "Music",
"genres": ["Music"],
"price": 0,
"formatted_price": "Free",
"currency": "USD",
"rating": 4.85797,
"reviews_count": 2883178,
"content_advisory_rating": "12+",
"version": "2.9",
"minimum_os_version": "10.0",
"artwork_url": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/31/6c/c3/316cc33a-5e7d-8902-58eb-f4e16c5d9440/music.png/512x512bb.jpg",
"kind": "software",
"url": "https://apps.apple.com/us/app/apple-music/id1108187390?uo=4"
}
]
} | Field | Type | Description |
|---|---|---|
query | string | The search term echoed back from your request. |
page | integer | The result page number for this response, starting at 1. |
total_results | integer | Apple's reported result count for the query. |
results | array | Ranked app results, each an object with the fields below. |
position | integer | The app's rank in the results, starting at 1. |
id | string | The App Store track id for the result. track_id mirrors it. |
title | string | The app's display name. |
seller_name | string | The developer or seller behind the app. |
primary_genre | string | The app's primary category. A genres array carries all categories. |
price | number | Numeric price in the storefront currency. formatted_price gives the display string. |
rating | number | Average user rating for the app, as a full decimal. |
reviews_count | integer | Total number of ratings for the app. |
artwork_url | string | URL of the app icon for the result. |
url | string | The canonical apps.apple.com listing URL for the app. |
What you can ship with it
Keyword rank tracking
Competitor discovery
ASO keyword research
Market mapping
Brand monitoring
Search-backed catalogs
Why our App Store Search Scraper API earns its keep
Send a keyword and we return the ranked iOS results as clean JSON, with no Apple key and no per-IP rate limit for you to manage. Every request runs through rotating proxies, anti-bot handling, and retries across proxy tiers, returning a validated, stable schema in about 2.6 seconds.
Ranked results in one call
Storefront targeting
Anti-bot and proxy rotation
Auto-retry across pools
Validated JSON schema
Feeds the product endpoint
App Store Search Scraper API vs official and roll-your-own
| Our API | DIY (requests / headless) | iTunes Search direct | |
|---|---|---|---|
| Ranked keyword results | Yes, parsed and ordered | No stable public results page | Yes, raw JSON |
| Setup | API key only | Proxies, headless browser, parsers | None, but bring your own IPs |
| Rate limits | By plan, retries handled | Bound by your proxy pool | Around 20 req/min/IP, then 403 |
| Storefront targeting | country parameter | You set it per request | country parameter |
| Anti-bot and proxies | Built in | You build and maintain it | Not included |
| Output | Validated JSON, stable schema | Whatever you parse | Raw Apple JSON, field names differ |
From free to high volume
| Plan | Price | Best for |
|---|---|---|
| Free | 1,000 requests | Testing and small jobs |
| Pro | $0.60 / 1k | Production workloads |
| Pay-as-you-go | $0.90 / 1k | Spiky or one-off volume |
Median response 2.6s. You only pay for successful requests.
FAQ
An App Store search scraper is a tool that returns the ranked iOS app results for a keyword as structured data. Our App Store search scraper API takes a search term and returns each result's position, app id, title, developer, rating, review count, price, and genre as JSON from a single request, so you do not parse an in-app results screen yourself.
Send one GET request to our appstore/search endpoint with term set to your keyword and your API key. Optionally add country for a specific storefront and limit for how many results you want, up to 200. We handle proxies, anti-bot checks, and retries and return the ranked results as clean JSON.
Up to 200 per call. The limit parameter defaults to 10 and accepts any value up to the 200 hard cap that Apple's search endpoint supports. Each result includes the app id, so you can pass the ids you care about to the product endpoint for full detail.
Yes. Set the country parameter to a two-letter ISO storefront code, for example gb or de. The default is us. Rankings, prices, and availability reflect the storefront you request, which lets you track how a keyword ranks in different regions.
No. You only need an appstorescraperapi key passed as the api_key query parameter. There is no Apple developer account and no OAuth. The endpoint reads Apple's public search results, and the free tier includes 1,000 requests per month.
Median end-to-end response is about 2.6 seconds, including proxy routing, anti-bot handling, retries, and parsing. Apple's search endpoint throttles at roughly 20 requests per minute per IP and returns a 403 past that, which is the limit our proxy rotation and retries handle so your search jobs keep running.