Primary genre
primaryGenre
Optional
The first genre, or the Android category. Localised by the storefront.
App Store Keyword Rank Tracker — iOS & Google Play
Pricing
from $0.18 / 1,000 ranking rows
Where any app ranks for any keyword on the App Store and Google Play, in 54 storefronts. Reads Apple's own store search — not the iTunes Search API. Rank, rank change vs your last run, competitors above you, autocomplete suggestions and a free competition readout, in one dataset. No API key.
OK
ok
Optional
True on a ranking, suggestion or summary row. False on a diagnostic row, which explains why one keyword, country or app could not be read. Diagnostic rows are never charged.
Row type
rowType
Optional
rank one position in the ranked list. rank-check where one of your apps sits. rank-change a position that moved, entered or dropped out since the previous run. suggestion one autocomplete term. keyword-summary the free competition readout. diagnostic a free explanation of something that could not be read.
Input entry
input
Optional
The entry this row came from — the keyword as you typed it, or the app reference on a rank-check row.
Keyword
keyword
Optional
The search term, trimmed and lower-cased.
Prefix
prefix
Optional
On a suggestion row, the prefix that was typed into the store search box. Null on every other row type.
Country
country
Optional
Two-letter ISO 3166-1 country code this reading was taken in.
Storefront id
storefrontId
Optional
Apple's numeric storefront id the request was sent with. Null on Android rows.
Storefront answered
storefrontCc
Optional
The storefront Apple actually answered for, read out of the response body. A paid row only exists when it matches the country that was asked for. On the one response shape that states no country — a storefront with no results at all — this falls back to the country asked for, whose storefront id Apple did confirm.
Platform
platform
Optional
ios or android.
Device
device
Optional
Always iphone on iOS rows: these are iPhone storefront ranks. iPad and Mac ranks are not in this version. Null on Android rows.
Language
language
Optional
The language the store answered in. On Apple this is the storefront's own default unless you set language, and it is read out of the response.
Rank source
rankSource
Optional
native for Apple's own store search, itunes-search-api for the public iTunes Search API. Null on Android rows.
Detail source
detailSource
Optional
Where this row's numbers came from. itunes-lookup on almost every iOS row: Apple's own search rounds ratings to the half star, so every ranked position is filled from the public lookup instead and the whole column comes out at one precision. native-search marks a position the lookup did not return, which keeps Apple's own record rather than a blank. itunes-search-api and play-search are the other two rank sources.
Checked at
checkedAt
Optional
When the search itself was made. Differs from scrapedAt when detail was filled from a batched lookup afterwards.
Rank
rank
Optional
The position, 1-based. Null when the app was looked for and not found within checkedDepth.
Rank status
rankStatus
Optional
ranked the app was found at this position. not-in-results it was looked for to checkedDepth and was not there. check-failed never appears on a paid row — a failed check produces a free diagnostic and leaves the stored history alone.
Checked depth
checkedDepth
Optional
How many positions were actually read. On Android this is one search page, which is fewer than depth in most markets.
Total results
totalResults
Optional
What the store said the whole result set was — Apple's own count on iOS, the parsed card count on Android, because the Play page states no total.
Is one of your apps
isTargetApp
Optional
True on a row for an app you listed in apps.
Low relevance
lowRelevance
Optional
True when Apple returned 12 or fewer results for this keyword: the ranking is real but the field is thin. Null when the result set was normal or the store was Google Play.
App id
appId
Optional
Apple's numeric track id, or the Android package name.
Bundle id
bundleId
Optional
Reverse-DNS bundle id (iOS) or package name (Android).
App name
appName
Optional
The app's name in this storefront's language.
Subtitle
subtitle
Optional
The App Store subtitle. Only Apple's own search states it, and only for the top 8 positions, so it is read from there and is null below that. The iTunes endpoints and Google Play search cards have no subtitle column at all.
Developer
developer
Optional
Publisher name as the store shows it.
Developer id
developerId
Optional
Apple's numeric artist id. Null on Android: search cards carry no developer id.
Developer URL
developerUrl
Optional
Link to the developer's store page. Null on Android search cards.
Price
price
Optional
Numeric price in the storefront currency. 0 for a free app.
Currency
currency
Optional
ISO currency code. Null on Apple's native search, which states a formatted price only.
Price, formatted
priceFormatted
Optional
The price as the store renders it. Null on Google Play free apps, which ship an empty string because the button text is rendered separately.
Free
free
Optional
True when the price is zero.
Rating
rating
Optional
Average star rating, unrounded. On iOS this comes from Apple's public lookup rather than from the search response, which rounds to the half star — so the column reads 4.84119, not 5, all the way down. A row marked detailSource: "native-search" is the exception and carries Apple's rounded value.
Rating count
ratingCount
Optional
How many ratings the average is over, from the same source as rating. Null on every Android row: Play search cards carry a rating but no count.
Genres
genres
Optional
Every genre the store files the app under. One entry on Android, which states a single category per card.
Primary genre
primaryGenre
Optional
The first genre, or the Android category. Localised by the storefront.
Release date
releaseDate
Optional
When the app was first released, as a UTC instant. Null on Android search cards.
Version
version
Optional
Current version string. Null on Android search cards.
Minimum OS
minimumOs
Optional
Lowest OS version the app supports. Null on Android search cards.
Content rating
contentRating
Optional
Age rating as the store states it. Null on Android search cards.
Has in-app purchases
hasInAppPurchases
Optional
One of the three fields only Apple's own search states, so it is read from there — for the top 8 positions. Null elsewhere.
Installs
installs
Optional
Google Play's install band, locale-formatted as Play writes it. Null on iOS: Apple publishes no install count.
Device families
deviceFamilies
Optional
Which Apple devices the app runs on. Like subtitle and hasInAppPurchases, only Apple's own search states it, so it is present for the top 8 positions and null below.
Icon URL
iconUrl
Optional
The largest icon the store offers.
App URL
appUrl
Optional
The app's public store page.
Previous rank
previousRank
Optional
Where this app sat on the previous distinct day this keyword was checked. Monitor mode only.
Previously checked
previousCheckedAt
Optional
The UTC date previousRank was read on.
Rank change
rankChange
Optional
Positive when the app climbed: rank 8 to rank 3 is +5. Null when there is nothing to compare against, or when the app left the results.
Trend
trend
Optional
up, down, flat, new (first time seen) or dropped (was ranked, is not any more).
First seen
firstSeenAt
Optional
UTC date this app first appeared for this keyword.
Last seen
lastSeenAt
Optional
UTC date of this reading.
Best rank
bestRank
Optional
Best position ever recorded for this app on this keyword.
Worst rank
worstRank
Optional
Worst position ever recorded.
Days tracked
daysTracked
Optional
How many distinct UTC days this app has been observed for this keyword. Re-running on the same day does not increment it.
Top 3
top3
Optional
Who is at positions 1–3 for this keyword: {rank, appId, appName, developer, rating, ratingCount}. Set on rank-check rows.
Suggestion
suggestion
Optional
One term the store's own search box suggests for the prefix.
Suggestion position
position
Optional
Where the term sat in the suggestion list, 1-based.
Suggestion URL
suggestionUrl
Optional
The search the store would run if the suggestion were tapped.
Result count
resultCount
Optional
Ranked positions read for this keyword, country and platform. 0 when Apple's fuzzy fallback fired.
Top 10 average rating
top10AvgRating
Optional
Mean star rating of the top 10, over the positions that state one.
Top 10 average rating count
top10AvgRatingCount
Optional
Mean number of ratings across the top 10. Null on Android: Play search cards carry no rating count, and averaging the few that do would be a different statistic.
Top 10 median rating count
top10MedianRatingCount
Optional
Median number of ratings across the top 10. Null on Android, for the same reason.
Top 10 genres
top10Genres
Optional
Genre mix of the top 10 as {genre, count}, most common first.
Tracked apps ranked
trackedAppsRanked
Optional
How many of your apps were found within checkedDepth. Null when you tracked none.
Tracked apps missing
trackedAppsMissing
Optional
How many of your apps were not in the results.
Fuzzy fallback detected
fuzzyFallbackDetected
Optional
True when Apple answered a term that matches nothing with a handful of unrelated apps. Those are not published as ranks 1–9; the row count is 0 and a free diagnostic says so.
Error
error
Optional
On a diagnostic row, what went wrong and what to do about it. Null on every row that worked.
Error type
errorType
Optional
no-results, unknown-storefront, blocked, app-not-found, invalid-input, timeout, unsupported, unavailable, baseline or state-unavailable. Every one of them is free.
Scraped at
scrapedAt
Optional
When this row was built.
Source
source
Optional
apple-native-search, itunes-search-api, itunes-lookup, apple-hints, play-search or play-suggest.
Source URL
sourceUrl
Optional
The exact public URL this row was read from.
Depth clamped
depthClamped
Optional
On a summary row: true when depth asked for more positions than the store gave. Google Play ships one search page and no continuation.