# App Store Top Charts: Every Country, Ranks & App Data (`sinodata/app-store-charts`) Actor

Apple App Store top free and top paid app charts for any country (US, China, Japan and 90+ more) with each app's rating, number of ratings, category, price, developer and version, plus rank changes since your last run. Official Apple feeds, no login.

- **URL**: https://apify.com/sinodata/app-store-charts.md
- **Developed by:** [SinoData](https://apify.com/sinodata) (community)
- **Categories:** E-commerce, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.90 / 1,000 chart places

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: Every Country, Ranks & App Data

Get the **Apple App Store top free and top paid app charts for any country** in one run: US, China, Japan, Korea, the UK, Germany, Brazil, India and 160+ more. Each chart place comes with the app's details and, when you run it on a schedule, how its rank changed since your last run.

- **Top 100 free and top 100 paid apps** per country
- **App details**: average rating, number of ratings (all versions and current version), category, price and currency, developer, bundle id, version and last update date, first release date, size, content rating, supported languages, icon
- **Rank changes**: previous rank, places gained or lost, and new entries since your last run of the same chart
- **Specific apps**: details for any app ids or App Store links, in the country you choose
- Optional **description and release notes**

Data comes from Apple's own public feeds (the App Store marketing chart feed and the iTunes lookup service). No login, no API key, no browser.

### Use cases

- **App market research**: what's trending in the US, China or Japan right now, and which categories dominate each market.
- **Competitor tracking**: follow your competitors' ranks, ratings and update cadence every day.
- **Going global**: compare the same chart across countries before localizing or launching.
- **ASO and user acquisition**: spot apps climbing fast (big `rankChange`) and new entries.
- **Investors and analysts**: a daily panel of chart positions for any set of countries.

### Example input

```json
{
  "countries": ["us", "cn", "jp"],
  "charts": ["top-free", "top-paid"],
  "limit": 100,
  "includeDetails": true,
  "trackRankChanges": true
}
```

Turn on **All countries** to get all 173 App Store countries in one run. For daily tracking, schedule the Actor once a day; the rank change fields compare with the previous scheduled run.

### Output

```json
{
  "type": "chartEntry",
  "country": "us",
  "chart": "top-free",
  "rank": 4,
  "previousRank": 4,
  "rankChange": 0,
  "isNew": false,
  "appId": "6448311069",
  "name": "ChatGPT",
  "developer": "OpenAI OpCo, LLC",
  "category": "Productivity",
  "price": 0,
  "currency": "USD",
  "rating": 4.82,
  "ratingCount": 11846618,
  "contentRating": "12+",
  "version": "1.2026.293",
  "currentVersionReleasedAt": "2026-10-27T16:49:11Z",
  "sizeMb": 279.6,
  "url": "https://apps.apple.com/us/app/chatgpt/id6448311069",
  "chartUpdatedAt": "2026-11-02T19:32:37.000Z"
}
```

`rankChange` is positive when the app moved up. `isNew` is `true` for apps that weren't in the chart on your previous run, and `null` on the first run.

Specific apps come as `"type": "app"` records with the same detail fields.

### Pricing

| Record | Price |
|---|---|
| Chart place (with app details) | $0.001 |
| App details for a specific app | $0.002 |

Top 100 free apps for one country costs $0.10. Top 100 free and paid in 10 countries costs $2.00.

### Notes

- Apple publishes the top 100 of the free and paid charts. Top grossing and category charts aren't in Apple's public chart feed.
- Ratings and prices are for the country of the chart.
- A few small countries have no chart; the run skips them with a note.

### Feedback

Need another field or chart? Open an issue on the Issues tab.

# Actor input Schema

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

Two-letter App Store country codes, e.g. us, cn, jp, kr, gb, de, br, in.

## `allCountries` (type: `boolean`):

Get the charts for every App Store country instead of the list above.

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

Which charts to get.

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

How many places of each chart (Apple publishes the top 100).

## `includeDetails` (type: `boolean`):

Add each app's rating, number of ratings, category, price, developer, version, last update, size, content rating and languages.

## `includeDescription` (type: `boolean`):

Also add the full App Store description and the latest release notes (long text).

## `trackRankChanges` (type: `boolean`):

Compare with your previous run of the same chart: previous rank, places gained or lost, and new entries. Schedule the Actor daily to follow the charts.

## `appIds` (type: `array`):

Optional: get details for specific apps (numeric ids like 414478124 or apps.apple.com URLs), whether or not they are in a chart.

## `appCountry` (type: `string`):

App Store country for the apps above (ratings and prices differ by country).

## `proxyConfiguration` (type: `object`):

Not needed for normal use.

## Actor input object example

```json
{
  "countries": [
    "us",
    "cn",
    "jp"
  ],
  "allCountries": false,
  "charts": [
    "top-free"
  ],
  "limit": 100,
  "includeDetails": true,
  "includeDescription": false,
  "trackRankChanges": true,
  "appCountry": "us",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `charts` (type: `string`):

No description

## `results` (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",
        "cn",
        "jp"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("sinodata/app-store-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",
        "cn",
        "jp",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("sinodata/app-store-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",
    "cn",
    "jp"
  ]
}' |
apify call sinodata/app-store-charts --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sinodata/app-store-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/kcd3jqPMNZhQSwtLS/builds/KkdiosNh4KCdgzngv/openapi.json
