Echo Lab Tools › App Store ranks
Track App Store keyword rankings and top charts for any app, in any country
The App Store rank tracker is an Apify Actor that returns where iPhone and iPad apps rank in Apple's keyword search results and top charts, for any storefront, as JSON: one row per app, keyword or chart, and country, with the rank or found: false.
What you get
- Keyword ranks in Apple search (top 200 results per keyword) for apps you track
- Top Free / Paid / Grossing charts for iPhone and iPad, New Apps and Top Free Mac, by category
- App ID, name, developer, price and link on ranked rows; rating, rating count and version on keyword rows
Price: $1.00 per 1,000 rows + $0.00005 per runLogin needed: noRuns on: Apify (API, schedule, MCP)
How it works
You send a JSON input with storefronts (us, gb, jp, …), the charts and categories you care about, search keywords, and the App Store IDs or URLs of the apps you want to track. The Actor reads three official, public Apple endpoints: the iTunes RSS top-chart feeds, the iTunes Search API and the iTunes Lookup API. There is no login, no proxy and no browser, which is why a run finishes in seconds and fits in 256 MB.
For every keyword and country it records where each tracked app sits in Apple's top 200 search results. For every chart it records the position in the top 100 (Apple publishes at most 100 per chart). If a tracked app is missing, you still get a row with found: false and rank: null, so "not ranked" shows up in your history instead of a silent gap. Turn on trackedAppsOnly and you only get (and pay for) the rows of your own apps and competitors.
Schedule it daily in Apify and send the dataset to Google Sheets, a database or a webhook, and you have a rank history without a subscription.
Sample output
This is one row from a real run on the Apify platform (run x04EccUAPpIt589Fl, build 0.1.7, 2026-11-06), tracking three to-do apps in the US and UK:
{
"type": "keyword",
"country": "us",
"chart": null,
"genreId": null,
"genreName": null,
"keyword": "to do list",
"rank": 3,
"isTracked": true,
"found": true,
"appId": "572688855",
"appName": "Todoist: To Do List & Calendar",
"developer": "Todoist Inc.",
"bundleId": "com.todoist.ios",
"price": 0,
"currency": "USD",
"category": "Productivity",
"categoryId": "6007",
"releaseDate": "2012-11-18T08:00:00Z",
"appUrl": "https://apps.apple.com/us/app/todoist-to-do-list-calendar/id572688855",
"iconUrl": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/28/db/77/28db7718-8ed9-e73d-cce4-88879b0e87ae/AppIcon-0-0-1x_U007epad-0-1-85-220.png/512x512bb.jpg",
"rating": 4.8,
"ratingCount": 130495,
"version": "26.10.35",
"currentVersionReleaseDate": "2026-11-02T10:57:02Z",
"contentRating": "4+",
"sizeBytes": 393548800,
"minimumOsVersion": "17.0",
"listSize": 190,
"checkedAt": "2026-11-06T04:02:38Z"
}
The same run returned 24 rows. Here are all the keyword ranks it found:
| Store | Keyword | Todoist | TickTick | Things 3 |
|---|---|---|---|---|
| US | “to do list” | #3 | #8 | #96 |
| US | “task manager” | #6 | #7 | #15 |
| US | “planner” | #74 | #6 | not in top 186 |
| GB | “to do list” | #4 | #10 | #71 |
| GB | “task manager” | #4 | #5 | #30 |
| GB | “planner” | #63 | #8 | not in top 187 |
The run also checked the Top Free iPhone chart for Productivity: none of the three apps was among the 98 apps Apple listed in either store that day (Things 3 is a paid app, so it cannot appear in a free chart). Those six chart rows came back as found: false, which is exactly the kind of answer a tracker needs.
A second run (g9JChKd6tIrUHRccg) pulled the Top Grossing iPhone Games chart in Japan with app details: 50 rows, led by 勝利の女神:NIKKE (Level Infinite) and eFootball™ (KONAMI).
Output fields
| Field | Type | Example | Meaning |
|---|---|---|---|
type |
string | keyword |
chart or keyword |
country |
string | us |
Storefront code (ISO 3166-1 alpha-2) |
chart, genreId, genreName |
string / null | top-free-iphone, 6007 |
Chart and category; null on keyword rows |
keyword |
string / null | to do list |
Search term; null on chart rows |
rank |
integer / null | 3 |
1-based position; null when a tracked app is not in the list |
isTracked, found |
boolean / null | true, true |
Whether the app came from trackAppIds, and whether it was found |
appId, appName, developer, bundleId |
string | 572688855 |
App identity |
price, currency, category |
number / string | 0, USD |
From Apple, on ranked rows |
rating, ratingCount, version |
number / string | 4.8, 130495 |
On ranked keyword rows, and on chart rows with includeAppDetails |
listSize |
integer | 190 |
How many apps the chart or search returned |
checkedAt |
string | 2026-11-06T04:02:38Z |
UTC timestamp |
How much does it cost to track App Store rankings?
Pricing is per result: $1.00 per 1,000 rows ($0.001 per row) plus an Actor start fee of $0.00005 per run. Apify platform usage is included, so the cost of a run is simply rows × $0.001.
Worked example, using the real run above: 3 apps × (3 keywords + 1 chart) × 2 countries = 24 rows. 24 × $0.001 + $0.00005 ≈ $0.024 per run, or about $0.72 per month if you run it every day. A one-off snapshot of the top 100 of one chart in one country is 100 rows, about $0.10. Ten countries × top 100 is 1,000 rows, $1.00. You can set a maximum cost per run in Apify's run options and the Actor stops cleanly when it is reached.
Limits you should know about
- Keyword ranks are approximate. They follow the order of Apple's public iTunes Search API. That is close to, but not always identical with, what a person sees in the App Store app: personalisation, Search Ads and A/B tests are not reflected. The order is consistent from day to day, which is what matters for trends.
- Top 100 per chart, top 200 per keyword. Apple publishes no deeper positions, so an app at #240 for a keyword is reported as not found.
- Apple rate-limits search to roughly 20 requests per minute per IP. The Actor waits 3 seconds between search requests by default and retries on 403/429, so hundreds of keyword × country pairs take minutes, not seconds.
- Some charts are empty on Apple's side. Top Paid and Top Grossing Mac return nothing, so only Top Free Mac is offered; the Catalogs, Stickers, Games: Dice and Games: Educational categories also return empty feeds (checked November 2026). New Apps charts ignore the category.
- No Google Play, no estimates. It reports positions Apple publishes. It does not estimate downloads, revenue or keyword search volume.
API: call it from code
Replace $APIFY_TOKEN with your Apify API token. This runs the Actor synchronously and returns the dataset rows in the response (synchronous runs are capped at 300 seconds, so use the asynchronous run endpoint for big inputs):
curl -X POST "https://api.apify.com/v2/acts/echolab~app-store-rank-tracker/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"countries": ["us", "gb"],
"keywords": ["to do list", "task manager", "planner"],
"trackAppIds": ["572688855", "626144601", "904237743"],
"trackedAppsOnly": true
}'
The same in Python with the official apify-client package:
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("echolab/app-store-rank-tracker").call(run_input={
"countries": ["us", "gb"],
"charts": ["top-free-iphone"],
"genres": ["Productivity"],
"keywords": ["to do list", "planner"],
"trackAppIds": ["https://apps.apple.com/us/app/id572688855"],
"trackedAppsOnly": True,
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["country"], row["keyword"] or row["chart"], row["rank"], row["found"])
AI agents can call it through Apify's MCP server or the same REST API with this JSON input.
App Store rank tracker vs. alternatives
| Option | Good for | Trade-off |
|---|---|---|
| This Actor | Raw rank positions for a known list of apps and keywords, in many countries, paid per row | No download, revenue or keyword-volume estimates; no Google Play |
| ASO suites (Appfigures, AppTweak, Sensor Tower and similar) | Keyword volume scores, download and revenue estimates, Google Play, dashboards | Subscription pricing; more than you need if you only want positions |
| Calling the iTunes Search API yourself | Free; full control | You write the paging, rate-limit handling, retries, "not found" logic and storage yourself |
When not to use it: if you need search popularity scores, estimated installs or revenue, or Google Play data, use an ASO suite. If you check two keywords once a month, search the App Store by hand. This tool is for repeatable, cheap, many-country position tracking that ends up in your own spreadsheet or database.
FAQ
Do I need an Apple developer account or API key? No. Only public Apple endpoints are used.
Which countries work? Any App Store storefront, as a two-letter code. In November 2026 all 156 storefronts in the built-in list returned chart data.
Can I track competitors? Yes. Put their App Store IDs or URLs in trackAppIds next to your own.
Open the App Store rank tracker on Apify to see the full input schema. Apify's free plan includes $5 a month to spend in the Apify Store (apify.com/pricing, checked 2026-11-06), which covers 5,000 rows of this tool.
Changelog
- 2026-11-06 — build 0.1.8: an empty Apple chart no longer produces rows; a run with zero rows ends as failed with an explanation. New Apps charts are fetched once per country, because Apple ignores the category for them.
- 2026-11-06 — checked the Top Free iPhone chart in all 156 storefronts in the built-in list: every one returned data.
- 2026-11-04 — switched to pay-per-result pricing ($1.00 per 1,000 rows).
- 2026-11-04 — first public release on the Apify Store.