App Store Rank Monitor — iOS Top Charts as JSON avatar

App Store Rank Monitor — iOS Top Charts as JSON

Pricing

from $10.00 / 1,000 chart row emitteds

Go to Apify Store
App Store Rank Monitor — iOS Top Charts as JSON

App Store Rank Monitor — iOS Top Charts as JSON

Track any iOS app's position in Apple's App Store charts day by day. Diffs each chart against the previous run and emits only the rows that moved, with rank, previous rank and the delta. Top Free, Top Paid and Top Grossing, 150+ storefronts, optional category filter, no key or proxy.

Pricing

from $10.00 / 1,000 chart row emitteds

Rating

0.0

(0)

Developer

Oaida Adrian

Oaida Adrian

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Track where an iOS app sits in Apple's App Store charts and get a row each time it moves. Apple publishes every storefront chart as a public RSS/JSON feed; this Actor reads that feed, remembers the last ranking, and emits only the apps whose position changed — with the old position folded into a single rank_delta number.

No API key, no login, no proxies, no scraping iOS itself. Top Free, Top Paid and Top Grossing charts, 150+ storefronts, optional category filter.

Why a rank tracker and not a scraper

Apple already publishes the chart. What nobody gets for free is the history: where the app was yesterday, and by how much it moved. That delta is the product — rank alone is a number you can read on your phone, rank_delta is what tells you a release, a price change or a competitor's ad buy actually worked.

Because the Actor keeps its own cursor between runs, a daily schedule costs one row per app that actually moved. On a quiet day that is zero rows.

What you get per row

{
"country": "us",
"chart": "topfreeapplications",
"category": null,
"rank": 3,
"rank_delta": -2,
"app_id": "6741796873",
"name": "TikTok Pro - Events",
"artist": "TikTok Ltd.",
"url": "https://apps.apple.com/us/app/tiktok-pro-events/id6741796873?uo=2",
"price": "Get",
"currency": "USD",
"is_new": false,
"captured_at": "2026-10-28T20:02:25+00:00"
}

Read rank_delta the way you read a share price: positive = climbed (was 5, now 3 → +2), negative = fell (was 3, now 5 → -2), null = the app was not in the previous run's chart (is_new: true). rank_delta: 0 only appears with emit: "all", which emits the whole chart every run instead of just the movers.

FieldMeaning
countryStorefront the chart was read from (us, gb, de, ro…)
charttopfreeapplications, toppaidapplications or topgrossingapplications
categoryApple genre id the chart was filtered by, null for the overall chart
rankPosition now, 1 = top
rank_deltaPlaces gained since the previous run — negative means it fell
app_id / name / artist / urlIdentity of the app, straight from Apple
price / currencyPrice label as Apple shows it (Get, $1.99)
is_newApp was absent from the last run's chart (new entry, or it re-entered)
captured_atWhen this run read the chart (ISO 8601, UTC)

Input

{
"countries": ["us", "ro"],
"chart": "topfreeapplications",
"category": "6007",
"limit": 200,
"emit": "changes"
}
FieldDescription
countriesStorefront codes to track (default ["us"]). Each is an independent chart with its own cursor.
charttopfreeapplications (default), toppaidapplications or topgrossingapplications.
categoryOptional Apple genre id — 6007 Productivity, 6014 Games, 6016 Entertainment, 6015 Finance, 6012 Lifestyle. Empty = overall chart.
limitChart depth, 1–200 (default 100). Apple's feed refuses anything deeper than 200.
emitchanges (default) = only rows that moved. all = the entire chart every run, for building a full snapshot history.

Run it daily

  1. Set Input once (e.g. countries: ["us"], chart: "topfreeapplications").
  2. Add a Schedule in the Apify console — daily is Apple's own refresh cadence for these feeds, and hourly gains nothing.
  3. Point a webhook or a Zapier/Make/n8n step at the dataset to alert on a drop: filter rank_delta < -5 and you have a "something broke or a competitor launched" alarm for free.

The first run is a baseline: every app in the chart is emitted with is_new: true and rank_delta: null. Deltas start on the second run.

Use it from the API

$curl -X POST "https://api.apify.com/v2/acts/darknezz~app-store-rank-monitor/run-sync-get-dataset-items?token=YOUR_TOKEN" -H "Content-Type: application/json" -d '{"countries":["us"],"chart":"topfreeapplications","limit":200}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("darknezz~app-store-rank-monitor").call(
run_input={"countries": ["us"], "chart": "topfreeapplications", "limit": 200})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["rank"], row["name"], row["rank_delta"])

Works with Zapier, Make, n8n and MCP-enabled AI agents like any other Actor.

Limitations

  • Apple's chart feed is undocumented. It is Apple's own marketing feed, published for years and used by everything from blogs to App Store link widgets, but it is not a contract: Apple has never published a schema for it and can change or lag it without notice. When a storefront returns nothing, or the request fails, the run logs a warning, emits no rows and keeps the previous ranking, so the next run still knows what to diff against — a lagging feed delays your delta, it never wipes your history. Nothing is charged for a run that emits no rows.
  • It cannot recover the history you never collected. There is no back-catalogue of past chart positions on Apple's side; the cursor starts building the day you schedule it.
  • It cannot see the app that fell out of the tracked depth. Keep limit above the app's worst plausible position — an app below position 200 is simply absent from the chart, not ranked 201st.
  • It does not fetch reviews or app details — see Related data below.

Pricing

$0.01 per row emitted, plus a $0.01 start fee per run (one event per GB of memory — this Actor runs on 1 GB). Rows are only charged when they are actually written: a daily run with nothing moving costs the start fee and nothing else, and the first baseline run of a 200-deep chart costs $2.01 once. Apify's standard platform compute costs still apply.

FAQ

Where does the data come from? Apple's public marketing RSS feeds (itunes.apple.com/{country}/rss/...) — the same feeds Apple has published for years for exactly this purpose. No reverse engineering, no private API, nothing to break when the web app changes.

Do I need the App Store Connect API? No. That API only covers apps you own; this tracks any app, including competitors'.

How fresh is it? Apple refreshes these charts a few times a day. Daily is the useful cadence; more frequent runs mostly return zero changes (and cost only the start fee).

Why is my app missing? Either it is beyond limit, or it is not charting in that storefront/category at all. Widen the depth, then check the country.

Can I diff a whole quarter of positions? Yes — run with emit: "all" and keep the dataset, or use Apify's dataset exports. emit: "changes" is for cheap continuous monitoring; all is for building your own history table.