# App Store & Google Play Top Charts: Top 200 by Country (`varnmill/app-store-top-charts`) Actor

Full top 200 App Store and Google Play charts (free, paid, grossing) for any country, category and device, with rating, rating count, price, developer and release date, no login needed. Optional rank tracking adds the change since your last run so a daily schedule builds a ranking history.

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

## Pricing

from $0.35 / 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 & Google Play Top Charts: Top 200 by Country

Get the **full top 200** App Store and Google Play charts (top free, top paid, top grossing) for any country, category and device as JSON, CSV or Excel, with rating, rating count, price, developer, release date and store link for every app, read straight from the stores with no login, API key or proxy. The App Store website shows only 25 apps per chart and Apple's RSS feeds stop at 100; this Actor returns all 200.

**Try it:** Click **Start** with the default input: all 200 US iPhone Top Free apps in 2.3 s for $0.10 (run of October 21, 2026, build 0.1.5). If you set a maximum cost per run, use $0.11 or more: the 200 rows plus the start fee come to $0.10005, so a cap of exactly $0.10 stops at rank 199.

The chart from that default run, with ranks far below the 25 the website shows:

| Rank | App | Developer | Category | Rating | Ratings | Released |
|---|---|---|---|---|---|---|
| 1 | Capital One Mobile | Capital One | Finance | 4.85 | 11,213,915 | 2010-12-13 |
| 2 | Muse from Meta | Meta Platforms, Inc. | Productivity | 4.85 | 311,700 | 2026-09-08 |
| 3 | Vinted: Pre-loved marketplace | Vinted Limited | Shopping | 4.88 | 536,047 | 2013-04-11 |
| 4 | ChatGPT | OpenAI OpCo, LLC | Productivity | 4.83 | 11,498,131 | 2023-05-18 |
| 5 | TikTok Pro - Events | TikTok Ltd. | Entertainment | 4.83 | 74,661 | 2026-06-03 |
| 26 | Microsoft Authenticator | Microsoft Corporation | Productivity | 4.71 | 714,094 | 2015-05-30 |
| 100 | Chase Mobile®: Bank & Invest | JPMorgan Chase & Co. | Finance | 4.83 | 9,571,240 | 2008-12-15 |
| 150 | HBO Max: Stream Movies & TV | WarnerMedia Global Digital Services, LLC | Entertainment | 4.87 | 5,805,545 | 2023-05-22 |
| 199 | SeatGeek - Buy Event Tickets | SeatGeek, Inc. | Entertainment | 4.86 | 1,079,224 | 2012-12-11 |
| 200 | AXS Tickets | AXS | Entertainment | 4.63 | 533,962 | 2013-08-25 |

**Pricing:** **$0.50 per 1,000 chart entries** ($0.10 for a full top-200 chart), $1 per 1,000 optional Google Play detail pages, dropped-out rows in rank tracking free, plus $0.00005 per run start. Platform usage is included; failed runs are not charged.

Turn on **Track rank changes since last run** and schedule the Actor daily to get `previousRank`, `rankChange` and `isNewEntry` on every row (real example below).

### More real examples

#### US iPhone Top Free, all 200 ranks (October 12, 2026)

Run `Wqae4N2uynGCxaNub` on **October 12, 2026** (00:26 UTC on October 13), using the default input (`us`, iPhone, All Apps, Top Free, 200 ranks). It finished in 4.4 seconds and returned 200 rows:

| Rank | App | Developer | Category | Rating | Ratings | Released |
|---|---|---|---|---|---|---|
| 1 | Muse from Meta | Meta Platforms, Inc. | Productivity | 4.86 | 216,299 | 2026-09-08 |
| 2 | Vinted: Pre-loved marketplace | Vinted Limited | Shopping | 4.88 | 459,899 | 2013-04-11 |
| 3 | ChatGPT | OpenAI OpCo, LLC | Productivity | 4.83 | 11,212,013 | 2023-05-18 |
| 4 | Reco Social | Reco Social, Inc. | Social Networking | 4.72 | 29,425 | 2025-03-12 |
| 5 | McDonald's | McDonald's USA | Food & Drink | 4.84 | 7,882,514 | 2014-10-25 |
| … | | | | | | |
| 26 | Edits: Video Editor | Instagram, Inc. | Photo & Video | 4.79 | 92,869 | 2025-04-22 |
| 27 | Trump Accounts: Official App | U.S. Department of the Treasury | Finance | 4.87 | 24,109 | 2026-05-27 |
| … | | | | | | |
| 198 | Expedia: Hotels, Flights, Cars | Expedia, Inc. | Travel | 4.79 | 5,965,979 | 2011-04-07 |
| 199 | Trusted Traveler | US Customs and Border Protection | Travel | 4.74 | 1,166 | 2026-09-15 |
| 200 | Proton VPN: Fast & Secure | Proton AG | Utilities | 4.64 | 118,540 | 2018-11-12 |

One full row (rank 26, which is past what the website shows):

```json
{
  "rank": 26,
  "store": "apple",
  "country": "us",
  "platform": "iphone",
  "chart": "top-free",
  "chartName": "Top Free Apps",
  "categoryId": "36",
  "categoryName": "All Apps",
  "appId": "6738967378",
  "bundleId": "com.burbn.basel",
  "name": "Edits: Video Editor",
  "developer": "Instagram, Inc.",
  "primaryCategory": "Photo & Video",
  "price": 0,
  "currency": "USD",
  "formattedPrice": "Free",
  "isFree": true,
  "rating": 4.79,
  "ratingCount": 92869,
  "releaseDate": "2025-04-22T07:00:00Z",
  "lastUpdated": "2026-10-12T15:58:02Z",
  "version": "451.0",
  "contentRating": "4+",
  "url": "https://apps.apple.com/us/app/edits-video-editor/id6738967378",
  "chartDate": "2026-10-13",
  "scrapedAt": "2026-10-13T00:26:50Z",
  "chartKey": "apple|us|iphone|36|top-free"
}
```

#### Google Play top grossing games with details

Run `7KZE6UA1EabZKLWyU` on October 12, 2026 (00:33 UTC on October 13) covered US and Germany, All Apps and All Games, all three charts, top 20 each, with **Google Play details** on. It returned 240 apps plus 240 detail pages in 17 seconds.

| Rank | App | Developer | Rating | Ratings | Installs (exact) | Released | Updated |
|---|---|---|---|---|---|---|---|
| 1 | MONOPOLY GO! | Scopely | 4.6 | 3,229,632 | 131,489,168 | Apr 11, 2023 | 2026-10-06 |
| 2 | Roblox | Roblox Corporation | 4.22 | 52,959,344 | 1,718,291,651 | Jul 15, 2014 | 2026-10-08 |
| 3 | Candy Crush Saga | King | 4.63 | 38,933,087 | 2,346,973,251 | Nov 15, 2012 | 2026-10-01 |

Other charts from the same day: Japan iPhone top grossing games were led by eFootball™ (KONAMI), モンスターストライク (XFLAG) and ゴシップハーバー (Microfun). UK iPad top paid games were led by Minecraft (£6.99), Geometry Dash (£3.99) and Wobbly Life (£8.99).

### What you can fetch

| | Apple App Store | Google Play |
|---|---|---|
| Top Free | up to **200** | up to **200** |
| Top Paid | up to **200** | up to 200 (some categories have fewer paid apps) |
| Top Grossing | up to **100** (Apple's limit, iPhone/iPad/Mac only) | up to **200** |
| Countries | any App Store storefront (`us`, `gb`, `de`, `jp`, `br`, `kr`, `cn`, …) | any Play country |
| Devices | iPhone, iPad, Mac, Apple Watch, Vision Pro, Apple TV | Android |
| Categories | All Apps, Games, 24 app categories, 16 game genres, Kids age bands (5 & under, 6-8, 9-11) | All Apps, All Games, Family, 33 app categories, 17 game genres |

Every combination you select is fetched: for example 3 countries × 2 charts × 2 categories = 12 charts.

### Output fields

| Field | Apple | Google Play | Notes |
|---|---|---|---|
| `rank` | ✓ | ✓ | 1 = top |
| `store`, `country`, `platform`, `chart`, `chartName`, `categoryId`, `categoryName` | ✓ | ✓ | what chart the row belongs to |
| `appId` | track ID | package name | |
| `bundleId` | ✓ | | |
| `name`, `developer` | ✓ | ✓ | |
| `developerId` | ✓ | with details | |
| `subtitle` | ranks 1-25 | | |
| `summary` | | ✓ | short description |
| `primaryCategory`, `genres` | ✓ | ✓ (primary) | |
| `price`, `currency`, `formattedPrice`, `isFree` | ✓ | ✓ | |
| `hasInAppPurchases` | | ✓ | |
| `rating` | ✓ | ✓ | 0-5 |
| `ratingCount` | ✓ | with details | |
| `ratingCurrentVersion`, `ratingCountCurrentVersion` | ✓ | | |
| `installs` | | ✓ | bucket such as `10,000,000+` |
| `minInstalls`, `realInstalls` | | with details | |
| `releaseDate` | ✓ (ISO) | with details (as shown, e.g. `Apr 11, 2023`) | |
| `lastUpdated`, `version` | ✓ | with details | |
| `contentRating`, `minimumOsVersion`, `sizeMb` | ✓ | content rating | |
| `url`, `iconUrl` | ✓ | ✓ | store page and 512px icon |
| `chartDate`, `scrapedAt`, `chartKey` | ✓ | ✓ | for building history tables |
| `previousRank`, `rankChange`, `isNewEntry`, `previousScrapedAt`, `droppedOut` | ✓ | ✓ | with rank tracking |

The dataset has two views: **Chart overview** (a readable table) and **Rank changes**. CSV, Excel, JSON and XML exports work as usual.

### Input examples

The default input is US iPhone Top Free, all 200 ranks:

```json
{ "countries": ["us"], "charts": ["top-free"], "maxRank": 200 }
```

Top free and paid games in five countries on iPhone and iPad:

```json
{
  "stores": ["apple"],
  "countries": ["us", "gb", "de", "jp", "br"],
  "applePlatforms": ["iphone", "ipad"],
  "appleCategories": ["6014"],
  "charts": ["top-free", "top-paid"]
}
```

Both stores, puzzle games, top grossing, with Google Play rating counts and dates:

```json
{
  "stores": ["apple", "google"],
  "countries": ["us"],
  "appleCategories": ["7012"],
  "googlePlayCategories": ["GAME_PUZZLE"],
  "charts": ["top-grossing"],
  "googlePlayDetails": true
}
```

Daily rank tracker (schedule it once a day):

```json
{
  "stores": ["apple", "google"],
  "countries": ["us"],
  "charts": ["top-free", "top-grossing"],
  "maxRank": 200,
  "trackRankChanges": true,
  "historyStoreName": "my-app-rank-history"
}
```

### Rank tracking

With `trackRankChanges` on, the actor saves each chart's ranks in a named key-value store (`historyStoreName`). On the next run every row gets:

- `previousRank`: rank in the previous tracked run
- `rankChange`: `previousRank - rank` (positive = moved up)
- `isNewEntry`: `true` if the app was not in the chart last time
- `previousScrapedAt`: when the previous snapshot was taken

Apps that left the chart are reported as extra rows with `droppedOut: true` and their `previousRank`. These rows are free. Keep `maxRank` the same between runs. If the previous run went less deep, apps below its depth get `isNewEntry: null` (unknown) rather than being called new.

To keep a full history, schedule the actor (for example daily) and append each run's dataset to your own table. `chartKey` + `appId` + `chartDate` is a natural primary key.

#### Real example: rank changes over 19 hours (October 13, 2026)

Run `X65BS2d3jhrEEMGVn` at 19:27 UTC on October 13, 2026 used the "Daily rank tracker" input above, with a history store whose last snapshot came from a tracked run at 00:37 UTC the same day (18 h 50 min earlier). It returned 700 chart rows plus 23 free dropped-out rows in 9.5 seconds.

| Chart | Moved | Same rank | New entries | Dropped out |
|---|---|---|---|---|
| Apple US iPhone Top Free (200) | 175 | 14 | 11 | 11 |
| Google Play US Top Free (200) | 171 | 17 | 12 | 12 |

Apple US iPhone Top Free, selected rows exactly as returned:

| rank | previousRank | rankChange | isNewEntry | App |
|---|---|---|---|---|
| 1 | 1 | 0 | false | Muse from Meta |
| 3 | 3 | 0 | false | ChatGPT |
| 4 | 86 | 82 | false | Dave’s Hot Chicken® |
| 5 | 4 | -1 | false | Reco Social |
| 8 | 5 | -3 | false | McDonald's |
| 10 | 11 | 1 | false | Claude by Anthropic |
| 30 | null | null | true | Shell: Fuel, Charge & More |
| 51 | 94 | 43 | false | Microsoft Outlook |
| 82 | 136 | 54 | false | Messenger |
| 153 | 50 | -103 | false | FOX One: Live News, Sports, TV |

On Google Play US Top Free in the same run, Microsoft Authenticator moved from 165 to 89 (`rankChange` 76), MyChart from 195 to 120 (75) and Polymarket from 105 to 131 (-26).

The moved row (selected fields, values unchanged):

```json
{
  "rank": 4,
  "store": "apple",
  "chartKey": "apple|us|iphone|36|top-free",
  "appId": "1668228991",
  "name": "Dave’s Hot Chicken®",
  "developer": "Dave's Hot Chicken",
  "rating": 4.84,
  "ratingCount": 68882,
  "chartDate": "2026-10-13",
  "scrapedAt": "2026-10-13T19:27:47Z",
  "previousRank": 86,
  "rankChange": 82,
  "isNewEntry": false,
  "previousScrapedAt": "2026-10-13T00:37:56Z",
  "droppedOut": null
}
```

A dropped-out row from the same chart (free, carries only the app ID and its last rank):

```json
{
  "rank": null,
  "chartKey": "apple|us|iphone|36|top-free",
  "appId": "718145625",
  "name": null,
  "previousRank": 52,
  "rankChange": null,
  "isNewEntry": false,
  "previousScrapedAt": "2026-10-13T00:37:56Z",
  "droppedOut": true
}
```

The same run also shows the depth rule. The stored Google Play US Top Grossing snapshot came from a test run at 00:33 UTC that went only 20 deep, so ranks 1-20 got real changes (Spotify 6 to 5, Pandora 13 to 11, Hinge new at 20) while ranks 21-200 came back with `isNewEntry: null`. Apple US iPhone Top Grossing had no snapshot yet, so all of its tracking fields were null: the first tracked run of a chart only saves the baseline.

### Pricing

Pay per event: you pay only for rows delivered.

| Event | Price | |
|---|---|---|
| Chart entry (one app at one rank in one chart) | **$0.50 per 1,000** | $0.10 for a full top 200 chart |
| Google Play app details (optional) | $1.00 per 1,000 | only when `googlePlayDetails` is on |
| Dropped-out rows (rank tracking) | free | |
| Actor start | $0.00005 | |

Examples:

- US iPhone top free, 200 apps: **$0.10** ($0.10005 with the start fee, so a maximum cost per run of exactly $0.10 stops at rank 199; use $0.11 or leave the cap empty)
- 10 countries × top free + top paid × 200: 4,000 rows = **$2.00**
- Google Play top grossing 200 with details: $0.10 + $0.20 = **$0.30**

Set "Maximum cost per run" on the run to cap spending; the actor stops cleanly at the limit.

### How it works and accuracy

- **Apple top free / top paid**: read from the apps.apple.com chart page for each country, device and category. That page holds the ordered list of all 200 apps (the website only draws 25). Ranks match Apple's own RSS feed exactly for the top 100 (checked October 12, 2026).
- **Apple top grossing**: Apple removed it from the website. It comes from Apple's iTunes RSS feed, which Apple caps at 100 and offers only for iPhone, iPad and Mac.
- **Apple details**: names, ratings, prices and dates come from Apple's public iTunes lookup API, 200 apps per request, in the storefront's language and currency.
- **Google Play**: the same data request the Play Store website makes for its chart lists, up to 200 apps per chart in the country (`gl`) and language (`hl`) you choose. With details on, each app's store page is opened for rating count, exact installs and dates.
- No login, no API key and no proxy needed. A full top 200 chart takes 1-5 seconds.

### Limits

- Apple top grossing stops at 100 (Apple's limit). Apple Watch, Vision Pro and Apple TV have no grossing chart.
- Mac-only apps beyond rank 25 have `rating` and `ratingCount` = null, because Apple's lookup API reports 0 ratings for Mac apps. Ranks 1-25 use the chart page's numbers.
- Google Play `releaseDate` is the text shown on the store page (`Apr 11, 2023`), localized to `language`. `lastUpdated` is ISO.
- Without `googlePlayDetails`, Google Play rows have no rating count, dates or version.
- Charts reflect what each store shows anonymously for that country right now. Apple and Google refresh charts a few times a day, so runs minutes apart usually show the same ranks.
- Not every category exists in every country or device. Empty charts are skipped with a warning and cost nothing.
- Up to 1,000 charts per run.

### FAQ

**Why does the App Store website show only 25 apps?**
The chart page draws 25 and loads the rest as you scroll, through an API that needs a web token. This actor reads the full ordered list from the page itself and fills in details from Apple's public lookup API.

**Can I get historical charts from before my first run?**
No. Neither store publishes past charts. Start a scheduled run with rank tracking now and you build your own history from that day on.

**How do I find a category ID?**
Pick categories from the dropdowns in the input form. Apple uses genre IDs (`36` = All Apps, `6014` = Games, `7012` = Puzzle games); Google Play uses codes (`GAME_PUZZLE`).

**Does it work for my country?**
Any two-letter App Store storefront or Google Play country code. Tested: us, gb, de, jp, br, kr, cn.

**Do I need a proxy?**
No. Both stores serve these public pages without one. A proxy option exists for the rare case you see repeated 403 or 429 errors.

**Can I use it from an AI agent or via API?**
Yes. Call it through the Apify API or the Apify MCP server with the JSON inputs above. Every row has the same fields, so results are easy to load into a sheet or database.

### Changelog

- **0.1.6** (October 21, 2026): README leads with the full top-200 chart from an October 21 run and states the $0.10 cap behaviour. No code changes.
- **0.1.5** (October 13, 2026): README adds a real rank-change example (two tracked runs 18 h 50 min apart). No code changes.
- **0.1** (October 12, 2026): First release. Apple top free and top paid to 200 (6 devices, all categories and kids age bands), Apple top grossing to 100, Google Play top free, paid and grossing to 200 in 53 categories, optional Google Play details, rank tracking with dropped-out apps.

# Actor input Schema

## `stores` (type: `array`):

Which stores to fetch: Apple App Store, Google Play, or both.

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

Two-letter country codes (storefronts), e.g. us, gb, de, jp, br. Each country is fetched separately.

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

Top free and top paid return up to 200 apps on both stores. Apple top grossing comes from Apple's RSS feed, which stops at 100 and exists only for iPhone, iPad and Mac; Google Play top grossing returns up to 200.

## `maxRank` (type: `integer`):

How deep to go in each chart, 1 to 200. You pay per app returned.

## `applePlatforms` (type: `array`):

Which App Store device charts to fetch. iPhone is what most people mean by 'App Store top charts'.

## `appleCategories` (type: `array`):

App Store categories. 'All Apps' is the overall chart; 'Games' is the overall games chart; game sub-genres and kids age bands are available too.

## `googlePlayCategories` (type: `array`):

Google Play categories. 'All Apps' (APPLICATION) and 'All Games' (GAME) are the overall charts.

## `language` (type: `string`):

Language code for Google Play app names and categories (hl parameter), e.g. en, de, ja, pt-BR. Apple data always comes in the storefront's default language.

## `googlePlayDetails` (type: `boolean`):

Google Play chart lists do not include rating count, release date, last update, exact installs or version. Turn this on to open each app's page and add them. Charged per app as a separate event.

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

Remember each chart in a named key-value store and add previousRank, rankChange (positive = moved up) and isNewEntry to every row. Schedule the actor daily to build a ranking history.

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

Named key-value store that keeps the last snapshot of each chart. Use different names to keep separate histories.

## `includeDroppedApps` (type: `boolean`):

With rank tracking on, also output a row (droppedOut: true, not charged) for every app that was in the chart last run but is gone now.

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

Not needed normally: Apple and Google serve these public charts without a proxy. Turn on only if you see repeated 403 or 429 errors.

## Actor input object example

```json
{
  "stores": [
    "apple"
  ],
  "countries": [
    "us"
  ],
  "charts": [
    "top-free"
  ],
  "maxRank": 200,
  "applePlatforms": [
    "iphone"
  ],
  "appleCategories": [
    "36"
  ],
  "googlePlayCategories": [
    "APPLICATION"
  ],
  "language": "en",
  "googlePlayDetails": false,
  "trackRankChanges": false,
  "historyStoreName": "app-store-top-charts-history",
  "includeDroppedApps": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

No description

## `csv` (type: `string`):

No description

## `rankChanges` (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 = {
    "stores": [
        "apple"
    ],
    "countries": [
        "us"
    ],
    "charts": [
        "top-free"
    ],
    "maxRank": 200
};

// Run the Actor and wait for it to finish
const run = await client.actor("varnmill/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 = {
    "stores": ["apple"],
    "countries": ["us"],
    "charts": ["top-free"],
    "maxRank": 200,
}

# Run the Actor and wait for it to finish
run = client.actor("varnmill/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 '{
  "stores": [
    "apple"
  ],
  "countries": [
    "us"
  ],
  "charts": [
    "top-free"
  ],
  "maxRank": 200
}' |
apify call varnmill/app-store-top-charts --silent --output-dataset

```

## MCP server setup

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