App Store Monitor — Competitor iOS App Tracking avatar

App Store Monitor — Competitor iOS App Tracking

Pricing

from $10.00 / 1,000 app change detecteds

Go to Apify Store
App Store Monitor — Competitor iOS App Tracking

App Store Monitor — Competitor iOS App Tracking

Track any iOS app across storefronts and get only what changed: new versions with release notes, price moves, rating shifts, delistings and fresh reviews.

Pricing

from $10.00 / 1,000 app change detecteds

Rating

0.0

(0)

Developer

Mohanad Alshaka

Mohanad Alshaka

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Watch any iOS app and get only what changed since your last run: new versions with their release notes, price moves, rating shifts, delistings, and the fresh reviews behind a rating drop.

Point it at your competitors, schedule it daily, and each run returns a short list of what moved instead of a fresh dump of the same app records.

Why this one is reliable

It reads Apple's own public endpoints. No key, no login, no proxies, no browser, nothing scraped from a page layout that changes when Apple restyles the store.

lookup https://itunes.apple.com/lookup?id=<id>&country=<cc>
search https://itunes.apple.com/search?term=<q>&entity=software&country=<cc>
reviews https://itunes.apple.com/<cc>/rss/customerreviews/page=<n>/id=<id>/sortBy=mostRecent/json

Storefronts are tracked separately, because they differ

Price, currency and rating are per storefront. Measured on the same app on the same day, 13 September 2026:

StorefrontRatingRatings
us4.6929,477,391
gb4.704,207,382
de4.592,484,997
ae4.50955,986
sa4.342,350,179

A tool that reports one global number for an app is hiding the thing you are usually looking for. Each storefront gets its own baseline here.

What a change row looks like

{
"country": "us",
"changeType": "became_free",
"reasons": ["became_free", "rating_fell"],
"title": "WhatsApp Messenger",
"previousPrice": 9.99,
"price": 0,
"formattedPrice": "Free",
"previousRating": 5.08,
"averageUserRating": 4.68,
"ratingMove": -0.4,
"newRatingsSinceLastRun": 1043,
"previousVersion": "26.35.73",
"version": "26.35.74",
"releaseNotes": "Bug fixes and performance improvements.",
"url": "https://apps.apple.com/us/app/..."
}

Change types: new_version, price_drop, price_rise, became_paid, became_free, rating_fell, rating_rose, title_change, developer_change, screenshots_changed, size_changed, delisted, new_app, first_seen.

Three details that matter in practice

Rating noise is filtered. An app with 29 million ratings drifts in the fourth decimal every single day. Reporting that as a change buries the real signal, so a move has to clear ratingDelta (0.05 by default) before it counts.

Delisting is detected. An app that answered last run and returns nothing now has been pulled from that storefront. That is often the most valuable thing this Actor tells you, and a diff that only walked the current results would never surface it.

A search-ranking drop is not a delisting. Only apps you explicitly listed in apps can be reported as delisted. Apps discovered through searchTerms falling out of the results are a ranking move, and are never mislabelled as removals.

Every row carries the same fields, including delisted rows, so CSV exports stay rectangular.

Input

FieldWhat it does
appsNumeric IDs, bundle IDs, or apps.apple.com URLs. All three work and can be mixed.
searchTermsDiscover apps by keyword instead of naming them, to watch a whole category.
countriesTwo-letter storefront codes. Each is tracked separately.
modechanges returns only what moved. snapshot returns everything each time.
stateKeyNames the saved baseline. One key per watchlist.
ratingDeltaHow far the average must move before it counts. Default 0.05.
includeNewReviewsAttach recent reviews to changed apps, so a rating drop arrives with the reviews that caused it.

Daily competitor watch

{
"apps": [
"389801252",
"com.spotify.client",
"https://apps.apple.com/us/app/id310633997"
],
"countries": ["us", "gb", "sa"],
"mode": "changes",
"stateKey": "competitors",
"includeNewReviews": true
}

The first run records the baseline. Every run after returns just the moves.

Watch a whole category

{
"searchTerms": ["habit tracker", "meditation"],
"countries": ["us"],
"maxAppsPerSearch": 50,
"mode": "changes"
}

Notes and limits

  • Public App Store data only. No developer account, no App Store Connect credentials, nothing behind a login.
  • Reviews come from Apple's public RSS feed, which serves the 50 most recent per page and does not expose the full review history.
  • ratingDelta applies to the average star rating. newRatingsSinceLastRun is always reported exactly, whatever the delta.
  • changes mode keeps its baseline in a named key-value store. Deleting that store resets it and the next run reports first_seen again.

Development

npm install
npm test
node src/main.js