# App Store Top Charts & Rank Tracker - Daily Movers (`tanlabs/app-store-top-charts`) Actor

Get Apple App Store top free, paid and grossing charts for any country and category from Apple's official public feeds, with ratings, versions and day-over-day rank changes, new entries and drop-outs. Track your own apps' ranks. No login, no proxies.

- **URL**: https://apify.com/tanlabs/app-store-top-charts.md
- **Developed by:** [TanLabs](https://apify.com/tanlabs) (community)
- **Categories:** Marketing, Developer tools
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 & Rank Tracker

Get the **Apple App Store top charts** (top free, top paid, top grossing, iPad charts and new apps) for **any country and any category**, straight from Apple's official public RSS feeds and Lookup API. Every app comes with **rating, rating count, current version, last update date and price**, and the Actor remembers the previous run so you get **daily rank changes, new entries, drop-outs and the biggest movers**.

No login, no cookies, no proxies, no scraping of private pages.

### What you can use it for

- **ASO and app marketing**: track where your app (and your competitors) rank in each country and category every day.
- **Market research**: see which apps are breaking into the top 100 in productivity, finance, health or games, and how fast.
- **Investor and agency reports**: export a clean daily snapshot of the App Store charts to CSV, Excel or JSON.
- **Alerts**: schedule the Actor daily and connect a webhook, Zapier or Make to get notified when an app enters or drops out of a chart.

### Input

| Field | What it does |
|---|---|
| Countries | Two-letter store codes, e.g. `us`, `gb`, `de`, `jp`, `br` |
| Charts | `top-free`, `top-paid`, `top-grossing`, `top-free-ipad`, `top-paid-ipad`, `top-grossing-ipad`, `new` |
| Categories | `all` or any of 24 categories (games, productivity, finance, health-fitness...) |
| Apps per chart | 1–100 (Apple's feed maximum is 100) |
| Add ratings & version details | Enrich each app with the Lookup API |
| Track my apps | App ids to flag; turn on *Save only tracked apps* for cheap rank monitoring |
| Compare with previous run | Keeps a history in a named key-value store and adds `previousRank`, `rankChange`, `isNewEntry` |

### Output

One row per app per chart:

```json
{"rowType":"app","country":"us","chart":"top-free","genre":"productivity","rank":3,"previousRank":7,"rankChange":4,
 "isNewEntry":false,"appId":"1232780281","appName":"Notion","developer":"Notion Labs, Incorporated","price":0,
 "rating":4.8,"ratingCount":91234,"currentVersion":"1.9.2","lastUpdated":"2026-10-20","url":"https://apps.apple.com/us/app/..."}
```

Plus one `chart-summary` row per chart with new entries, drop-outs and the 10 biggest movers.

### Pricing (pay per event)

- **$0.005 per chart** fetched (one country × chart × category)
- **$0.0003 per app row** saved

Example: the top 100 free apps in the US every day costs about $0.035 per run (about $1 a month). Tracking 3 of your own apps across 5 countries with *Save only tracked apps* costs about $0.03 per run.

### Tips

- Schedule it daily (Apify Schedules) to build a rank history; rank changes appear from the second run.
- Use a different *History store name* for each project so histories don't mix.
- Apple refreshes charts several times a day; one or two runs a day is enough for most uses.

### Related Actors by TanLabs

- [App Store Review Insights](https://apify.com/tanlabs/app-store-review-insights): turn reviews into complaint themes and rating trends.
- [AI Search Readiness Audit](https://apify.com/tanlabs/ai-search-readiness-audit): check if a website is visible to ChatGPT, Perplexity and other AI search engines.

Data comes from Apple's public feeds. This Actor is not affiliated with Apple.

### More from TanLabs

- [AI Search Readiness Audit (GEO/AEO) + llms.txt generator](https://apify.com/tanlabs/ai-search-readiness-audit)
- [App Store Review Insights](https://apify.com/tanlabs/app-store-review-insights)
- [Social Preview & Meta Tag Checker (Open Graph, X Card)](https://apify.com/tanlabs/social-preview-meta-checker)

# Actor input Schema

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

Two-letter App Store country codes (us, gb, de, jp, cn...).

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

Which charts to pull.

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

App Store categories ('all' = overall chart).

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

Apple's public feed returns at most 100 apps per chart.

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

Look up rating, rating count, current version, last update and size for every app (Apple Lookup API).

## `trackAppIds` (type: `array`):

Numeric App Store ids to flag in the results (e.g. 284882215).

## `onlyTrackedApps` (type: `boolean`):

Save only rows for the tracked app ids (plus a 'not in chart' row when missing). Cheaper for rank monitoring.

## `compareWithPreviousRun` (type: `boolean`):

Remember each chart in a named key-value store and report rank changes, new entries and drop-outs since the last run. Schedule the Actor daily for a rank history.

## `historyStoreName` (type: `string`):

Named key-value store used to remember previous charts.

## Actor input object example

```json
{
  "countries": [
    "us",
    "gb"
  ],
  "charts": [
    "top-free",
    "top-grossing"
  ],
  "genres": [
    "all",
    "productivity"
  ],
  "limit": 100,
  "enrich": true,
  "trackAppIds": [],
  "onlyTrackedApps": false,
  "compareWithPreviousRun": true,
  "historyStoreName": "app-store-top-charts-history"
}
```

# Actor output Schema

## `apps` (type: `string`):

No description

## `summaries` (type: `string`):

No description

# 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 = {
    "countries": [
        "us",
        "gb"
    ],
    "charts": [
        "top-free",
        "top-grossing"
    ],
    "genres": [
        "all",
        "productivity"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tanlabs/app-store-top-charts").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 = {
    "countries": [
        "us",
        "gb",
    ],
    "charts": [
        "top-free",
        "top-grossing",
    ],
    "genres": [
        "all",
        "productivity",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("tanlabs/app-store-top-charts").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 '{
  "countries": [
    "us",
    "gb"
  ],
  "charts": [
    "top-free",
    "top-grossing"
  ],
  "genres": [
    "all",
    "productivity"
  ]
}' |
apify call tanlabs/app-store-top-charts --silent --output-dataset

```

## MCP server setup

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

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/M6ScFPw0Ggtbk8M1a/builds/dxMbZgOMInPlxX8qd/openapi.json
