~ / endpoints / Search API

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.

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

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.

step one

Send one request to the App Store Search Scraper API

cURL
curl "https://api.appstorescraperapi.com/api/v1/appstore/search?term=spotify&limit=10&api_key=$API_KEY"
Python
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 list

Parameters

ParameterRequiredDefaultNotes
termrequired-The search keyword or app name to look up, e.g. spotify. This is the primary parameter.
countryoptionalusTwo-letter ISO storefront country. Defaults to us. Set it to rank results for another region's App Store.
limitoptional10Maximum number of results to return. Defaults to 10, hard cap 200.
urloptional-Pass an itunes.apple.com search URL and we run it as the query. For most cases term is simpler.
api_keyrequired-Your API key, passed as a query parameter. Get one free at signup.
data back

Reading the App Store Search Scraper API response

200 OK
{
  "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"
    }
  ]
}
FieldTypeDescription
querystringThe search term echoed back from your request.
pageintegerThe result page number for this response, starting at 1.
total_resultsintegerApple's reported result count for the query.
resultsarrayRanked app results, each an object with the fields below.
positionintegerThe app's rank in the results, starting at 1.
idstringThe App Store track id for the result. track_id mirrors it.
titlestringThe app's display name.
seller_namestringThe developer or seller behind the app.
primary_genrestringThe app's primary category. A genres array carries all categories.
pricenumberNumeric price in the storefront currency. formatted_price gives the display string.
ratingnumberAverage user rating for the app, as a full decimal.
reviews_countintegerTotal number of ratings for the app.
artwork_urlstringURL of the app icon for the result.
urlstringThe canonical apps.apple.com listing URL for the app.
common builds

What you can ship with it

>

Keyword rank tracking

Run a set of target keywords on a schedule and store each app's position to chart how your listing rises or falls in App Store search.
>

Competitor discovery

Search a category term to see which apps rank for it, then feed their ids to the product endpoint for full detail on each rival.
>

ASO keyword research

Compare which apps surface for candidate keywords, their ratings, and their categories to decide which terms are worth targeting.
>

Market mapping

Pull the top results for a niche to size the field: how many apps compete, what they charge, and how strong their ratings are.
>

Brand monitoring

Search your brand name to catch copycats and unofficial apps ranking alongside your own listing.
>

Search-backed catalogs

Power an internal app-discovery tool by querying the endpoint and rendering the ranked results with icons, ratings, and prices.
why it works

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

One keyword returns up to 200 apps with position, id, title, developer, rating, price, and genre already parsed.
*

Storefront targeting

The country parameter ranks results as seen from any Apple storefront, so you can track a keyword region by region.
*

Anti-bot and proxy rotation

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

Auto-retry across pools

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

Validated JSON schema

Regression-tested fields return in the same shape on every call, so your parser does not break on Apple layout changes.
*

Feeds the product endpoint

Each result carries the app id, so you can hand it straight to appstore/product for the full listing when you need depth.
comparison table

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

Our APIDIY (requests / headless)iTunes Search direct
Ranked keyword resultsYes, parsed and orderedNo stable public results pageYes, raw JSON
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
Storefront targetingcountry parameterYou set it per requestcountry parameter
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 App Store search scraper?

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.

How do I scrape App Store search results by keyword?

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.

How many results can I get per search?

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.

Can I search a specific country's App Store?

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.

Do I need an Apple key to scrape App Store search?

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.

How fast is the App Store search scraper API?

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.

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