# Appstore: Reviews Scraper (`mikolabs/appstore-scraper`) Actor

Extract comprehensive metadata, ratings, top customer reviews, screenshots, pricing, developer information, and in-app purchases from any Apple App Store URL with residential proxy and anti-bot protection.

- **URL**: https://apify.com/mikolabs/appstore-scraper.md
- **Developed by:** [Mikolabs](https://apify.com/mikolabs) (community)
- **Categories:** Developer tools, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Apple App Store Scraper

Extract comprehensive metadata, ratings, customer reviews, ratings histogram, in-app events, screenshots, pricing, developer portfolio, and in-app purchases from any Apple App Store URL with residential proxy and anti-bot protection.

### What does Apple App Store Scraper do?

The **Apple App Store Scraper** extracts structured, real-time data from any [Apple App Store](https://apps.apple.com) application. **You only need to provide the App Store URL — the Actor automatically takes care of everything else.**

Using headless Playwright, intelligent anti-bot measures, and residential proxy routing, the Actor automatically crawls the app page and automatically retrieves the extended review feeds, extracting:

- **Customer Reviews & Feedback**: Star ratings, author names, review dates, ISO timestamps, full review bodies, and official developer responses.
- **Ratings Breakdown & Histogram**: Exact distribution percentage across 1 to 5 stars (`star_5`, `star_4`, `star_3`, `star_2`, `star_1`).
- **Store Chart & Category Rankings**: Real-time position tracking on Top Free / Top Paid / Category charts (e.g., `#6 in Entertainment`).
- **Live In-App Events**: In-app competitions, premieres, sports broadcasts, and live events with promotional artwork and direct event URLs.
- **Complete App Metadata**: App title, subtitle, full marketing description, high-resolution 512x512 square logo, category, subcategory, content advisories, bundle size, supported languages, compatibility requirements, and copyright information.
- **In-App Purchases (IAP) & Pricing**: Prices, currencies, tier names, and subscription offerings.
- **Media & Screenshots**: High-definition screenshots formatted for modern device viewports (iPhone, iPad, Mac, Apple Watch, Apple TV, Apple Vision Pro).
- **Developer Catalog & Similar Apps**: Portfolio of other apps by the same publisher and related app recommendations.

By running on the Apify platform, you can schedule automated crawls, integrate via Webhooks and REST APIs, download structured results in JSON, CSV, or Excel formats, and monitor changes across millions of iOS, iPadOS, and macOS apps worldwide.

### Why use Apple App Store Scraper?

- **Zero-Fuss Operation**: Just paste the App Store URL. The Actor automatically fetches complete app metadata and extracts all available reviews behind the scenes.
- **Review Sentiment & Voice of Customer**: Monitor user feedback, common complaints, feature requests, and developer responses across regions.
- **App Store Optimization (ASO)**: Track ranking changes, metadata updates, keyword placement, and category placement over time.
- **Competitive Intelligence**: Analyze competitor pricing tiers, in-app purchases, update frequencies, and version changelogs.
- **High-Efficiency Compute**: Smart network routing intercepts and aborts heavy image/video binary transfers while extracting high-res URLs, drastically cutting runtime, RAM, and bandwidth costs.
- **Global Storefront Support**: Works across all storefront regions (`/us/`, `/in/`, `/gb/`, `/de/`, `/jp/`, `/fr/`, etc.).

### How to use Apple App Store Scraper

1. **Create an account** on [Apify](https://apify.com) or log in to your existing account.
2. **Open the Actor** in the Apify Store / Console.
3. **Paste the App Store URL** in the `startUrls` input field (e.g., `https://apps.apple.com/us/app/netflix/id363590051`).
4. **Click "Start"** to launch the run.
5. **Download Results** in JSON, CSV, XML, Excel, or HTML format from the Dataset tab.

### Input

The Actor requires only the app URL to run:

| Field | Type | Default | Description |
|---|---|---|---|
| `startUrls` | Array | `[{ "url": "https://apps.apple.com/us/app/netflix/id363590051" }]` | List of Apple App Store URLs to scrape. |
| `delayBetweenScrapesMs` | Integer | `150` | Optional delay in milliseconds between requests (150ms default). |
| `proxyConfiguration` | Object | `{ "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }` | Proxy configuration settings. |

#### Sample JSON Input

```json
{
  "startUrls": [
    {
      "url": "https://apps.apple.com/us/app/netflix/id363590051"
    }
  ]
}
```

### Output

Results are stored in the default dataset and can be previewed directly in the Apify Console. You can download the dataset in various formats such as JSON, CSV, Excel, or HTML.

#### Sample JSON Output

```json
{
  "id": "363590051",
  "url": "https://apps.apple.com/us/app/netflix/id363590051",
  "name": "Netflix",
  "subtitle": "Start Watching",
  "description": "Looking for the most talked about TV shows and movies from around the world? They're all on Netflix. Discover award-winning series, movies, live events, and stand-up specials...",
  "icon": "https://is1-ssl.mzstatic.com/image/thumb/Purple211/v4/ea/96/56/ea965654-f78a-bb79-6c7f-82f361f5a1f2/AppIcon-0-0-1x_U007epad-0-1-85-220.png/512x512bb.png",
  "developer": {
    "name": "Netflix, Inc.",
    "id": "363590054",
    "url": "https://apps.apple.com/us/developer/netflix-inc/id363590054?platform=iphone",
    "provider": "Netflix, Inc."
  },
  "price": 0.0,
  "priceFormatted": "Free",
  "currency": "USD",
  "isFree": true,
  "category": "Entertainment",
  "subCategory": "",
  "rating": 4.7,
  "ratingCount": 7100000,
  "ratingBest": 5.0,
  "ratingWorst": 1.0,
  "ratingsHistogram": {
    "star_5": "87%",
    "star_4": "7%",
    "star_3": "2%",
    "star_2": "1%",
    "star_1": "3%"
  },
  "chartRank": "#1",
  "chartCategory": "Entertainment",
  "chartUrl": "https://apps.apple.com/us/iphone/charts/6016?chart=top-free",
  "isEditorsChoice": true,
  "editorsChoiceNote": "Watch award-winning originals, hit movies, and trending series",
  "ageRating": "13+",
  "contentAdvisories": [
    "Parental Controls",
    "Infrequent/Mild Cartoon or Fantasy Violence",
    "Realistic Violence",
    "Profanity or Crude Humor",
    "Mature or Suggestive Themes",
    "Contains Advertising"
  ],
  "size": "214.4 MB",
  "languages": [
    "English",
    "Spanish",
    "French",
    "German",
    "Japanese",
    "Korean",
    "Simplified Chinese",
    "Hindi"
  ],
  "compatibility": "Requires iOS 18.0 or later. Compatible with iPhone, iPad, Apple TV and Apple Vision.",
  "supportedPlatforms": [
    "iPhone",
    "iPad",
    "Mac",
    "Vision",
    "Watch",
    "TV"
  ],
  "copyright": "© 2026 Netflix",
  "inAppPurchases": [
    {
      "title": "Netflix Standard",
      "price": "$19.99"
    },
    {
      "title": "Netflix Premium",
      "price": "$26.99"
    }
  ],
  "inAppEvents": [],
  "whatsNew": "Get the best experience for enjoying recent hits and timeless classics with our latest Netflix update for your iPhone and iPad.",
  "version": "18.46.0",
  "versionDate": "1d ago",
  "screenshots": [
    "https://is1-ssl.mzstatic.com/image/thumb/PurpleSource221/v4/1e/13/4f/1e134f39-3261-2977-e81b-368f7ad94ed3/freeform_U0023game-screenshot-ios-mobile-vertical-6-5-inch_na_01_0_-_DONE.jpg/600x1300bb.webp",
    "https://is1-ssl.mzstatic.com/image/thumb/PurpleSource221/v4/14/ce/20/14ce207c-c3d8-68f9-8f1a-74c0ca8b0732/freeform_U0023game-screenshot-ios-mobile-vertical-6-5-inch_na_02_0_-_DONE.jpg/600x1300bb.webp"
  ],
  "appPrivacy": [
    {
      "category": "Data Used to Track You",
      "dataTypes": ["Identifiers", "Usage Data"]
    },
    {
      "category": "Data Linked to You",
      "dataTypes": ["Location", "Contact Info", "User Content", "Search History", "Diagnostics"]
    }
  ],
  "topReviews": [
    {
      "id": "14357278057",
      "title": "Hacked",
      "rating": 5,
      "author": "RoyalT69",
      "date": "Jul 28",
      "isoDate": "2026-07-28T06:38:08.000Z",
      "review": "I have had an account for years, and this month, the day after I paid for my subscription it was hacked...",
      "developerResponse": null
    },
    {
      "id": "14464743966",
      "title": "67",
      "rating": 5,
      "author": "Brom2233",
      "date": "1d ago",
      "isoDate": "2026-08-24T02:04:25.000Z",
      "review": "So I give it a five out of five but personally I think I should give it a four because sometimes it...",
      "developerResponse": null
    }
  ],
  "privacyPolicyUrl": "https://netflix.com/privacy",
  "supportUrl": "https://support.apple.com/billing",
  "moreByDeveloper": [
    {
      "id": "6447582581",
      "name": "Netflix Game Controller",
      "url": "https://apps.apple.com/us/app/netflix-game-controller/id6447582581"
    },
    {
      "id": "6498719476",
      "name": "Squid Game: Unleashed",
      "url": "https://apps.apple.com/us/app/squid-game-unleashed/id6498719476"
    }
  ],
  "similarApps": [
    {
      "id": "545519333",
      "name": "Amazon Prime Video",
      "url": "https://apps.apple.com/us/app/amazon-prime-video/id545519333"
    },
    {
      "id": "1446075923",
      "name": "Disney+",
      "url": "https://apps.apple.com/us/app/disney/id1446075923"
    }
  ],
  "country": "us",
  "scrapedAt": "2026-08-26T03:00:00.000Z"
}
```

### Data table

The Actor extracts and organizes the following primary fields:

| Field Name | Type | Description |
|---|---|---|
| `id` | String | Apple App Store unique application ID |
| `name` | String | App title / name |
| `subtitle` | String | Subtitle or tagline |
| `description` | String | Full marketing and store description text |
| `icon` | String | URL of the high-resolution square 512x512 app logo |
| `developer` | Object | Developer details (name, id, store URL, provider) |
| `price` | Number | Numeric cost of the app (0 for free) |
| `priceFormatted` | String | Human-readable price (e.g. Free, $4.99, ₹ 399) |
| `currency` | String | Currency code (e.g. USD, INR, EUR) |
| `isFree` | Boolean | Whether the initial download is free |
| `category` | String | Primary App Store category (e.g. Entertainment, Games) |
| `subCategory` | String | Secondary App Store subcategory |
| `rating` | Number | Average user rating (1.0 - 5.0) |
| `ratingCount` | Number | Total count of ratings / reviews submitted (e.g., 7,100,000) |
| `ratingsHistogram` | Object | Visual percentage distribution of 1–5 star ratings |
| `chartRank` | String | Store chart rank position (e.g. #1, #6) |
| `chartCategory` | String | Chart category name |
| `chartUrl` | String | Link to the category charts page |
| `isEditorsChoice` | Boolean | Whether awarded Apple's Editors' Choice badge |
| `editorsChoiceNote` | String | Editorial review quote or highlight |
| `topReviews` | Array | Full customer reviews including IDs, titles, ratings, author, date, ISO timestamp, body, and developer responses |
| `ageRating` | String | Content age advisory (4+, 9+, 12+, 13+, 17+) |
| `contentAdvisories` | Array | Specific reasons behind the age rating |
| `size` | String | Download file size |
| `languages` | Array | List of supported language localizations |
| `compatibility` | String | System requirements and supported Apple devices |
| `supportedPlatforms` | Array | Hardware devices supported (iPhone, iPad, Mac, Vision, Watch, TV) |
| `inAppPurchases` | Array | In-app purchase tiers, titles, and prices |
| `inAppEvents` | Array | Live in-app events, premieres, competitions, and livestreams |
| `whatsNew` | String | Release notes for the latest version |
| `version` | String | Version number string (e.g. 18.46.0) |
| `versionDate` | String | Release date or relative update time (e.g. 1d ago) |
| `screenshots` | Array | High-definition screenshot image URLs |
| `appPrivacy` | Array | Privacy disclosure nutrition labels and data categories |
| `privacyPolicyUrl` | String | Developer's official privacy policy webpage |
| `supportUrl` | String | Customer support and billing webpage |
| `moreByDeveloper` | Array | Other applications by the same developer |
| `similarApps` | Array | Recommended alternative / similar apps |
| `country` | String | 2-letter storefront country code (e.g., us, in, gb) |
| `scrapedAt` | String | ISO 8601 scrape timestamp |

### Pricing / Cost estimation

Scraping the Apple App Store requires minimal compute resources:

- **1,000 App pages**: ~0.05 – 0.15 Apify Compute Units (CU).
- **Apify Free Tier**: Includes $5 of monthly credits, which is sufficient for thousands of app pages every month.
- **Proxy usage**: Residential proxy bandwidth is consumed only for page HTML and minimal assets, keeping data transfer costs exceptionally low.

### Tips or Advanced options

- **Residential Proxies**: Apple employs Akamai anti-bot and CDN edge rate limits. Using Apify Residential Proxies ensures near 100% success rate even for large regional crawls.
- **Delay between Scrapes**: Keep the default `150ms` delay (or set higher for large crawls) to prevent rapid burst throttling.
- **Regional Scraping**: Change the 2-letter country code in the URL (`/us/`, `/in/`, `/gb/`, `/jp/`, `/de/`) to fetch localized metadata, currencies, and regional rankings.

### FAQ, disclaimers, and support

#### Is scraping the Apple App Store legal?

Scraping publicly available data from the App Store for market research, price monitoring, and analytics is generally legal under fair use. However, you should review Apple's Terms of Service and consult legal counsel if you have questions regarding your specific use case.

#### Does this Actor support iPad, Mac, and Vision Pro apps?

Yes! The parser supports all platforms available on `apps.apple.com`, including iOS, iPadOS, macOS, watchOS, tvOS, and visionOS apps.

#### Need help or custom adjustments?

If you encounter any issues, need extra fields, or want a custom integration, feel free to submit an issue via the **Issues** tab in the Apify Console.

# Actor input Schema

## `startUrls` (type: `array`):

List of Apple App Store URLs to scrape (App pages, Developer pages, Charts).

## `delayBetweenScrapesMs` (type: `integer`):

Delay in milliseconds applied before each page scrape to avoid anti-bot rate limits.

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

Proxy settings for anti-bot protection. Residential proxies are strongly recommended for Apple App Store.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://apps.apple.com/us/app/netflix/id363590051"
    }
  ],
  "delayBetweenScrapesMs": 150,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (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 = {
    "startUrls": [
        {
            "url": "https://apps.apple.com/us/app/netflix/id363590051"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("mikolabs/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 = { "startUrls": [{ "url": "https://apps.apple.com/us/app/netflix/id363590051" }] }

# Run the Actor and wait for it to finish
run = client.actor("mikolabs/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 '{
  "startUrls": [
    {
      "url": "https://apps.apple.com/us/app/netflix/id363590051"
    }
  ]
}' |
apify call mikolabs/appstore-scraper --silent --output-dataset

```

## MCP server setup

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