# App Store Ranking Tracker (Apple) (`straightforward_hydra/app-store-ranking-tracker`) Actor

Track where iOS apps rank for search keywords, or pull the App Store top charts (free / paid / grossing) by country and category. No API key needed.

- **URL**: https://apify.com/straightforward\_hydra/app-store-ranking-tracker.md
- **Developed by:** [Dev D](https://apify.com/straightforward_hydra) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 rankings

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 Ranking Tracker (Apple) 📊

**Track where iOS apps rank for search keywords, or pull the App Store top charts — by country and category. No API key required.**

Where your app ranks for a keyword, and who's topping the charts, is core **app store optimization (ASO)** and market intelligence. This Actor tells you an app's **rank for any search term**, or pulls the **top free / paid / grossing charts** for any country and category — all from Apple's public endpoints.

> Uses Apple's public search + charts feeds — no key, no login, no browser.

---

### What you can do with it

- 📈 **Track keyword rankings** — monitor where your (or a competitor's) app ranks for target search terms.
- 🏆 **Watch the charts** — top free / paid / grossing apps by country and category.
- 🌍 **Multi-country** — compare rankings across storefronts.
- 🔍 **Keyword discovery** — see the top apps for any search term.
- 🔔 **Rank alerts** — run on a schedule and get notified when your rank moves.

### Features

- ✅ **No API key** — works out of the box.
- ✅ **Two modes** — keyword rank and top charts.
- ✅ **Track specific apps** — by ID or name — or list the top apps per keyword.
- ✅ **Multi-country, multi-keyword** per run.
- ✅ **Low-maintenance** — official Apple endpoints.

---

### Modes

#### Keyword rank
Provide **keywords** and the **apps** you want the rank of (by ID or name). Get one row per app per keyword with its rank (or "not found" within your search depth).

```json
{
  "mode": "keyword",
  "keywords": ["budget app", "expense tracker"],
  "appNames": ["Mint"],
  "searchDepth": 100,
  "countries": ["us"]
}
````

Leave the apps empty to instead list the **top apps for each keyword** (discovery).

#### Top charts

Pull the top free / paid / grossing apps, optionally by genre.

```json
{
  "mode": "charts",
  "chartType": "topfree",
  "genreId": "6014",
  "limit": 100,
  "countries": ["us", "gb"]
}
```

Common genre IDs: `6014` Games, `6015` Finance, `6023` Food & Drink, `6017` Education, `6020` Medical, `6007` Productivity.

### Input

| Field | Description |
|---|---|
| **Mode** | `keyword` or `charts`. |
| **Keywords** | Search terms (keyword mode). |
| **Tracked app IDs / names** | Apps to get the rank of. |
| **Search depth** | How deep to scan for the rank (1–200). |
| **Chart type / Genre ID / Chart size** | Charts-mode options. |
| **Country storefronts** | Two-letter codes. |
| **App type** | iPhone / iPad / Mac (keyword mode). |
| **Max results** | Overall cap. |

### Output

Each row is one ranking:

```json
{
  "mode": "keyword",
  "context": "budget app",
  "country": "us",
  "rank": 7,
  "found": true,
  "app_id": "300238550",
  "app_name": "Mint: Budget & Expense Manager",
  "artist_name": "Intuit Inc.",
  "price": "Free",
  "primary_genre": "Finance",
  "average_rating": 4.7,
  "rating_count": 720000,
  "url": "https://apps.apple.com/us/app/id300238550"
}
```

### Run it on a schedule

Schedule the Actor daily to build a **rank history** for your keywords or charts, and connect a **Slack / email / Google Sheets** integration to track movements over time.

### Notes & limitations

- Uses Apple's public search + RSS charts feeds — no key needed.
- Keyword rank reflects Apple's public search ordering for that term and storefront (a strong proxy for ASO rank).
- Search depth is capped at 200 results per keyword (Apple's limit).
- Covers the **Apple** App Store.
- This is **public ranking data**.

***

#### Keywords

App Store ranking, ASO, app store optimization, keyword ranking, app rank tracker, top charts, top free apps, top grossing, app store charts, app market intelligence, keyword rank, app ranking, competitor tracking, app analytics, iOS app rank, app store keywords, mobile app intelligence, app discovery, rank tracking, app store data.

# Actor input Schema

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

Keyword = where apps rank for search terms (or the top apps per term). Charts = the top free/paid/grossing app charts.

## `keywords` (type: `array`):

Search terms to check rankings for, e.g. "weather", "budget app". Used in Keyword mode.

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

Keyword mode: the App Store IDs of the apps you want the rank of, e.g. 389801252. Leave empty to instead list the top apps for each keyword.

## `appNames` (type: `array`):

Keyword mode: app names to track (resolved to IDs automatically). Merged with the App IDs above.

## `searchDepth` (type: `integer`):

Keyword mode: how many results to scan for the app's position (1–200). If the app isn't within this depth, rank is reported as not found.

## `chartType` (type: `string`):

Charts mode: which chart to pull.

## `genreId` (type: `string`):

Charts mode: Apple genre ID to filter the chart, e.g. 6014 (Games), 6023 (Food & Drink), 6015 (Finance). Leave empty for all apps.

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

Charts mode: how many ranked apps to return (1–200).

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

Two-letter country codes, e.g. us, gb, de. Rankings differ per country.

## `entity` (type: `string`):

Which app type to search.

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

Stop after this many ranking rows. Leave empty for no limit.

## Actor input object example

```json
{
  "mode": "keyword",
  "keywords": [
    "weather"
  ],
  "searchDepth": 100,
  "chartType": "topfree",
  "limit": 100,
  "countries": [
    "us"
  ],
  "entity": "software"
}
```

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

// Run the Actor and wait for it to finish
const run = await client.actor("straightforward_hydra/app-store-ranking-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 = { "keywords": ["weather"] }

# Run the Actor and wait for it to finish
run = client.actor("straightforward_hydra/app-store-ranking-tracker").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 '{
  "keywords": [
    "weather"
  ]
}' |
apify call straightforward_hydra/app-store-ranking-tracker --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "App Store Ranking Tracker (Apple)",
        "description": "Track where iOS apps rank for search keywords, or pull the App Store top charts (free / paid / grossing) by country and category. No API key needed.",
        "version": "0.1",
        "x-build-id": "JaJeK1dP9wiQkIhqW"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/straightforward_hydra~app-store-ranking-tracker/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-straightforward_hydra-app-store-ranking-tracker",
                "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/straightforward_hydra~app-store-ranking-tracker/runs": {
            "post": {
                "operationId": "runs-sync-straightforward_hydra-app-store-ranking-tracker",
                "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/straightforward_hydra~app-store-ranking-tracker/run-sync": {
            "post": {
                "operationId": "run-sync-straightforward_hydra-app-store-ranking-tracker",
                "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": [
                            "keyword",
                            "charts"
                        ],
                        "type": "string",
                        "description": "Keyword = where apps rank for search terms (or the top apps per term). Charts = the top free/paid/grossing app charts.",
                        "default": "keyword"
                    },
                    "keywords": {
                        "title": "Keywords",
                        "type": "array",
                        "description": "Search terms to check rankings for, e.g. \"weather\", \"budget app\". Used in Keyword mode.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "appIds": {
                        "title": "Tracked app IDs",
                        "type": "array",
                        "description": "Keyword mode: the App Store IDs of the apps you want the rank of, e.g. 389801252. Leave empty to instead list the top apps for each keyword.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "appNames": {
                        "title": "Tracked app names",
                        "type": "array",
                        "description": "Keyword mode: app names to track (resolved to IDs automatically). Merged with the App IDs above.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchDepth": {
                        "title": "Search depth",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Keyword mode: how many results to scan for the app's position (1–200). If the app isn't within this depth, rank is reported as not found.",
                        "default": 100
                    },
                    "chartType": {
                        "title": "Chart type",
                        "enum": [
                            "topfree",
                            "toppaid",
                            "topgrossing"
                        ],
                        "type": "string",
                        "description": "Charts mode: which chart to pull.",
                        "default": "topfree"
                    },
                    "genreId": {
                        "title": "Genre / category ID",
                        "type": "string",
                        "description": "Charts mode: Apple genre ID to filter the chart, e.g. 6014 (Games), 6023 (Food & Drink), 6015 (Finance). Leave empty for all apps."
                    },
                    "limit": {
                        "title": "Chart size",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Charts mode: how many ranked apps to return (1–200).",
                        "default": 100
                    },
                    "countries": {
                        "title": "Country storefronts",
                        "type": "array",
                        "description": "Two-letter country codes, e.g. us, gb, de. Rankings differ per country.",
                        "default": [
                            "us"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "entity": {
                        "title": "App type (keyword mode)",
                        "enum": [
                            "software",
                            "iPadSoftware",
                            "macSoftware"
                        ],
                        "type": "string",
                        "description": "Which app type to search.",
                        "default": "software"
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Stop after this many ranking rows. Leave empty for no limit."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
