# App Chart Tracker: Top Apps by Country and Category (`precious_bathmat/app-chart-tracker`) Actor

Pull the App Store and Google Play top charts for any country, category and chart type, with ratings, publishers and prices, plus a roll-up showing which publishers own the most chart slots. No API key, no login, no proxy.

- **URL**: https://apify.com/precious\_bathmat/app-chart-tracker.md
- **Developed by:** [Mariam Ahmed](https://apify.com/precious_bathmat) (community)
- **Categories:** Marketing, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 chart pulleds

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 Chart Tracker: Top Apps by Country and Category

**What is actually charting right now — on both stores, in any country, in any category.** One row per chart position, with ratings, publishers and prices, plus a table showing which publishers own the most of a category.

Reads the public App Store and Google Play charts. No API key, no account, no proxy.

### What does this do?

Most app Actors scrape one app, or dump one chart. This pulls the charts you choose across both stores, enriches every App Store entry with its rating and last release date, flags the apps that chart on **both** stores, and rolls the whole thing up by publisher.

```mermaid
flowchart LR
    A[Countries, categories,<br/>chart types] --> B[App Store charts]
    A --> C[Google Play charts]
    B --> D[Ratings, versions,<br/>publishers, prices]
    C --> D
    D --> E[Positions + publisher table]
```

### Who is it for?

| You are | You use it to |
|---|---|
| **App marketers and ASO teams** | Watch your category on both stores, in every market you sell in |
| **App founders** | See who you are up against before you pick a category to launch in |
| **Investors and analysts** | Track which publishers are taking chart share, week after week |
| **Agencies** | Put a real competitive picture in a pitch, for any country |
| **Game studios** | Read the grossing charts, which is where the money actually shows |
| **Journalists** | Quote today's top apps with ratings and publishers behind them |

### What data do you get?

One row per chart position:

| Field | Meaning |
|---|---|
| `rank`, `name`, `publisher` | Where it sits, what it is, who owns it |
| `store`, `country`, `category`, `chartType` | Which chart this position is from |
| `rating`, `ratingCount` | Score and how many ratings back it (App Store via lookup, Google Play as the store shows it) |
| `price`, `currency` | What it costs in that storefront |
| `alsoChartsOnOtherStore` | Whether the same app charts on the other store in this run |
| `currentVersion`, `lastUpdated`, `sizeMb`, `genres` | App Store detail, when ratings are on |
| `url`, `icon` | Straight to the listing |

And one row per publisher: chart slots held, apps, best rank, average rank, average rating, free share, and the countries, categories and stores they appear in.

### Example: one country, three categories, both stores

A real run on 18 September 2026 — US, overall + games + finance, free and grossing, both stores, top 50 each. **12 charts, 600 positions, 135 publishers, 15 seconds.**

App Store games, top grossing:

| # | App | Publisher | Rating |
|---|---|---|---|
| 1 | MONOPOLY GO! | Scopely | 4.80 (3.8M ratings) |
| 2 | Royal Match | Dream Games | 4.69 (3.8M) |
| 3 | Gossip Harbor: Merge & Story | Microfun | 4.62 (203k) |
| 4 | Candy Crush Saga | King | 4.70 (4.0M) |
| 5 | Roblox | Roblox Corporation | 4.51 (20.1M) |

Who owns the charts, from the publisher table:

| Publisher | Chart slots | Apps | Best rank |
|---|---|---|---|
| Google | 14 | 12 | 1 |
| Century Games | 11 | 6 | 7 |
| Playrix | 10 | 8 | 6 |
| TikTok | 8 | 6 | 2 |
| Dream Games | 8 | 4 | 2 |

MONOPOLY GO! was number one grossing in games on **both** stores, and MileIQ topped grossing finance on both — the kind of agreement the cross-store flag is there to show.

### How the cross-store match works, and when it does not

An app counts as charting on both stores only when the **short names agree and the publishers agree too**, after dropping legal forms. "AllTrails, Inc." and "AllTrails, LLC" are the same company; "Calculator" by Apple and "Calculator" by someone else are not the same app. Matching on the name alone would pair every calculator, flashlight and weather app in the store.

Where the two stores use genuinely different names for the same app, the flag will read `false`. That is deliberate: a missed match costs you nothing, a false one puts a wrong competitor in your report.

### Limits worth knowing

- **Apple serves at most 100 apps per chart**, whatever the size is set to.
- **Google Play calls its grossing chart `GROSSING`**, and its category names are its own; the mapping in this Actor is done for you.
- **Chart positions are a snapshot** of what the stores served at the moment of the run. Schedule it and compare runs to see movement.
- Google Play rows carry the rating the store displays; **rating counts are App Store only**.

### Pay-per-event pricing

| Event | Price |
|---|---|
| Chart pulled | $0.02 |
| App position | $0.001 |

One country, 3 categories, 2 chart types, both stores, top 50 = 12 charts and 600 positions: **$0.84**. A single top-50 chart: **$0.07**.

### Popular chart views

- [Top Free Apps in the US: App Store and Google Play](https://apify.com/precious_bathmat/app-chart-tracker/examples/top-free-apps-usa) — overall · top free · US
- [Top Grossing Apps in the US: Where the Money Is](https://apify.com/precious_bathmat/app-chart-tracker/examples/top-grossing-apps-usa) — overall · top grossing · US
- [Top Grossing Mobile Games in the US, Both Stores](https://apify.com/precious_bathmat/app-chart-tracker/examples/top-grossing-games-usa) — games · top grossing · US
- [Top Free Mobile Games in the US, Both Stores](https://apify.com/precious_bathmat/app-chart-tracker/examples/top-free-games-usa) — games · top free · US
- [Top Paid Apps in the US on Both App Stores](https://apify.com/precious_bathmat/app-chart-tracker/examples/top-paid-apps-usa) — overall · top paid · US
- [Top Finance Apps in the US: Free and Grossing](https://apify.com/precious_bathmat/app-chart-tracker/examples/top-finance-apps-usa) — finance · top free, top grossing · US
- [Top Health and Fitness Apps in the US Right Now](https://apify.com/precious_bathmat/app-chart-tracker/examples/top-health-fitness-apps-usa) — health and fitness · top free, top grossing · US
- [Top Productivity Apps in the US, App Store and Play](https://apify.com/precious_bathmat/app-chart-tracker/examples/top-productivity-apps-usa) — productivity · top free, top grossing · US
- [Top Social Apps in the US on Both App Stores](https://apify.com/precious_bathmat/app-chart-tracker/examples/top-social-apps-usa) — social · top free · US
- [Top Apps in the UK: App Store and Google Play Charts](https://apify.com/precious_bathmat/app-chart-tracker/examples/top-apps-uk) — overall · top free · UK
- [Top Apps in Germany on the App Store and Play](https://apify.com/precious_bathmat/app-chart-tracker/examples/top-apps-germany) — overall · top free · Germany
- [Top Apps in India on Both App Stores Right Now](https://apify.com/precious_bathmat/app-chart-tracker/examples/top-apps-india) — overall · top free · India
- [Top Apps in Brazil on the App Store and Play](https://apify.com/precious_bathmat/app-chart-tracker/examples/top-apps-brazil) — overall · top free · Brazil
- [Top Apps in Japan on Both App Stores](https://apify.com/precious_bathmat/app-chart-tracker/examples/top-apps-japan) — overall · top free · Japan
- [Which Publishers Own the US App Charts](https://apify.com/precious_bathmat/app-chart-tracker/examples/app-publishers-chart-share-usa) — overall, games, finance · top free, top grossing · US

Each page is this Actor with a different country, category and chart. Open one, put your own choices in, and run it.

# Actor input Schema

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

Which storefronts to read. Each country is a separate chart on each store.

## `categories` (type: `array`):

The overall chart, or any category. Category charts are where a small app can actually rank.

## `chartTypes` (type: `array`):

Free, paid or grossing. Grossing is the one that shows where the money is.

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

Read one store or both. With both, apps that chart on each are flagged.

## `chartSize` (type: `integer`):

How deep to read each chart. Apple serves at most 100.

## `addRatings` (type: `boolean`):

Looks up every App Store app for its rating, number of ratings, size and last release date. Google Play rows already carry the rating the store shows. Free: it costs no extra events.

## `includePublishers` (type: `boolean`):

Adds a second table with one row per publisher: chart slots held, apps, countries, best rank and average rating.

## `minChartEntriesPerPublisher` (type: `integer`):

Keeps the publisher table to the companies that really own the category.

## Actor input object example

```json
{
  "countries": [
    "us"
  ],
  "categories": [
    "overall"
  ],
  "chartTypes": [
    "top-free"
  ],
  "stores": [
    "appstore",
    "googleplay"
  ],
  "chartSize": 50,
  "addRatings": true,
  "includePublishers": true,
  "minChartEntriesPerPublisher": 2
}
```

# Actor output Schema

## `positions` (type: `string`):

Every app with its rank, store, country, category, rating and price.

## `publishers` (type: `string`):

Who holds the most chart slots, when that option is on.

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

Charts pulled, unique apps, cross-store matches and anything that failed.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("precious_bathmat/app-chart-tracker").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("precious_bathmat/app-chart-tracker").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 '{}' |
apify call precious_bathmat/app-chart-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,precious_bathmat/app-chart-tracker"
        }
    }
}
```

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/VJ4BRqsPP4GE6pUKg/builds/naIeIUnzlkigpy91x/openapi.json
