# App Store Top Charts Tracker (Movers & New Entries) (`reaperoak/app-store-top-charts-tracker-by-category`) Actor

Track the Apple App Store top free, paid and grossing charts by category and country. Get rank, change since the last run, new entries, days in chart, and ratings, version and size for each app. Schedule it daily.

- **URL**: https://apify.com/reaperoak/app-store-top-charts-tracker-by-category.md
- **Developed by:** [Owais Khan](https://apify.com/reaperoak) (community)
- **Categories:** Marketing, E-commerce, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.28 / 1,000 chart entries

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## App Store Top Charts Tracker (Movers & New Entries)

Track the **Apple App Store top free, top paid and top grossing charts** by category and country, with **rank change since the last run, new entries and days in chart** for every app, plus ratings, version, size and last update. Schedule it daily to see what is rising, what just launched and what dropped out.

### What is the App Store Top Charts Tracker?

It is an Apify Actor that reads Apple's public chart feeds and remembers what each chart looked like last time. That makes movement visible: which apps climbed 20 places, which are new in the top 50, how long an app has stayed on the chart. Each entry is enriched with Apple's own rating and version data.

### What makes it different?

- **Movement, not just a snapshot.** Rank change, new entries, days in chart and the apps that dropped out.
- **Every category and country.** Games, Finance, Health & Fitness and the rest, in any App Store country.
- **Enriched rows.** Ratings, rating count, current-version rating, version, size, languages, last update and release notes.
- **Alerts mode.** Return only new entries and big movers, so a daily run is quiet unless something happened.

### What data can you extract from the App Store charts?

| Field | Example |
|---|---|
| `chart, country, rank` | `top-free`, `us`, `3` |
| `name, developer, genre` | `Meowdoku!`, `Oakever Games`, `Games` |
| `rankChange, previousRank, newEntry, daysInChart` | `+7`, `10`, `false`, `12` |
| `ratingAverage, ratingCount` | `4.81`, `339758` |
| `version, updatedAt, sizeMb` | `1.20.0`, `2026-10-14T…`, `374` |
| `price, currency, firstReleased` | `0`, `USD`, `2026-05-19T…` |

A `SUMMARY` record lists each chart read, how many entries it had, how many are new, and the apps that dropped out since the last run.

### How to track the App Store top charts

1. Pick the charts (`top-free`, `top-paid`, `top-grossing`), categories and countries.
2. Run it once for a baseline.
3. Create a **Schedule** (daily is typical) so later runs show movement.
4. Send the output to Slack, email, Google Sheets, Make, n8n or Zapier. Turn on *Only new entries and big movers* for alerts.

```json
{
    "charts": [
        "top-free"
    ],
    "genres": [
        "Games"
    ],
    "countries": [
        "us"
    ],
    "limit": 25,
    "remember": false
}
```

- **genres**: names like `Games` and `Health & Fitness`, or Apple genre ids such as `6014`. Leave empty for the overall chart.
- **limit**: up to 200 entries per chart.
- **remember**: needed for rank change, new entries and days in chart. The first run for a chart has no movement yet.
- **enrich**: adds rating, version and size. Turn it off for the cheapest, fastest run.

### How much does it cost to track App Store charts?

You pay per chart entry returned plus a very small start fee. There is no subscription.

| Chart entries | Approximate cost |
|---|---|
| 50 | $0.075 |
| 200 | $0.30 |
| 1,000 | $1.50 |
| 10,000 | $15 |

Paid Apify plans get tiered discounts, and you can set a maximum cost per run. You can try it on Apify's free plan without a card.

### Who is it for?

- **App publishers and ASO teams** watching their category.
- **Investors and analysts** tracking breakout apps and publishers.
- **Game studios** monitoring competitors' launches.
- **Journalists and newsletter writers** spotting what is trending.

### Frequently asked questions

**Where does the data come from?** Apple's public chart feeds and its public lookup API.

**Why is there no movement on my first run?** Movement needs a previous snapshot. Run once, then again (or schedule it).

**Is the chart the same as what I see in the App Store app?** It is Apple's own chart feed for the country and category, which closely matches the store's lists but can lag by a few hours.

**What if Apple changes its feed?** The run fails with an explicit error instead of returning empty data, and the Actor is health-checked every night.

### Notes and limits

- Reads Apple's public feeds. This Actor is not affiliated with Apple.
- Charts show popularity, not revenue, except the top-grossing chart, which Apple ranks by revenue without publishing the numbers.

# Actor input Schema

## `charts` (type: `array`):

Which charts to read: <code>top-free</code>, <code>top-paid</code> or <code>top-grossing</code>. Leave empty for top-free.

## `genres` (type: `array`):

Categories such as <code>Games</code>, <code>Health & Fitness</code>, <code>Finance</code> or an Apple genre id like <code>6014</code>. Leave empty for the overall chart.

## `countries` (type: `array`):

Two-letter App Store country codes, for example <code>us</code>, <code>gb</code>, <code>jp</code>. Leave empty for <code>us</code>.

## `limit` (type: `integer`):

How many apps to read from the top of each chart.

## `enrich` (type: `boolean`):

Looks up each app to add rating, rating count, version, last update, size and more. Turn off for just the chart.

## `onlyMovers` (type: `boolean`):

Return only apps that are new in the chart or moved at least the threshold since the last run. Good for alerts.

## `moverThreshold` (type: `integer`):

How many places an app must move to count as a big mover.

## `remember` (type: `boolean`):

Stores each chart so the next run can show rank change, new entries and days in chart.

## Actor input object example

```json
{
  "charts": [
    "top-free"
  ],
  "genres": [
    "Games"
  ],
  "countries": [
    "us"
  ],
  "limit": 25,
  "enrich": true,
  "onlyMovers": false,
  "moverThreshold": 10,
  "remember": true
}
```

# Actor output Schema

## `results` (type: `string`):

One row per chart entry: rank, change since the last run, new-entry flag, days in chart, and ratings, version and size.

## `summary` (type: `string`):

For each chart: its Apple title, entries read, rows returned, new entries, and the apps that dropped out since the last run.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "charts": [
        "top-free"
    ],
    "genres": [
        "Games"
    ],
    "countries": [
        "us"
    ],
    "limit": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("reaperoak/app-store-top-charts-tracker-by-category").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "charts": ["top-free"],
    "genres": ["Games"],
    "countries": ["us"],
    "limit": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("reaperoak/app-store-top-charts-tracker-by-category").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "charts": [
    "top-free"
  ],
  "genres": [
    "Games"
  ],
  "countries": [
    "us"
  ],
  "limit": 25
}' |
apify call reaperoak/app-store-top-charts-tracker-by-category --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,reaperoak/app-store-top-charts-tracker-by-category"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Uc9Mz9cUUnvCjBKHQ/builds/3pfSoteHQUxjjdnX4/openapi.json
