# App Store Reviews (Official Apple Feeds) (`slanlabs/app-store-reviews`) Actor

Apple App Store reviews via Apple's official feeds. Ratings, text, version, date, author for any app, any country storefront. Agent-ready pay-per-event pricing.

- **URL**: https://apify.com/slanlabs/app-store-reviews.md
- **Developed by:** [SlanLabs](https://apify.com/slanlabs) (community)
- **Categories:** E-commerce, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 reviews

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 Reviews (Official Apple Feeds)

Get every public Apple App Store review for any iOS app, in any country storefront, as clean JSON - straight from Apple's own official customer-review feeds. These are the same public feeds Apple serves to iTunes and the App Store, which means no headless browsers, no captchas, no broken scrapers after an Apple redesign, and no login of any kind. Fast, cheap, and stable enough to run on a schedule for years.

### Why teams use it

App reviews are the richest free source of Voice-of-Customer data that exists: bug reports, feature requests, churn reasons, competitor comparisons, pricing complaints - all timestamped and rated. Product teams track their own apps, analysts track competitors, and AI agents pipe reviews straight into summarization and alerting pipelines. This Actor is built for exactly that: one API call in, clean rows out, pay per review and nothing else.

### What you get per review

- `reviewId`, `author`, `rating` (1-5), `title`, `content`
- `appVersion` - the app version the review was written against
- `updatedAt` - ISO timestamp, filterable with `sinceDate` for incremental daily pulls
- `voteCount` / `voteSum` - helpfulness votes
- `appId`, `country`, plus a direct `reviewUrl`

### Inputs

| Field | Required | Description |
| --- | --- | --- |
| `appIdOrUrl` | yes | Numeric App Store ID (e.g. `284882215`) or a full App Store URL |
| `country` | no | Two-letter storefront code (default `us`) - reviews are per-storefront |
| `sortBy` | no | `mostRecent` (default) or `mostHelpful` |
| `maxReviews` | no | Stop after this many reviews (default 100, max 1000) |
| `sinceDate` | no | Only reviews updated on/after this date - ideal for incremental monitoring |

### Example

```json
{ "appIdOrUrl": "https://apps.apple.com/us/app/facebook/id284882215", "country": "us", "maxReviews": 500, "sinceDate": "2026-10-01" }
```

### Combine with the Top Charts Actor

Run [App Store Top Charts](https://apify.com/slanlabs/app-store-top-charts) first to discover which apps are climbing, then pull their reviews here - a complete competitive-intel loop built on two official Apple feeds.

### FAQ

**Is this an official data source?** Yes. The Actor reads Apple's public customer-review RSS feeds - the same feeds that power iTunes - not the App Store web pages.

**Do I need an Apple account or API key?** No. The feeds are public and keyless.

**How far back does review history go?** Apple's feeds serve the most recent ~500 reviews per storefront (10 pages of 50). For full history, run it on a schedule with `sinceDate` and accumulate.

**Can I get reviews from several countries?** Yes - reviews are per-storefront, so run once per country (`us`, `gb`, `de`, `jp`, ...).

**What does it cost?** Pay-per-event: $2 per 1,000 reviews, plus tiny Apify platform compute. You only pay for rows returned.

**Can agents call it directly?** Yes - it runs under limited permissions with pay-per-event pricing, so MCP and agentic clients can use it without an Apify account preconfiguration.

### Pipeline patterns

**Continuous VoC monitoring.** Schedule the Actor daily with `sinceDate` set to yesterday and append rows to your own store; every row carries `reviewId`, so dedupe is trivial. Teams pipe this into a weekly digest or an LLM summarizer that clusters complaints by theme.

**Competitor watchlist.** Maintain a list of competing app IDs and loop the Actor over them; reviews are the earliest public signal when a competitor ships a buggy release or a hated pricing change.

**Launch-week radar.** After your own release, sort by `mostRecent` and filter `appVersion` to the new version string - instant feedback separated from legacy noise.

### Field notes

Ratings are integers 1-5 as Apple records them. `voteCount` and `voteSum` come from Apple's helpfulness voting and are most useful for surfacing widely-felt problems: high-vote negative reviews are where product risk concentrates. `updatedAt` reflects edits, so a re-run with the same `sinceDate` can return an updated review again - dedupe on `reviewId` and keep the newest `updatedAt`.

### More FAQ

**Why do I see fewer than `maxReviews` rows?** The app has fewer reviews than requested in that storefront, or `sinceDate` excluded the rest. Apple serves at most ~500 recent reviews per storefront.

**Can I search review text?** Fetch with `sortBy=mostRecent` and filter `content` client-side; Apple's feeds do not offer text search.

**Does it work for macOS or visionOS apps?** The feeds cover iOS/iPadOS storefront listings. Mac App Store reviews use the same ID scheme and generally work too.

**What happens if an app has zero reviews?** The run succeeds with an empty dataset - no chargeable events, no cost.

**How do I get the app ID?** It is the number in the App Store URL after `/id`. Or just paste the whole URL into `appIdOrUrl` - the Actor parses it.

### More official-API Actors from SlanLabs

- [App Store Top Charts (Official Apple Feeds)](https://apify.com/slanlabs/app-store-top-charts) - live top free, paid and grossing charts for apps, books, podcasts and music
- [Bluesky Scraper - Posts, Profiles, Search](https://apify.com/slanlabs/bluesky-scraper) - posts, profiles, search and threads via the open AT Protocol
- [SEC EDGAR Filings Search & Monitor](https://apify.com/slanlabs/sec-edgar-filings) - full-text search and company feeds from the SEC's official APIs
- [GDELT Global News Monitor](https://apify.com/slanlabs/gdelt-news-monitor) - worldwide news coverage in 65+ languages, updated every 15 minutes
- [Hacker News Search & Monitor](https://apify.com/slanlabs/hackernews-monitor) - every story and comment since 2006, plus the live front page
- [US Government Spending & Contracts (USASpending)](https://apify.com/slanlabs/usaspending-contracts) - federal contracts, grants and loans by keyword, agency, NAICS or recipient

# Actor input Schema

## `appIdOrUrl` (type: `string`):

Apple numeric App ID (e.g. 284882215), an App Store URL (https://apps.apple.com/us/app/facebook/id284882215), or an app name to look up (first search result is used).

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

Two-letter App Store country code, e.g. us, gb, de, jp. Determines which storefront's reviews are returned.

## `sortBy` (type: `string`):

Apple feed sort order.

## `maxReviews` (type: `integer`):

Stop after this many reviews. Apple serves up to 500 per storefront via the feed.

## `sinceDate` (type: `string`):

Optional ISO date (YYYY-MM-DD). Only reviews updated on or after this date are returned. Useful for incremental daily runs.

## Actor input object example

```json
{
  "appIdOrUrl": "https://apps.apple.com/us/app/facebook/id284882215",
  "country": "us",
  "sortBy": "mostRecent",
  "maxReviews": 100
}
```

# Actor output Schema

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

App Store reviews dataset

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

Run summary (app metadata + counts)

# 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 = {
    "appIdOrUrl": "https://apps.apple.com/us/app/facebook/id284882215",
    "country": "us"
};

// Run the Actor and wait for it to finish
const run = await client.actor("slanlabs/app-store-reviews").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 = {
    "appIdOrUrl": "https://apps.apple.com/us/app/facebook/id284882215",
    "country": "us",
}

# Run the Actor and wait for it to finish
run = client.actor("slanlabs/app-store-reviews").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 '{
  "appIdOrUrl": "https://apps.apple.com/us/app/facebook/id284882215",
  "country": "us"
}' |
apify call slanlabs/app-store-reviews --silent --output-dataset

```

## MCP server setup

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

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/vdnETdteoOWew41rJ/builds/kVKg9n6O9WAnFDN9X/openapi.json
