App, game and podcast data
Search the App Store for up to 200 keywords per run and get the ranked results with full listing data: position, title, developer, rating, price, genre, version and more, per storefront. Track your own apps' rank per keyword. Pay only for delivered rows.
One ranked app row delivered with full listing data, including a tracked app reported as not ranked. Keywords that fail are never charged.
ACTOR=steadydata~app-store-search URL="https://api.apify.com/v2/acts/$ACTOR/run-sync-get-dataset-items" curl -X POST "$URL?token=$APIFY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"keywords": ["fitness tracker", "habit tracker"], "country": "us", "device": "iphone"}' # rows come straight back as JSON, one object per delivered row
| Field | Name | What it does |
|---|---|---|
keywordsrequired | Keywords | Search terms, one per row, up to 200. Each keyword is one App Store search; a keyword without results comes back as a free error record. |
country | Storefront country | Two-letter storefront (us, gb, nl, de ...). Rankings, prices and availability differ per storefront. |
language | Language | Listing language as Apple codes it, e.g. en_us, nl_nl, de_de. Leave empty for the storefront default. |
device | Device | Which App Store to search: iPhone, iPad or Mac apps. |
maxResultsPerKeyword | Max results per keyword | Cost ceiling per keyword, in Apple's ranking order. Apple returns at most 190 apps per search. One delivered row is one charged event. |
trackApps | Track only these apps | Optional. App ids or bundle ids of your own apps: only their rows are delivered, with the rank position per keyword. An app that does not rank in the fetched range is delivered with an empty position, which is the answer a rank tracker needs, and counts as one row. |
| Field | Type |
|---|---|
keyword | string, null |
position | integer, null |
appId | integer, null |
bundleId | string, null |
url | string, null |
title | string, null |
developer | string, null |
developerId | integer, null |
developerUrl | string, null |
description | string, null |
releaseNotes | string, null |
score | number, null |
ratings | integer, null |
scoreCurrentVersion | number, null |
ratingsCurrentVersion | integer, null |
price | number, null |
priceText | string, null |
currency | string, null |
isFree | boolean, null |
genre | string, null |
genreId | integer, null |
genres | array, null |
contentRating | string, null |
advisories | array, null |
version | string, null |
minimumOsVersion | string, null |
fileSizeBytes | integer, null |
released | string, null |
updated | string, null |
languages | array, null |
supportedDevicesCount | integer, null |
isGameCenterEnabled | boolean, null |
iconUrl | string, null |
screenshotUrls | array, null |
ipadScreenshotUrls | array, null |
country | string, null |
device | string, null |
status | string, null |
input | string, null |
errorCode | string, null |
error | string, null |