# Apple App Store Scraper — Apps, Ratings & Prices (`hipersoft/app-store-scraper`) Actor

Search the Apple App Store and scrape app details: title, developer, rating, rating count, price, genre, version, content rating, size, description and icon. Fast clean HTTP via the iTunes API, no setup. For iOS app market research and ASO.

- **URL**: https://apify.com/hipersoft/app-store-scraper.md
- **Developed by:** [Hipersoft](https://apify.com/hipersoft) (community)
- **Categories:** Other
- **Features:** Limited permissions
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.001 / app scraped

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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

## Apple App Store Scraper — Apps, Ratings, Prices & Metadata

Apple App Store Scraper lets you search the App Store and extract full app details as clean, structured JSON. Give it keywords or specific App Store **IDs / URLs** and pull **title, developer, rating and rating count, price, genre, version, content rating, size, description and icon** — from any storefront country. Export to JSON, CSV, Excel or XML. Fast and reliable to set up. Built for iOS market research, ASO teams and app analysts.

![Apple App Store Scraper input — search terms, app IDs and storefront country in the Apify Console](https://api.apify.com/v2/key-value-stores/SUfvnaFLd9z9eBCtV/records/app-store-scraper-input.png?v=2)

### What does the App Store Scraper do?

This App Store crawler collects app metadata at scale so you don't have to check listings by hand. Search by keyword or look up exact apps, then export every data point — ratings, pricing, genres, versions and more — as a ready-to-use dataset for analytics, dashboards or ASO tracking.

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

| Data point | Description |
| --- | --- |
| Identity | `appId`, `bundleId`, `title`, `url` |
| Developer | `developer`, `developerId`, `seller`, `sellerUrl` |
| Ratings | `rating`, `ratingCount`, `ratingCurrentVersion` |
| Pricing | `price`, `formattedPrice`, `free`, `currency` |
| Category | `genre`, `genres`, `contentRating` |
| Release | `version`, `releaseDate`, `minimumOsVersion`, `sizeBytes` |
| Media & copy | `icon`, `description` |

### What you get

Each app is one clean dataset record. Export the full table to JSON, CSV, Excel or XML.

![Apple App Store Scraper output example — app rows with rating, price, genre and version as structured JSON](https://api.apify.com/v2/key-value-stores/SUfvnaFLd9z9eBCtV/records/app-store-scraper-output.png?v=5)

```json
{
  "appId": 1064216828,
  "bundleId": "com.calm.calmapp",
  "title": "Calm",
  "developer": "Calm.com, Inc.",
  "developerId": 1064216831,
  "rating": 4.8,
  "ratingCount": 1892345,
  "ratingCurrentVersion": 4.7,
  "price": 0,
  "formattedPrice": "Free",
  "free": true,
  "currency": "USD",
  "genre": "Health & Fitness",
  "genres": ["Health & Fitness", "Lifestyle"],
  "contentRating": "4+",
  "version": "6.20",
  "releaseDate": "2024-05-20T12:00:00Z",
  "minimumOsVersion": "15.0",
  "sizeBytes": 312456789,
  "seller": "Calm.com, Inc.",
  "sellerUrl": "https://www.calm.com",
  "icon": "https://is1-ssl.mzstatic.com/image/thumb/.../512x512bb.jpg",
  "description": "Calm is the #1 app for sleep, meditation and relaxation...",
  "url": "https://apps.apple.com/us/app/calm/id1064216828"
}
```

#### Output schema

| Field | Type | Description |
| --- | --- | --- |
| `appId` | integer | Apple's numeric App Store identifier for the app. |
| `bundleId` | string | The app's bundle identifier (reverse-DNS, e.g. `com.calm.calmapp`). |
| `title` | string | App name as shown on the store listing. |
| `developer` | string | Name of the app's developer or publisher. |
| `developerId` | integer | Apple's numeric identifier for the developer. |
| `rating` | number | Average star rating across all versions. |
| `ratingCount` | integer | Total number of ratings the app has received. |
| `ratingCurrentVersion` | number | Average star rating for the current version. |
| `price` | integer | Numeric price in the storefront currency (0 for free apps). |
| `formattedPrice` | string | Human-readable price label (e.g. `Free`, `$4.99`). |
| `free` | boolean | Whether the app is free to download. |
| `currency` | string | Currency code for the price (e.g. `USD`, `GBP`). |
| `genre` | string | Primary category of the app. |
| `genres` | array | All categories the app is listed under. |
| `contentRating` | string | Age/content rating (e.g. `4+`, `12+`). |
| `version` | string | Current published version number. |
| `releaseDate` | string (ISO date) | Release or last-update date of the current version. |
| `minimumOsVersion` | string | Minimum iOS version required to run the app. |
| `sizeBytes` | integer | Download size of the app in bytes. |
| `seller` | string | Legal seller name for the app. |
| `sellerUrl` | string (URL) | Developer or seller website. |
| `icon` | string (URL) | URL of the app's high-resolution icon. |
| `description` | string | Full store description text. |
| `url` | string (URL) | Canonical App Store listing URL. |

### Use cases

- Run competitive and category research for App Store Optimization (ASO).
- Track ratings, versions and pricing changes for target apps over time.
- Build an app-market dataset across storefront countries.
- Enrich a product or investment database with live app metadata.
- Monitor competitor releases and content ratings.
- Feed structured app metadata into dashboards or analytics pipelines.

### How to scrape App Store data

1. Add the App Store Scraper to your Apify account and open its input.
2. Enter keywords under `searches`, or paste exact App Store IDs / URLs under `appIds`.
3. Set `maxAppsPerSearch` and the `country` storefront you want.
4. Click **Run** and let the scraper collect every matching app.
5. Export the results as JSON, CSV, Excel or XML, or pull them via the Apify API.

### Input

```json
{
  "searches": ["meditation", "vpn"],
  "appIds": ["389801252"],
  "maxAppsPerSearch": 30,
  "country": "us"
}
```

| Field | Description |
| --- | --- |
| `searches` | Keywords to search the App Store, one per line. |
| `appIds` | Specific App Store IDs or URLs to fetch directly. |
| `maxAppsPerSearch` | Apps to fetch per search term (max 200). |
| `country` | Storefront country code (us, gb, de, …). |
| `proxyConfiguration` | Optional proxy settings for the run. |

### Need more app-market data?

- [Apple App Store Reviews Scraper](https://apify.com/hipersoft/appstore-reviews-scraper) — pull user reviews and ratings for any app.
- [Apple Podcasts Scraper](https://apify.com/hipersoft/apple-podcasts-scraper) — podcasts, episodes and show metadata.
- [Google Play Scraper](https://apify.com/hipersoft/google-play-scraper) — the same app metadata for Android.
- [Google Play Reviews Scraper](https://apify.com/hipersoft/google-play-reviews-scraper) — Android app reviews at scale.

### FAQ

**How many apps can I scrape?**
As many as you need. Use `maxAppsPerSearch` (up to 200 per term) and add multiple search terms or app IDs to widen the run.

**Can I scrape a specific storefront country?**
Yes — set `country` to any storefront code (us, gb, de, …) to get local pricing, ratings and availability.

**What export formats are supported?**
JSON, CSV, Excel and XML, plus programmatic access through the Apify API.

**How does billing work?**
You pay per item you get, so the cost scales with how many apps you actually collect. See the **Pricing** tab for current rates.

**Can I connect this to other tools?**
The App Store Scraper can be connected with almost any cloud service or web app thanks to [integrations on the Apify platform](https://apify.com/integrations). It works with [Make](https://apify.com/integrations/make), [Zapier](https://apify.com/integrations/zapier), [Slack](https://docs.apify.com/platform/integrations/slack), [Airbyte](https://docs.apify.com/platform/integrations/airbyte), [GitHub](https://docs.apify.com/platform/integrations/github), [Google Drive](https://docs.apify.com/platform/integrations/drive) and [many more](https://apify.com/integrations), plus the [Apify API](https://docs.apify.com/api/v2), JavaScript/Python clients and MCP. Or use [webhooks](https://docs.apify.com/platform/integrations/webhooks) to trigger an action whenever a run finishes.

**Is it legal to scrape the App Store?**
The scraper returns only publicly available store data. You are responsible for complying with Apple's terms and applicable laws.

### Related Actors

- [Google Play Scraper](https://apify.com/hipersoft/google-play-scraper)
- [Apple App Store Reviews Scraper](https://apify.com/hipersoft/appstore-reviews-scraper)
- [Google Play Reviews Scraper](https://apify.com/hipersoft/google-play-reviews-scraper)
- [Apple Podcasts Scraper](https://apify.com/hipersoft/apple-podcasts-scraper)

### Notes

Original clean-room implementation. Returns only public data; you are responsible for compliance with Apple's terms. Not affiliated with Apple; "Apple", "App Store" and "iTunes" are trademarks of Apple Inc.

# Actor input Schema

## `searches` (type: `array`):

Keywords to search the App Store (e.g. "meditation", "vpn"), one per line.

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

Specific App Store IDs or URLs (e.g. 389801252 or apps.apple.com/...id389801252). One per line.

## `maxAppsPerSearch` (type: `integer`):

Apps to fetch per search term (max 200).

## `country` (type: `string`):

Storefront country code (e.g. us, gb, de).

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

Optional. The iTunes API works without a proxy.

## Actor input object example

```json
{
  "searches": [
    "meditation"
  ],
  "appIds": [],
  "maxAppsPerSearch": 30,
  "country": "us",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "searches": [
        "meditation"
    ],
    "appIds": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/app-store-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 = {
    "searches": ["meditation"],
    "appIds": [],
}

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/app-store-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 '{
  "searches": [
    "meditation"
  ],
  "appIds": []
}' |
apify call hipersoft/app-store-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hipersoft/app-store-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/NkU7ULVYiJubtxBzB/builds/Ljh05dh1vWobEQL6c/openapi.json
