# App Store Scraper (`automly/appstore-scraper`) Actor

Scrape Apple App Store apps by keyword, app ID, developer or similar apps, in any country: name, developer, price, rating, ratings by stars, version, release notes, dates, size, age rating, in-app purchases, privacy labels, screenshots. Plus top free, paid and grossing charts.

- **URL**: https://apify.com/automly/appstore-scraper.md
- **Developed by:** [Automly](https://apify.com/automly) (community)
- **Categories:** Developer tools, E-commerce
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.45 / 1,000 apps

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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 Scraper - iOS Apps, Rankings, Ratings & Details

### What is App Store Scraper?

**App Store Scraper** is a tool that lets you **scrape iOS apps, rankings and ratings from the Apple App Store**: name, developer, price, rating, rating count, **ratings by stars**, version, release notes, release and update dates, size, age rating, categories, languages, screenshots, icon and description, plus **in-app purchases, privacy labels and version history**. Search by keyword, paste app IDs or links, list a developer's apps, find similar apps, or download the **top free, paid and grossing charts** for any country and category. Click **Start** and download the apps as Excel, CSV or JSON.

- ⚡ **Fast:** 1,000 apps with full details in under a minute, 2,780 search results from 15 searches in 14 seconds, 3,000 chart places in under a minute (our tests)
- 🌍 **Any country:** every App Store country, with local prices and currencies, in one run
- 📊 **Full details:** ratings by stars, in-app purchases with prices, privacy labels, version history
- 🔓 **No login:** no Apple account needed
- 💸 **Free to try:** the $5 of free usage every Apify account gets each month covers about 6,200 apps

### What can App Store Scraper do?

- **Search the App Store by keyword**, like `photo editor` or `budget planner`, in one or many countries
- **Scrape App Store app details by app ID or link**: everything the app's page shows
- **Get the App Store top charts**: top free and top paid (200 places) and top grossing (100), overall or per category, like Games, Education or Puzzle Games
- **Scrape all apps by an App Store developer**, like all apps by Duolingo or Apple
- **Find similar iOS apps**: the "You might also like" apps for any app
- **Track App Store ratings and rating counts**, prices, versions and update dates over time
- **Compare in-app purchase prices** and subscriptions across apps and countries
- **Collect privacy labels**: what data apps track, link to you, or do not collect
- Export to Excel, CSV, JSON, HTML or XML, or send the data to Google Sheets, Make, Zapier and more

### What data can you extract from the App Store?

| | | |
|---|---|---|
| 📱 App name, ID and bundle ID | 👤 Developer, developer ID and seller | 💵 Price, currency and price shown |
| ⭐ Rating and rating count | 📊 Ratings by stars (1 to 5) | 🆕 Version and release notes |
| 📅 First release and last update | 📦 Size | 🔞 Age rating and content advisories |
| 🗂️ Categories | 🌐 Languages | 🖼️ Icon and screenshots |
| 📝 Description and subtitle | 🛒 In-app purchases with prices | 🔒 Privacy labels |
| 🕘 Version history | 🏆 Chart place and Editors' Choice | 🔗 Website, support and privacy policy links |

### How to scrape the App Store

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. Open **App Store Scraper**.
3. Choose **What to scrape**: Apps, App details or Top charts.
4. Enter search terms, app IDs or links, developers, or the charts and categories you want, and the countries.
5. Click **Start**, then download the apps as Excel, CSV, JSON or HTML.

### How much does it cost to scrape App Store apps?

You pay only for the rows you get: one price per app or chart place, and a higher one per app with full details (ratings by stars, in-app purchases, privacy labels, version history and more).

| Apify plan | Apps per 1,000 | Apps with full details per 1,000 |
|---|---|---|
| Free | $0.80 | $2.00 |
| Starter (Bronze) | $0.65 | $1.70 |
| Scale (Silver) | $0.55 | $1.40 |
| Business (Gold) and higher | $0.45 | $1.10 |

Platform usage is included in these prices, so there is nothing else to pay. For example, 1,000 search results cost $0.80 on the Free plan and $0.45 on Business, and 1,000 apps with full details cost $2.00 on the Free plan.

Every Apify account gets **$5 of free usage each month**, so you can try it at no cost. **Max results** keeps the cost of a run under control, and you can also set a maximum cost per run. See the **Pricing** tab for details.

### ⬇️ Input

| Setting | What it does |
|---|---|
| **What to scrape** | **Apps**: one row per app found. **App details**: the same apps with ratings by stars, in-app purchases, privacy labels, version history and more. **Top charts**: one row per chart place |
| **Search terms** | Words to search the App Store for, like `photo editor`. Up to 200 apps per term and country |
| **App IDs or links** | App IDs (`570060128`) or links (`https://apps.apple.com/us/app/duolingo-language-lessons/id570060128`). A link's own country is used |
| **Developers (all their apps)** | Developer IDs (`570060151`) or links (`https://apps.apple.com/us/developer/duolingo/id570060151`) to get all their apps, up to 200 each |
| **Find similar apps for** | App IDs or links whose "You might also like" apps you want, about 60 per app |
| **Countries** | Two-letter App Store country codes, like `us`, `gb`, `de`, `jp` (default `us`) |
| **Charts** | Top free, top paid, top grossing (Top charts) |
| **Chart categories** | Category names or IDs, like `All apps`, `Games`, `Education`, `Puzzle Games` or `6014` |
| **Max results** | The most rows the whole run saves (default 100). Set 0 for no limit |

Connection settings: the default works for most runs.

Search results in two countries:

```json
{
  "dataType": "apps",
  "searchTerms": ["photo editor", "budget planner"],
  "countries": ["us", "gb"],
  "maxResults": 500
}
```

Full details of two apps:

```json
{
  "dataType": "details",
  "appIds": ["570060128", "https://apps.apple.com/us/app/instagram/id389801252"]
}
```

Top free and top grossing games in the US and Japan:

```json
{
  "dataType": "charts",
  "chartTypes": ["topfree", "topgrossing"],
  "chartGenres": ["Games"],
  "countries": ["us", "jp"],
  "maxResults": 0
}
```

### ⬆️ Output

Every app is one row. An App details row (lists shortened):

```json
{
  "appId": "570060128",
  "name": "Duolingo: Language Lessons",
  "url": "https://apps.apple.com/us/app/duolingo-language-lessons/id570060128",
  "bundleId": "com.duolingo.DuolingoMobile",
  "developer": "Duolingo",
  "developerId": "570060151",
  "developerUrl": "https://apps.apple.com/us/developer/duolingo/id570060151",
  "sellerName": "Duolingo, Inc",
  "price": 0.0,
  "currency": "USD",
  "formattedPrice": "Free",
  "rating": 4.72,
  "ratingCount": 5481727,
  "ratingCountCurrentVersion": 5481727,
  "version": "7.142.0",
  "releaseNotes": "Our mascot owl, Duo, is trading in his usual diet of mice for bugs this week...",
  "releasedAt": "2012-11-13T08:00:00Z",
  "updatedAt": "2026-09-28T17:42:01Z",
  "sizeBytes": 515190784,
  "ageRating": "4+",
  "contentAdvisories": [],
  "primaryGenre": "Education",
  "primaryGenreId": 6017,
  "genres": ["Education", "Social Networking"],
  "languages": ["AR", "BN", "CS", "NL", "EN", "FR"],
  "minimumOsVersion": "17.0",
  "iconUrl": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/84/06/49/840649d1-5c4c-0c8a-4947-cf38e18493e4/AppIcon-0-0-1x_U007epad-0-1-85-220.png/512x512bb.jpg",
  "screenshots": ["https://is1-ssl.mzstatic.com/image/thumb/PurpleSource211/v4/6e/ef/30/6eef3023-de04-3b29-21f8-a993245b9abd/iPhone6.5_-_Default_-_first_screen_adapt_Var_2_01.jpg/320x480bb.jpg"],
  "ipadScreenshots": ["https://is1-ssl.mzstatic.com/image/thumb/PurpleSource221/v4/76/6d/5b/766d5b1d-c08b-34c8-f9e9-f6dbb42783a1/Tablet_-_Default_-_first_screen_adapt_Var_2_01.jpg/360x480bb.jpg"],
  "description": "Learn a new language, chess & more with the world's most downloaded education app!...",
  "websiteUrl": "https://www.duolingo.com",
  "subtitle": "Languages, Math, Music & Chess",
  "ratingHistogram": {"1": 138979, "2": 46270, "3": 134373, "4": 555285, "5": 4608191},
  "hasInAppPurchases": true,
  "inAppPurchases": [
    {"name": "Super Duolingo", "price": 9.99, "currency": "USD", "formattedPrice": "$9.99", "isSubscription": true, "description": "Go ad-free and offline any lesson."}
  ],
  "privacyLabels": [
    {"type": "DATA_USED_TO_TRACK_YOU", "title": "Data Used to Track You", "categories": [{"category": "Purchases", "dataTypes": ["Purchase History"]}], "purposes": []},
    {"type": "DATA_LINKED_TO_YOU", "title": "Data Linked to You", "categories": [], "purposes": [{"purpose": "Third-Party Advertising", "categories": [{"category": "Location", "dataTypes": ["Coarse Location"]}]}]}
  ],
  "privacyPolicyUrl": "https://www.duolingo.com/privacy",
  "supportUrl": "https://www.duolingo.com/info",
  "compatibility": "Requires iOS 17.0 or later. Compatible with iPhone, iPad, and iPod touch.",
  "deviceFamilies": ["iphone", "ipad"],
  "isEditorsChoice": true,
  "chartPosition": {"chart": "top-free", "genre": "Education", "genreId": 6017, "position": 1},
  "versionHistory": [{"version": "7.142.0", "releaseNotes": "Our mascot owl, Duo, is trading in his usual diet...", "releasedAt": "2026-09-28T17:42:01Z"}],
  "similarAppIds": ["379968583", "1460579936", "520436541"],
  "developerOtherAppIds": ["1440502568", "6754582936"],
  "copyright": "© 2026 Duolingo, Inc.",
  "chartType": null,
  "chartGenre": null,
  "chartGenreId": null,
  "position": null,
  "country": "US",
  "source": "570060128",
  "sourceType": "app",
  "scrapedAt": "2026-10-02T14:43:42Z"
}
```

An **Apps** row has the same fields up to `websiteUrl`; the detail fields are empty. A **Top charts** row adds the chart and the place:

```json
{
  "appId": "1621328561",
  "name": "MONOPOLY GO!",
  "developer": "Scopely, Inc.",
  "rating": 4.8,
  "ratingCount": 3844603,
  "chartType": "topgrossing",
  "chartGenre": "Games",
  "chartGenreId": 6014,
  "position": 1,
  "country": "US",
  "source": "Top grossing / Games",
  "sourceType": "chart"
}
```

The **Overview** tab lists every app with its icon, the **Details** tab shows ratings by stars, in-app purchases and privacy labels, and the **Charts** tab shows chart places in order. The run report lists any app or developer that does not exist in a country's store.

### Which fields come with which choice?

| Field | Apps | App details | Top charts |
|---|---|---|---|
| Name, developer, price, rating, rating count, version, release notes, dates, size, age rating, categories, languages, icon, screenshots, description | ✅ | ✅ | ✅ |
| Ratings by stars, subtitle, compatibility | | ✅ | |
| In-app purchases, privacy labels, version history | | ✅ | |
| Similar apps and developer's other apps (IDs), Editors' Choice, chart place | | ✅ | |
| Chart, chart category and place | | | ✅ |
| Position in the search results or list | ✅ | ✅ | ✅ |

### Top chart categories

`All apps`, `Books`, `Business`, `Developer Tools`, `Education`, `Entertainment`, `Finance`, `Food & Drink`, `Graphics & Design`, `Health & Fitness`, `Lifestyle`, `Magazines & Newspapers`, `Medical`, `Music`, `Navigation`, `News`, `Photo & Video`, `Productivity`, `Reference`, `Shopping`, `Social Networking`, `Sports`, `Travel`, `Utilities`, `Weather`, `Games`, and the game categories `Action Games`, `Adventure Games`, `Board Games`, `Card Games`, `Casino Games`, `Casual Games`, `Family Games`, `Music Games`, `Puzzle Games`, `Racing Games`, `Role-Playing Games`, `Simulation Games`, `Sports Games`, `Strategy Games`, `Trivia Games`, `Word Games`. You can also use the category ID, like `6014` for Games.

In the top free and top paid charts, **All apps** lists apps other than games, as the App Store app does; pick **Games** for games. The top grossing **All apps** chart includes games.

### How can I use App Store data?

- **App store optimization (ASO):** see which apps rank for your keywords, with their titles, subtitles and ratings
- **Competitor tracking:** follow competitors' versions, release notes, prices, ratings and in-app purchase prices
- **Market research:** find the top apps per category and country, and the developers behind them
- **Lead generation:** build lists of developers with their websites and support pages
- **Pricing research:** compare app and subscription prices across countries and currencies
- **Privacy research:** see which apps track users or collect which data

### How many apps can I get?

Up to 200 apps per search term and country (the App Store shows no more for one search; add more terms to collect more), up to 200 apps per developer, about 60 similar apps per app, 200 places in the top free and top paid charts and 100 in top grossing. An app found by two inputs in the same country is saved once.

### Scrape more app data

| Actor | What it gets |
|---|---|
| [App Store Reviews Scraper](https://apify.com/automly/appstore-reviews-scraper) | iOS app reviews from the App Store: rating, title, text, app version, date and reviewer, in many countries |
| [Product Hunt Launches Scraper](https://apify.com/automly/product-hunt-launches-scraper) | Product Hunt launches from daily, weekly and monthly leaderboards with upvotes, comments and makers |
| [Trustpilot Reviews Scraper - Ratings, Replies & Company Data](https://apify.com/automly/trustpilot-reviews-scraper) | Trustpilot reviews for any company with rating, text, dates and company replies |
| [Reddit Scraper - Posts, Comments, Users, Subreddits & Search](https://apify.com/automly/reddit-ultimate-scraper) | Reddit posts and comments by keyword or subreddit, to see what users say about an app |

### ❓FAQ

#### How much does it cost to scrape the App Store?

$0.80 per 1,000 apps or chart places and $2.00 per 1,000 apps with full details on the Free plan, less on higher plans. See "How much does it cost to scrape App Store apps?" above for every plan.

#### Can I get App Store reviews too?

Yes, with our [App Store Reviews Scraper](https://apify.com/automly/appstore-reviews-scraper): review text, title, rating, version, date and reviewer, for any app and country.

#### Do I need an Apple account?

No. The scraper reads the same public App Store pages anyone can see without signing in.

#### Which countries are supported?

Every App Store country. Use two-letter codes like `us`, `gb`, `de`, `fr`, `jp`, `br` or `in`. Names, descriptions, prices and charts come in that country's store language and currency.

#### How many apps can I get per search?

Up to 200 apps per search term and country, 200 per developer, about 60 similar apps per app, and the full top free and top paid (200 places) and top grossing (100 places) charts. Add more search terms or countries to collect more.

#### What happens with a removed app or a wrong ID?

The run goes on with the other inputs, and the run report lists the apps and developers that do not exist in that country's store. An app sold in one country but not another is found only where it is sold.

#### Can I get results in real time?

Yes. Besides normal runs, the actor has a real-time API that answers with the apps directly, without starting a run:

```
GET https://<your-actor-standby-url>/search?term=photo%20editor&country=us
GET https://<your-actor-standby-url>/app?id=570060128
Authorization: Bearer <YOUR_API_TOKEN>
```

#### Can I connect App Store Scraper to other tools or AI agents?

Yes. Start runs and download results with the Apify API or the Python and JavaScript clients, send results to Make, Zapier, n8n, Google Sheets or Slack with Apify integrations and webhooks, or let AI assistants and agents run it through the Apify MCP server at [mcp.apify.com](https://mcp.apify.com).

#### Is it legal to scrape the App Store?

This scraper only collects public app information that developers chose to publish on the App Store. It does not collect private data such as user accounts or email addresses. Some fields, like a developer's or seller's name, can still be personal data, which may be protected by laws such as GDPR, so only scrape it for a legitimate reason and ask a lawyer if you are unsure. You can read more in [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

App Store Scraper is an independent tool. It is not affiliated with, endorsed by or sponsored by Apple or the App Store.

#### Something isn't working, or I need another field?

Open the **Issues** tab with your input and what you expected. We read every one and usually reply within a day.

### ⭐ Your feedback

Have an idea or found a problem? Tell us on the **Issues** tab. If App Store Scraper saved you time, a short review on the **Reviews** tab helps other people find it and tells us what to improve.

# Actor input Schema

## `dataType` (type: `string`):

Apps: one row per app found by your search terms, app IDs, developers and similar apps. App details: the same apps with every detail the App Store shows. Top charts: one row per chart place for the charts and categories below.

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

Words to search the App Store for, like photo editor or budget planner, one per line. Up to 200 apps per term and country.

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

App Store app IDs (570060128) or app links (https://apps.apple.com/us/app/duolingo-language-lessons/id570060128), one per line. A link's own country is used.

## `developerIds` (type: `array`):

Developer IDs (570060151) or developer links (https://apps.apple.com/us/developer/duolingo/id570060151) to get every app they publish, up to 200 each.

## `similarToAppIds` (type: `array`):

App IDs or links whose "You might also like" apps you want, about 60 per app.

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

Two-letter App Store country codes, like us, gb, de or jp. Each search term, app, developer and chart is read in every country listed.

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

Which charts to get when What to scrape is Top charts.

## `chartGenres` (type: `array`):

Categories by name or ID: All apps, Games, Education, Finance, Health & Fitness, Photo & Video, Productivity, Social Networking, Puzzle Games, and more (see the README). In the free and paid charts, All apps lists apps other than games, as the App Store does; use Games for games.

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

The most rows this run saves, across all inputs and countries. Set 0 for no limit.

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

The default works for most runs. If results come back empty, try a different proxy option.

## Actor input object example

```json
{
  "dataType": "apps",
  "searchTerms": [
    "photo editor"
  ],
  "countries": [
    "us"
  ],
  "chartTypes": [
    "topfree"
  ],
  "chartGenres": [
    "All apps"
  ],
  "maxResults": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `details` (type: `string`):

No description

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

No description

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

No description

## `report` (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 = {
    "searchTerms": [
        "photo editor"
    ],
    "countries": [
        "us"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("automly/appstore-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": ["photo editor"],
    "countries": ["us"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("automly/appstore-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": [
    "photo editor"
  ],
  "countries": [
    "us"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call automly/appstore-scraper --silent --output-dataset

```

## MCP server setup

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