# App Store Search Scraper - Top Charts & Keyword Rankings (ASO) (`pandabear/app-store-search-charts-scraper`) Actor

App Store search scraper: get Apple App Store search results by keyword with rank positions, top charts (free, paid, grossing, by category), developer apps and app details via Apple's official APIs. ASO keyword rank tracking. $1 per 1,000 apps.

- **URL**: https://apify.com/pandabear/app-store-search-charts-scraper.md
- **Developed by:** [Andy zeng](https://apify.com/pandabear) (community)
- **Categories:** Developer tools, E-commerce
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 app records

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 Store Scraper: Search, Top Charts & Keyword Ranks

**Scrape Apple App Store app data by keyword, top chart, developer or app ID, and track the keyword rankings of your apps.** All data comes from Apple's **official public APIs**: the iTunes Search API, the iTunes Lookup API and Apple's top-charts RSS feeds. No login, no cookies, no browser, so runs are fast, cheap and reliable.

### What you can scrape

| Source | Input | What you get |
|---|---|---|
| **Keyword search** | `searchTerms` | Up to 200 apps per keyword with their **rank position** |
| **Keyword rank tracking (ASO)** | `trackApps` | Where your apps (and your competitors') rank for each keyword and country |
| **Top charts** | `charts` + `chartCategories` | Top Free, Paid and Grossing (iPhone and iPad) plus New apps, overall or per category (Games, Productivity, Finance …) |
| **Developer portfolios** | `developers` | All apps from a developer (by URL, ID or name), sorted by rating count |
| **App details** | `apps` | Full details for app URLs, IDs, bundle IDs or names |

Every source runs for every **country** you list (`us`, `gb`, `de`, `jp` …), so you can compare markets in one run.

### Data fields

`source`, `query`, `country`, `rank`, `appId`, `appName`, `bundleId`, `developer`, `developerId`, `developerUrl`, `sellerName`, `sellerUrl`, `price`, `currency`, `formattedPrice`, `averageRating`, `ratingCount`, `currentVersionRating`, `currentVersionRatingCount`, `version`, `releaseDate`, `currentVersionReleaseDate`, `daysSinceLastUpdate`, `primaryGenre`, `genres`, `contentRating`, `fileSizeMB`, `minimumOsVersion`, `languages`, `iconUrl`, `screenshotUrls`, `ipadScreenshotUrls`, `appStoreUrl`, `description`, `releaseNotes` and, for charts, `chart` / `chartCategory`.

### Use cases

- **ASO and keyword research:** see which apps rank for a keyword in each country, and track your own rank over time with a scheduled run.
- **Competitor monitoring:** follow competitors' ratings, versions, update frequency, pricing and chart positions.
- **Market research:** find the top grossing apps in a category and country, and spot new apps entering the charts.
- **Lead generation:** build lists of app developers with seller websites, ratings and categories.
- **Investment and trend analysis:** take daily snapshots of the top charts to track momentum.
- **AI / LLM datasets:** clean, structured app metadata and descriptions.

### Example input

```json
{
  "searchTerms": ["habit tracker", "budget app"],
  "maxResultsPerSearch": 50,
  "trackApps": ["https://apps.apple.com/us/app/streaks/id963034692"],
  "charts": ["topFree", "topGrossing"],
  "chartCategories": ["Games", "Productivity"],
  "chartLimit": 100,
  "developers": ["https://apps.apple.com/us/developer/meta-platforms-inc/id284882218"],
  "apps": ["310633997", "com.burbn.instagram"],
  "countries": ["us", "gb", "de"]
}
```

The default input (one keyword, 20 results, US) finishes in a few seconds.

### Output example

```json
{
  "source": "search",
  "query": "habit tracker",
  "country": "us",
  "rank": 1,
  "appId": "1438388363",
  "appName": "Habit Tracker",
  "developer": "InnerGrow",
  "price": 0,
  "formattedPrice": "Free",
  "averageRating": 4.791,
  "ratingCount": 148262,
  "version": "2.15.6",
  "currentVersionReleaseDate": "2026-10-22T22:11:24Z",
  "daysSinceLastUpdate": 3,
  "primaryGenre": "Productivity",
  "fileSizeMB": 302.0,
  "appStoreUrl": "https://apps.apple.com/us/app/habit-tracker/id1438388363"
}
```

The **SUMMARY** record contains counts per source and `keywordRankings` with each tracked app's rank (or `null` if it isn't in the results) for every keyword and country.

### Pricing (pay per event)

| Event | Price |
|---|---|
| Actor start (per run) | $0.005 |
| App record saved | $0.001 (= $1 per 1,000 apps) |

A daily snapshot of 3 top charts × 100 apps costs about **$0.31**. Set a maximum cost per run, and the actor stops cleanly at your limit while keeping the results collected so far.

### FAQ

**Is it legal?** Yes. The actor only calls Apple's documented public endpoints (the iTunes Search/Lookup API and the RSS feeds Apple publishes for its charts). It doesn't scrape web pages or bypass any protection.

**Is the search rank the same as in the App Store app?** The rank is the position in Apple's official Search API results for that keyword and country. It's a widely used ASO proxy, but the App Store app can personalize results, so treat it as an indicator.

**How many chart positions?** Apple's chart feeds usually serve 100–200 apps per chart.

**Do you have reviews?** Yes. Use [App Store Reviews Scraper](https://apify.com/pandabear/app-store-reviews-scraper) for reviews from 76 countries, with analytics.

### Related actors by pandabear

- [App Store Reviews Scraper - All Countries + Analytics](https://apify.com/pandabear/app-store-reviews-scraper): Apple App Store reviews from 76 countries, with app details, rating trends by version and complaint keywords.
- [Bulk WHOIS & Domain Availability Checker](https://apify.com/pandabear/bulk-whois-domain-checker): registrar, creation and expiry dates, domain age, availability and DNS for thousands of domains.
- [Sitemap Extractor & SEO Index Audit](https://apify.com/pandabear/sitemap-seo-auditor): extracts every sitemap URL and finds 404, noindex and canonical problems.
- [Wayback Machine URL Extractor & Lost Page Finder](https://apify.com/pandabear/wayback-lost-url-finder): lists a domain's historical URLs, finds lost pages and suggests 301 redirects.
- [Website Contact Scraper - Emails, Phones, Socials & Tech Stack](https://apify.com/pandabear/website-contact-enrichment): emails, phones, social links, company info and tech stack from any list of websites.
- [Trending Topics Scraper - Google Trends, HN, Wikipedia & More](https://apify.com/pandabear/trending-topics-aggregator): trending topics from Google Trends, Hacker News, Wikipedia, GitHub, Bluesky, Baidu and more, with heat scores and cross-platform clusters.

***

### 中文说明

#### 这个工具做什么

按关键词、排行榜、开发者或应用 ID 抓取苹果 App Store 的应用数据，并跟踪你的应用在各个关键词下的排名（ASO）。数据全部来自苹果**官方公开接口**：iTunes Search API、iTunes Lookup API 和苹果的排行榜 RSS。不登录、不用 Cookie、不用浏览器，速度快、费用低、运行稳定。

#### 可以抓什么

- **关键词搜索**（`searchTerms`）：每个关键词最多 200 个应用，附带排名位置
- **关键词排名跟踪**（`trackApps`）：你的应用或竞品在每个关键词、每个国家排第几
- **排行榜**（`charts` + `chartCategories`）：iPhone/iPad 免费榜、付费榜、畅销榜和新上架，可以看总榜，也可以按分类看（游戏、效率、财务……）
- **开发者的全部应用**（`developers`）：输入开发者链接、ID 或名称
- **应用详情**（`apps`）：输入应用链接、ID、bundle ID 或名称

每种数据都会对你填写的每个国家分别抓取，一次运行就能对比多个市场。

#### 输出字段

应用 ID、名称、bundle ID、开发者、开发者 ID 和链接、卖家网站、价格、评分、评分人数、当前版本评分、版本号、首次发布和最近更新日期、距上次更新的天数、分类、年龄分级、大小（MB）、最低系统版本、支持语言、图标、截图、App Store 链接、描述、更新说明，以及来源、关键词或榜单、国家、排名。

#### 适用场景

- ASO 关键词研究和排名跟踪（可设置定时运行）
- 竞品监控：评分、版本、更新频率、价格、榜单位置
- 市场调研：某个国家某个分类的畅销应用、新上榜应用
- 获客：整理开发者名单（含卖家网站、评分、分类）
- 投资和趋势分析：每天给榜单拍一次快照
- AI 数据集：结构化的应用信息和描述

#### 价格（按事件计费）

- 每次运行启动：$0.005
- 每保存一条应用记录：$0.001（每 1000 条 $1）

每天抓 3 个榜单、每个 100 个应用，大约 $0.31。可以设置单次运行的费用上限，达到上限后会正常停止并保留已有结果。

#### 常见问题

- **合法吗？** 只调用苹果公开的 iTunes Search/Lookup API 和苹果发布的排行榜 RSS，不抓网页，也不绕过任何限制。
- **搜索排名和 App Store 里看到的一样吗？** 这里的排名是该关键词、该国家在苹果官方搜索 API 结果中的位置，是常用的 ASO 参考指标。App Store 里的结果可能因人而异，请作为参考。
- **要抓评论？** 请用 [App Store Reviews Scraper](https://apify.com/pandabear/app-store-reviews-scraper)（覆盖 76 个国家，附带分析）。

#### pandabear 的其他工具

- [App Store Reviews Scraper](https://apify.com/pandabear/app-store-reviews-scraper)：抓取苹果 App Store 76 个国家的应用评论，附带应用详情、按版本的评分趋势和差评关键词
- [Bulk WHOIS & Domain Availability Checker](https://apify.com/pandabear/bulk-whois-domain-checker)：批量查询域名注册商、注册和到期日期、域名年龄、是否可注册以及 DNS
- [Sitemap Extractor & SEO Index Audit](https://apify.com/pandabear/sitemap-seo-auditor)：提取网站全部 sitemap 网址，找出 404、noindex、canonical 等问题
- [Wayback Machine URL Extractor & Lost Page Finder](https://apify.com/pandabear/wayback-lost-url-finder)：提取域名的历史网址，找出丢失页面并给出 301 重定向建议
- [Website Contact Scraper](https://apify.com/pandabear/website-contact-enrichment)：从网站列表中提取邮箱、电话、社交媒体链接、公司信息和技术栈
- [Trending Topics Scraper](https://apify.com/pandabear/trending-topics-aggregator)：汇总 Google Trends、Hacker News、维基百科、GitHub、Bluesky、百度热搜等平台的热门话题，附热度分和跨平台聚类

# Actor input Schema

## `searchTerms` (type: `array`):

Keywords to search on the App Store. Each result gets its rank position for that keyword.

## `maxResultsPerSearch` (type: `integer`):

Up to 200 (Apple's limit).

## `trackApps` (type: `array`):

Optional. App Store URLs, app IDs, bundle IDs or names. For each keyword and country, the SUMMARY record shows where these apps rank (or null if outside the results).

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

Optional. Apple top charts to scrape.

## `chartCategories` (type: `array`):

Optional. Category names or IDs, e.g. Games, Productivity, Health & Fitness, Finance, 6014. Empty = overall charts.

## `chartLimit` (type: `integer`):

Up to 200 (Apple usually serves 100–200).

## `apps` (type: `array`):

Optional. Get full details for specific apps.

## `developers` (type: `array`):

Optional. Developer page URLs (https://apps.apple.com/us/developer/.../id284882218), developer IDs or names.

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

Two-letter App Store country codes, e.g. us, gb, de, jp. Every source is collected for each country.

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

Long text fields. Turn off for smaller output.

## `enrichChartApps` (type: `boolean`):

Add ratings, rating count, version, size, etc. to chart entries via the official Lookup API.

## Actor input object example

```json
{
  "searchTerms": [
    "habit tracker"
  ],
  "maxResultsPerSearch": 20,
  "chartLimit": 100,
  "countries": [
    "us"
  ],
  "includeDescription": true,
  "enrichChartApps": true
}
```

# Actor output Schema

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

One record per app per keyword / chart / developer / lookup, with rank and full app details.

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

Counts per source and keyword rank positions of tracked apps.

# 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 = {
    "searchTerms": [
        "habit tracker"
    ],
    "maxResultsPerSearch": 20,
    "countries": [
        "us"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("pandabear/app-store-search-charts-scraper").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 = {
    "searchTerms": ["habit tracker"],
    "maxResultsPerSearch": 20,
    "countries": ["us"],
}

# Run the Actor and wait for it to finish
run = client.actor("pandabear/app-store-search-charts-scraper").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 '{
  "searchTerms": [
    "habit tracker"
  ],
  "maxResultsPerSearch": 20,
  "countries": [
    "us"
  ]
}' |
apify call pandabear/app-store-search-charts-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,pandabear/app-store-search-charts-scraper"
        }
    }
}
```

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/0YgjUvF13z2pq3Ahs/builds/A3graUajWbdH2wn0K/openapi.json
