# App Store Top Charts (`appsigma/app-store-top-charts`) Actor

Capture Apple App Store Top Free, Top Paid and Top Grossing chart standings — current snapshots or historical day-by-day movement — for the overall chart or any genre.

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

## Pricing

from $1.00 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## App Store Top Charts 📈

**See exactly which apps are winning the App Store — and how they got there.** Give this
Actor a chart type and it returns Apple's official Top Charts rankings: current standings
or day-by-day history, for the overall chart or any category. One clean row per chart
position, ready to export to CSV, Excel, JSON, or push into your own pipeline.

No scraping, no proxies, no HTML parsing, no rate-limit headaches. Powered by the
[AppSigma App Store API](https://appsigma.io), served straight from Apple's data.

---

### What it does

For every **chart type × category** you provide, the Actor captures Apple's Top Charts —
either **today's snapshot** or **historical day-by-day movement** — and records each
position as a flat row: rank, previous rank, the date, and the app's full listing
snapshot (developer, category, rating, price, and more).

- ✅ **Top Free, Top Paid, Top Grossing** — any or all of Apple's three chart types
- ✅ **Overall or by category** — the all-apps chart, or any Apple genre/category
- ✅ **Current snapshot or full history** — track movement over days, weeks, or years
- ✅ **Rich app data** per position — no second lookup needed
- ✅ **Flat, spreadsheet-friendly** output (nested fields pre-unwrapped into columns)
- ✅ **Fast & reliable** — parallel requests, automatic retries, no proxies to configure

### Use cases

- **Market & trend dashboards** — track how the Top Free/Paid/Grossing charts shift day
  to day, overall or within a specific category.
- **Movers & shakers** — spot apps climbing or falling fast using the `previousPosition`
  column, without building your own history yourself.
- **Category leaders** — find and monitor the top-ranked apps in any genre (Games,
  Photo & Video, Finance, …) over time.
- **Competitive & investment research** — watch a competitor's chart position (or a
  portfolio company's) as a leading indicator of momentum.

---

### Input

Configure it from the visual input form or pass JSON:

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `mode` | string | `current` | `current` captures today's snapshot; `history` captures day-by-day positions over a period |
| `chartTypes` | array of strings | `["FREE"]` | Which charts to capture: `FREE`, `PAID`, or `TOP_GROSSING` |
| `genreIds` | array of integers | `[]` | Apple genre/category IDs to capture. Leave empty to capture only the overall (all-categories) chart |
| `maxPosition` | integer ≥ 1 | `100` | Deepest chart position to capture (1 = top spot only) |
| `daysPeriod` | integer 1–1825 | `30` | Days of history to capture — `history` mode only |
| `iconWidth` | integer 16–2048 | `512` | Pixel width for the ready-to-use `icon` image URL |
| `maxResults` | integer | `0` | Stop after this many total rows (`0` = no limit) |
| `concurrency` | integer 1–20 | `5` | How many chart requests to run in parallel |

#### Example input

```json
{
  "mode": "current",
  "chartTypes": ["FREE", "PAID"],
  "genreIds": [6014],
  "maxPosition": 50
}
````

***

### Output

Each row is one chart position. In `current` mode you get one row per app currently
occupying a chart slot; in `history` mode you get one row per **date × position**, so
you can plot how a slot's occupant changed over time. Nested objects (developer, rating,
price) are flattened into plain columns so the data drops straight into a spreadsheet.

#### Example row

```json
{
  "chartType": "FREE",
  "genreId": null,
  "position": 1,
  "previousPosition": 2,
  "date": "2026-07-25T10:45:02.094Z",
  "appId": 6741796873,
  "name": "TikTok",
  "shortName": "TikTok",
  "subtitle": "Watch, Discover, Join & Share",
  "developerId": 1322881000,
  "developerName": "TikTok Ltd.",
  "primaryGenre": "Entertainment",
  "primaryGenreId": 6016,
  "icon": "https://is1-ssl.mzstatic.com/image/thumb/.../AppIcon/512x0w.png",
  "ratingScore": 4.9,
  "ratingCount": 17087,
  "priceFormatted": "Free",
  "priceAmountMinor": 0,
  "priceCurrency": "USD",
  "priceDiscount": false,
  "hasInAppPurchases": true,
  "hasAds": false,
  "releaseDate": "2026-06-03T00:00:00.000Z",
  "_fetchedAt": "2026-07-25T11:00:05.746Z"
}
```

#### Fields

| Field | Description |
|-------|--------------|
| `chartType` | `FREE`, `PAID`, or `TOP_GROSSING` |
| `genreId` | Apple category ID, or `null` for the overall chart |
| `position`, `previousPosition` | 1-based rank, and its previous value (`null` if unknown) |
| `date` | Snapshot time (`current` mode) or calendar date (`history` mode) this row represents |
| `appId`, `name`, `shortName`, `subtitle` | App identity |
| `developerId`, `developerName` | Publisher |
| `primaryGenre`, `primaryGenreId` | Apple category |
| `ratingScore`, `ratingCount` | Aggregate star rating and number of ratings |
| `priceFormatted`, `priceAmountMinor`, `priceCurrency`, `priceDiscount` | Pricing (`priceAmountMinor` is in minor units, e.g. cents) |
| `hasInAppPurchases`, `hasAds` | Store flags |
| `releaseDate` | First-release date |
| `icon` | Ready-to-use icon image URL, sized to `iconWidth` (default 512px) |
| `_fetchedAt` | When the row was captured (ISO 8601) |

***

### Exporting & integrating

Results land in a standard Apify dataset, so you can:

- **Download** as CSV, JSON, Excel, XML, or RSS from the run's Storage tab.
- **Fetch via API** — pull the dataset programmatically with the Apify API or clients.
- **Automate** — schedule runs, or connect to Make, Zapier, n8n, Slack, and more.

### Pricing

This Actor is **pay per result** — you're charged per row it returns, with no platform
usage or compute to reason about. Use `maxPosition`, `daysPeriod`, and `maxResults` to
control exactly how many rows (and how much spend) each run produces.

### FAQ

**Do I need an API key or an account anywhere?**
No. Just configure the input and run it — billing is handled through Apify.

**What's the difference between `current` and `history` mode?**
`current` gives you today's chart as it stands right now — one row per position.
`history` gives you the same chart's positions for each day over your chosen period —
one row per date × position, so you can chart movement over time.

**How do I find a genre/category ID?**
Leave `genreIds` empty to capture the overall chart first — its rows include
`primaryGenreId` for each app, which you can use to build out a category list.

**Can I track a specific category instead of the whole store?**
Yes — put its Apple genre ID (e.g. `6014` for Games) in `genreIds`. Provide several IDs
to capture multiple categories in one run.

# Actor input Schema

## `mode` (type: `string`):

"current" captures today's chart snapshot. "history" captures day-by-day chart positions over a period.

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

Which charts to capture: FREE, PAID, or TOP\_GROSSING.

## `genreIds` (type: `array`):

Apple genre/category IDs to capture charts for. Leave empty to capture only the overall (all-categories) chart.

## `maxPosition` (type: `integer`):

Deepest chart position to capture (1 = top spot only). The public demo key caps this at 10.

## `daysPeriod` (type: `integer`):

How many days of history to capture. Only used in "history" mode. The public demo key caps this at 3.

## `iconWidth` (type: `integer`):

Width in pixels for the app icon URL. Apple returns a base URL; the Actor appends a size suffix (e.g. 512x0w.png) so the icon field is a ready-to-use image link.

## `maxResults` (type: `integer`):

Stop after pushing this many rows total (0 = no cap).

## `concurrency` (type: `integer`):

How many chart requests to run in parallel (1-20). Lower this if you hit rate limits.

## Actor input object example

```json
{
  "mode": "current",
  "chartTypes": [
    "FREE"
  ],
  "maxPosition": 100,
  "daysPeriod": 30,
  "iconWidth": 512,
  "maxResults": 0,
  "concurrency": 5
}
```

# Actor output Schema

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

The default dataset — one flat row per chart type × genre × position (and per date, in history mode).

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

The OUTPUT record in the default key-value store: mode, chartTypes, genreIds, rowsPushed, requestsMade, creditsSpent, and stoppedReason.

# 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 = {
    "chartTypes": [
        "FREE"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("appsigma/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 = { "chartTypes": ["FREE"] }

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

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

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

```

## CLI example

```bash
echo '{
  "chartTypes": [
    "FREE"
  ]
}' |
apify call appsigma/app-store-top-charts --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=appsigma/app-store-top-charts",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "App Store Top Charts",
        "description": "Capture Apple App Store Top Free, Top Paid and Top Grossing chart standings — current snapshots or historical day-by-day movement — for the overall chart or any genre.",
        "version": "0.1",
        "x-build-id": "UxJ4aID8zoLAQ8AKp"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/appsigma~app-store-top-charts/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-appsigma-app-store-top-charts",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/appsigma~app-store-top-charts/runs": {
            "post": {
                "operationId": "runs-sync-appsigma-app-store-top-charts",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/appsigma~app-store-top-charts/run-sync": {
            "post": {
                "operationId": "run-sync-appsigma-app-store-top-charts",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "current",
                            "history"
                        ],
                        "type": "string",
                        "description": "\"current\" captures today's chart snapshot. \"history\" captures day-by-day chart positions over a period.",
                        "default": "current"
                    },
                    "chartTypes": {
                        "title": "Chart types",
                        "type": "array",
                        "description": "Which charts to capture: FREE, PAID, or TOP_GROSSING.",
                        "default": [
                            "FREE"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "genreIds": {
                        "title": "Genre IDs",
                        "type": "array",
                        "description": "Apple genre/category IDs to capture charts for. Leave empty to capture only the overall (all-categories) chart.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxPosition": {
                        "title": "Max position",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Deepest chart position to capture (1 = top spot only). The public demo key caps this at 10.",
                        "default": 100
                    },
                    "daysPeriod": {
                        "title": "Days of history",
                        "minimum": 1,
                        "maximum": 1825,
                        "type": "integer",
                        "description": "How many days of history to capture. Only used in \"history\" mode. The public demo key caps this at 3.",
                        "default": 30
                    },
                    "iconWidth": {
                        "title": "Icon width (px)",
                        "minimum": 16,
                        "maximum": 2048,
                        "type": "integer",
                        "description": "Width in pixels for the app icon URL. Apple returns a base URL; the Actor appends a size suffix (e.g. 512x0w.png) so the icon field is a ready-to-use image link.",
                        "default": 512
                    },
                    "maxResults": {
                        "title": "Max results (cost cap)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Stop after pushing this many rows total (0 = no cap).",
                        "default": 0
                    },
                    "concurrency": {
                        "title": "Concurrency",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "How many chart requests to run in parallel (1-20). Lower this if you hit rate limits.",
                        "default": 5
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
