# Apple App Store Reviews Scraper – iOS, Worldwide (`brisaworks/app-store-reviews`) Actor

Scrape Apple App Store reviews for any iOS app from every country's storefront in one run, by app ID, URL or name, with a since-date filter: rating, title, text, version, date, votes. Optional translation, topics and sentiment with your own Claude key. $0.10 per 1,000 reviews.

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

## Pricing

from $0.07 / 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.
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

This **Apple App Store reviews scraper** collects iOS app reviews from every country's App Store storefront in one run, straight from Apple's official customer-review RSS feed. Add apps by ID, App Store URL or name, and keep only reviews since a date. For each review you get the rating, title, full text, app version, date and helpful votes. Optionally, translate every review into one language and tag topics and sentiment with your own Claude API key. No login, no browser, no proxy. $0.10 per 1,000 reviews.

**Contents:** [What it does](#what-it-does) · [Use cases](#use-cases) · [How to use](#how-to-use) · [Input](#input) · [Output](#output) · [How it compares](#how-it-compares) · [Pricing](#pricing) · [Use with AI agents (MCP)](#use-with-ai-agents-mcp) · [API](#api) · [Schedules and integrations](#schedules-and-integrations) · [Example tasks](#example-tasks) · [Limits](#limits) · [Data source](#data-source) · [Privacy](#privacy) · [FAQ](#faq)

### What it does

![How the Apple App Store Reviews Scraper works: your apps and storefronts go to Apple's iTunes Search API and review RSS, then optional Claude translation and topics, then one dataset row per review](https://api.apify.com/v2/key-value-stores/rabUnlqsZdMugucmh/records/app-store-reviews--how-it-works.png)

- **Every storefront in one run.** Reads Apple's per-country customer-review feed for each app and storefront you choose, or all 173 storefronts at once. Storefronts with no reviews return nothing and cost nothing.
- **Apps by ID, URL or name.** Paste app IDs (`284882215`), App Store links, or plain names (`Duolingo`). A name is looked up in Apple's free iTunes Search API, and the best match in your first storefront is used. The run log names the app it picked, and each review row carries the app's name.
- **Only new reviews with `sinceDate`.** Keep reviews posted on or after a date (`2026-10-01`) or a relative date (`7 days`). With the most-recent order the Actor stops reading a storefront as soon as it reaches older reviews, so a weekly run makes few requests and you pay only for the new reviews.
- **Up to 500 reviews per storefront** (Apple's feed limit), most recent or most helpful first.
- **Optional AI layer (your Anthropic key):** detects each review's language, translates title and text into the language you pick, tags 1–3 topics ("login problems", "subscription price"…) and a sentiment, and saves a topic summary (`TOPICS`) with review counts, average rating and storefronts per topic.
- **Privacy by default:** reviewer nicknames are left out unless you turn them on.

### Use cases

**1. One app, every country.** See how your app is received in each market, including the small ones you never check by hand.

```json
{ "appIds": ["284882215"], "allCountries": true, "maxReviewsPerCountry": 50 }
```

**2. Competitor sweep by name.** Pull the latest reviews of the apps you compete with, without looking up their IDs first.

```json
{ "appNames": ["Spotify", "SoundCloud"], "countries": ["us", "gb"], "maxReviewsPerCountry": 100 }
```

**3. Weekly monitoring.** Schedule a run every Monday that keeps only the last 7 days of reviews in your main markets.

```json
{ "appIds": ["570060128"], "countries": ["us", "gb", "ca", "au"], "sinceDate": "7 days", "maxReviewsPerCountry": 500 }
```

**4. Read foreign-language reviews in English.** Translate German, French and Japanese reviews into English with your own Anthropic key.

```json
{ "appIds": ["284882215"], "countries": ["de", "fr", "jp"], "maxReviewsPerCountry": 100, "translateTo": "English", "anthropicApiKey": "<your Anthropic key>" }
```

**5. What users complain about after a release.** Tag topics and sentiment on every review since the release date, then read the `TOPICS` summary: the most-mentioned topics with their average rating.

```json
{ "appIds": ["389801252"], "countries": ["us", "gb"], "sinceDate": "2026-10-01", "classifyTopics": true, "anthropicApiKey": "<your Anthropic key>" }
```

### How to use

1. Add one or more apps: app IDs or App Store links under **Apps** (the ID is the number after `id` in the URL), or names under **Apps by name**.
2. Choose storefronts (e.g. `us`, `gb`, `de`) or switch on **All storefronts**.
3. Optionally set **Only reviews since** to a date or a relative date such as `7 days`.
4. Optionally set **Translate into** and/or **Tag topics and sentiment** and add your Anthropic API key.
5. Run, then export the dataset as JSON, CSV or Excel, or read it through the Apify API.
6. Schedule the Actor (e.g. weekly with `sinceDate: "7 days"`) to keep a running archive, and connect the dataset to your tools with Apify integrations.

### Input

| Field | Description |
|---|---|
| `appIds` | App IDs or App Store URLs, e.g. `284882215` or `https://apps.apple.com/us/app/facebook/id284882215`. |
| `appNames` | App names to look up, e.g. `Duolingo`. The best match in the first storefront you chose (US with **All storefronts**) is used. Use IDs when you need an exact app. |
| `countries` / `allCountries` | Storefronts to read (two-letter codes, default `us`), or all 173. |
| `maxReviewsPerCountry` | Up to 500 per storefront (default 100). |
| `sortBy` | `mostrecent` (default) or `mosthelpful`. |
| `sinceDate` | Keep reviews on or after this date: `YYYY-MM-DD`, a full ISO timestamp, or relative (`7 days`, `2 weeks`, `1 month`; a month counts as 30 days). Empty means all reviews. |
| `translateTo`, `classifyTopics`, `anthropicApiKey`, `model` | Optional AI enrichment with your key (default model `claude-haiku-5-5`). |
| `includeAuthorNames` | Off by default (see Privacy). |

Add at least one app in `appIds` or `appNames`. Example:

```json
{ "appNames": ["Duolingo"], "countries": ["us", "gb"], "maxReviewsPerCountry": 50, "sinceDate": "30 days" }
```

### Output

![Apple App Store Reviews Scraper dataset: one row per review with app ID, app name, storefront, rating, title, app version, date and helpful votes](https://api.apify.com/v2/key-value-stores/rabUnlqsZdMugucmh/records/app-store-reviews--output-table.png)

One row per review. The IDs, rating, version, date and votes below come from Apple's US feed page recorded on 13 Oct 2026; the title and text are placeholders:

```json
{
  "appId": "284882215",
  "appName": "Facebook",
  "country": "us",
  "reviewId": "14661859932",
  "rating": 5,
  "title": "Too many ads in the feed",
  "content": "Placeholder text for the review body.",
  "appVersion": "582.0.0",
  "reviewedAt": "2026-10-13T14:12:09.000Z",
  "voteSum": 0,
  "voteCount": 0,
  "status": "ok"
}
```

| Field | Meaning |
|---|---|
| `appId` | The App Store app ID. |
| `appName` | The app's App Store name, on rows of apps you added by name. |
| `country` | Storefront the review was written in (two-letter code). |
| `reviewId` | Apple's review ID; use it to remove duplicates across scheduled runs. |
| `rating` | Stars, 1 to 5. |
| `title`, `content` | Review title and full text, in the reviewer's language. |
| `appVersion` | App version the reviewer had installed. |
| `reviewedAt` | Date and time of the review, ISO 8601 in UTC. |
| `voteSum`, `voteCount` | Helpful votes and total votes from other App Store users. |
| `status`, `error` | `ok` for reviews; `error` or `not_found` on free rows. |

- With AI enrichment each row also has `language`, `translatedTitle`, `translatedContent`, `topics` and `sentiment`.
- With topic tagging on, the key-value store gets a `TOPICS` record, sorted by review count (illustrative values):

```json
[
  { "topic": "login problems", "reviews": 41, "averageRating": 1.7, "countries": ["gb", "us"] },
  { "topic": "new layout", "reviews": 18, "averageRating": 4.2, "countries": ["us"] }
]
```

- A storefront that fails returns one free row with `status: "error"`. An app name with no match returns one free row with `status: "not_found"`, the name and the storefront.

### How it compares

Facts from each Actor's own README and input schema, read on 22 Oct 2026. Prices are each Actor's base price per 1,000 reviews.

| | **This Actor** | thewolves/appstore-reviews-scraper | johnvc/apple-app-store-reviews-api | sourabhbgp/apple-app-store-scraper |
|---|---|---|---|---|
| Storefronts per run | all 173, or any list | one `country` per run | one `country` per run (52 in its list) | a `countries` list (50+) |
| Input | app IDs, App Store URLs, app names | app IDs + country, or App Store URLs | app IDs, or one app name | app IDs or App Store URLs |
| Look up an app by name | yes, free | not listed | yes (`app_name`) | separate search mode |
| Reviews per storefront | up to 500 (Apple's feed limit) | up to 500 | about 1,250 per app (50-page cap) | "a few hundred to a few thousand", varies by run |
| Sort orders | most recent, most helpful | not listed | 4 (recent, helpful, favorable, critical) | 2, noted as "not honored" by Apple |
| Only reviews since a date | yes (`sinceDate`, also relative) | not listed | not listed | yes (`sinceDate`) |
| Translation, topics, sentiment | yes, with your Anthropic key | not listed | not listed | not listed |
| Reviewer names | opt-in, off by default | included | included | included |
| App details, charts, in-app purchases | no | no | no (separate Actors) | yes |
| Proxy | none needed | rotated inside the Actor | not stated | Apify residential proxies |
| Delivery to Notion etc., custom map function | no (use Apify integrations) | yes | not listed | not listed |
| Price per 1,000 reviews | **$0.10** | $0.10 | $1.50, plus $0.02 per run | $2.00 |

Pick this Actor to read many storefronts at once, to monitor only new reviews, or to translate and tag reviews. Pick a deeper scraper if you need more than 500 reviews from a single storefront, or app details and charts.

### Pricing

Pay per event: you pay for the reviews you get, nothing for empty storefronts, app-name lookups or errors.

| Event | Price | Per 1,000 | Charged when |
|---|---|---|---|
| `review` | $0.0001 | $0.10 | A review is saved |
| `review-enriched` | $0.0005 | $0.50 | A review is translated and/or tagged (only with your Anthropic key) |

Apify Bronze, Silver and Gold subscribers pay less:

| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
| `review` | $0.0001 | $0.00009 | $0.00008 | $0.00007 |
| `review-enriched` | $0.0005 | $0.00045 | $0.0004 | $0.00035 |

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

- 10,000 reviews: $1.00 ($0.70 on Gold).
- One app, 50 reviews in each of the 173 storefronts: at most 8,650 reviews, so at most $0.87. Storefronts with fewer reviews cost less.
- A weekly `sinceDate: "7 days"` run on an app that gets 200 reviews a week in your markets: $0.02 a week.
- 1,000 reviews with translation and topics: $0.10 + $0.50 = $0.60, plus Claude tokens on your Anthropic account (Claude Haiku 5.5 lists at $0.10 per million input and $0.50 per million output tokens).
- Apify adds its standard small run-start fee.

Set a maximum cost per run in the run options: the Actor checks it before saving each review and stops before going over it.

### Use with AI agents (MCP)

AI agents can call this Actor through Apify's hosted MCP server at https://mcp.apify.com. Add the server to your MCP client (Claude Desktop, Claude Code, Cursor, VS Code) and enable the tool `brisaworks--app-store-reviews`. Agents that only know an app's name can pass it in `appNames`. Example prompt:

> "Using brisaworks--app-store-reviews, get the last 14 days of Duolingo reviews in the US and UK and list the three most common complaints."

The agent sends an input like this one:

```json
{ "appNames": ["Duolingo"], "countries": ["us", "gb"], "sinceDate": "14 days", "maxReviewsPerCountry": 500 }
```

### API

Start a run and get its rows in one call (replace `<YOUR_TOKEN>` with your Apify API token):

```bash
curl -X POST "https://api.apify.com/v2/acts/brisaworks~app-store-reviews/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{ "appNames": ["Duolingo"], "countries": ["us"], "maxReviewsPerCountry": 50 }'
```

Node.js (`npm install apify-client`):

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('brisaworks/app-store-reviews').call({
    appIds: ['284882215'],
    allCountries: true,
    sinceDate: '7 days',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.filter((r) => r.status === 'ok' && r.rating <= 2));
```

Python (`pip install apify-client`):

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_TOKEN>")
run = client.actor("brisaworks/app-store-reviews").call(run_input={
    "appNames": ["Spotify", "SoundCloud"],
    "countries": ["us", "gb"],
    "maxReviewsPerCountry": 100,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    if item["status"] == "ok":
        print(item["appName"], item["country"], item["rating"], item["title"])
```

### Schedules and integrations

- **Schedules:** in Apify Console, create a schedule (e.g. every Monday at 08:00) for this Actor or one of its tasks. Use a relative `sinceDate` that matches the schedule (`7 days` for weekly, `1 day` for daily) so each run returns only the new reviews.
- **Webhooks:** add a webhook on "run succeeded" to post the dataset URL to your own endpoint, or to Slack through an integration.
- **Make, Zapier, n8n:** Apify's integrations for these tools can start the Actor and read its dataset, e.g. to append new 1- and 2-star reviews to a Google Sheet or open a ticket for each.
- **Exports:** every run's dataset downloads as JSON, CSV, Excel, XML or HTML, and the `overview` view keeps the columns shown above.

### Example tasks

Ready-made inputs you can run or copy:

- [Get an iOS app's reviews from every App Store country](https://apify.com/brisaworks/app-store-reviews/examples/app-store-reviews-every-country)
- [Scrape App Store reviews by app name, no app ID needed](https://apify.com/brisaworks/app-store-reviews/examples/app-store-reviews-by-app-name)
- [Monitor the last 7 days of App Store reviews (weekly)](https://apify.com/brisaworks/app-store-reviews/examples/app-store-reviews-last-7-days)
- [Compare App Store reviews of two competing apps](https://apify.com/brisaworks/app-store-reviews/examples/app-store-reviews-competitors)
- [Read an app's most helpful App Store reviews](https://apify.com/brisaworks/app-store-reviews/examples/app-store-reviews-most-helpful)

### Limits

- Apple's feed holds the latest 500 reviews per storefront and sort order, and only reviews that have text (star-only ratings are not included).
- Reviews are per storefront; a review appears only in the country where it was written.
- `sinceDate` filters the reviews the feed holds; it cannot reach reviews older than the latest 500. With `mosthelpful` the feed is not in date order, so every page is read and filtered.
- An app name gives the best match in one storefront. Names shared by several apps can pick the wrong one: check the run log, or use the app ID.
- Apple publishes no rate limit for the review feeds; the Actor makes two requests a second at most and retries throttled requests with a back-off. Apple asks for about 20 iTunes Search API calls a minute; the Actor makes one per app name.

### Data source

- Apple customer-review RSS, `https://itunes.apple.com/{country}/rss/customerreviews/page={1-10}/id={appId}/sortby={mostrecent|mosthelpful}/json`, checked live on 2026-10-14 (50 reviews per page, 10 pages). Apple's RSS feed generator (<https://rss.marketingtools.apple.com/>, read 2026-10-14) publishes these feeds without separate usage terms; reviews remain Apple's and the reviewers' content, so use them for analysis rather than re-publication.
- App-name lookup: Apple's iTunes Search API, `https://itunes.apple.com/search?term={name}&country={country}&entity=software&limit=1`, documented at <https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/iTuneSearchAPI/>, checked live on 2026-10-22.
- Optional AI enrichment: Anthropic Messages API with structured outputs, <https://platform.claude.com/docs/en/build-with-claude/structured-outputs.md> (read 2026-10-14).

### Privacy

Reviewer nicknames can identify people, so they are dropped by default; turn on **Include reviewer nicknames** only if you have a lawful reason to process them. When you use the AI layer, review titles and texts (never nicknames) are sent to Anthropic under your own API account.

### FAQ

#### Can I get reviews from all countries at once?

Yes. Switch on **All storefronts** to read all 173 storefronts in one run; storefronts without reviews return nothing and cost nothing.

#### Can I search for an app by name instead of its ID?

Yes. Put names in **Apps by name** (`appNames`). Each name is looked up in Apple's iTunes Search API in the first storefront you chose, and the best match is used. The lookup is free. If nothing matches you get a free `not_found` row.

#### How do I get only new reviews?

Set **Only reviews since** (`sinceDate`) to a date such as `2026-10-01` or a relative date such as `7 days`, and keep the default most-recent order. On a schedule, match it to the interval: `7 days` for a weekly run.

#### Why do I get at most 500 reviews per country?

Apple's review feed holds the latest 500 reviews per storefront and sort order (10 pages of 50). Run the Actor on a schedule to build a longer history.

#### Do I need an Apple account or API key?

No. The feed and the iTunes Search API are public. A key is needed only for the optional translation and topics, and it is your own Anthropic key.

#### How much does it cost?

$0.10 per 1,000 reviews on the free plan, down to $0.07 per 1,000 on Gold. Translation and topics add $0.50 per 1,000 enriched reviews, plus your own Claude tokens. See [Pricing](#pricing).

#### How do I find an app's ID?

Open the app's page on apps.apple.com: the ID is the number after `id` in the URL (`https://apps.apple.com/us/app/facebook/id284882215` → `284882215`). You can also paste the whole URL, or use the app's name.

#### Why does a storefront return no reviews?

Either the app is not sold in that country, or nobody has written a review with text there yet. Those storefronts return nothing and cost nothing. Apple's feed also leaves out star-only ratings.

#### How do I avoid paying twice for the same review on a schedule?

Use a relative `sinceDate` that matches your schedule (`7 days` for weekly) and the default most-recent order. If runs overlap, remove duplicates by `reviewId`.

#### Can I scrape Google Play reviews with it?

No, this Actor reads the Apple App Store only.

### Support

Open an issue on the Actor's Issues tab; issues are answered within a few days and fixed within 14 days.

# Actor input Schema

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

App Store app IDs or app URLs, one per line (e.g. 284882215 or https://apps.apple.com/us/app/facebook/id284882215). The ID is the number after "id" in the URL. Add apps here, by name below, or both.

## `appNames` (type: `array`):

App names to look up in Apple's iTunes Search API (e.g. Duolingo). Each name becomes the best-matching App Store app in the first storefront you chose (US with "All storefronts"); the run log shows which app was picked. Use IDs when you need an exact app.

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

Two-letter country codes of the App Store storefronts to read (us, gb, de, jp...). Ignored when "All storefronts" is on.

## `allCountries` (type: `boolean`):

Read every App Store storefront (about 175). Storefronts without reviews cost nothing.

## `maxReviewsPerCountry` (type: `integer`):

Apple's feed holds the latest 500 reviews per storefront and sort order.

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

Most recent or most helpful reviews first.

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

Keep only reviews posted on or after this date: YYYY-MM-DD, or a relative date such as "7 days" for scheduled runs. With "Most recent" the Actor stops reading a storefront once it reaches older reviews. Leave empty for all reviews.

## `includeAuthorNames` (type: `boolean`):

Off by default. Reviewer nicknames can identify people (personal data under GDPR); turn on only if you have a lawful reason to process them.

## `translateTo` (type: `string`):

Language name or code to translate titles and texts into, e.g. English. Leave empty for no translation.

## `classifyTopics` (type: `boolean`):

Tag each review with 1-3 topic labels and a sentiment, and save a topic summary (count, average rating, countries) to the key-value store as TOPICS.

## `anthropicApiKey` (type: `string`):

Only needed for translation or topics. Claude usage is billed to your Anthropic account.

## `model` (type: `string`):

Model ID used for translation and topics.

## Actor input object example

```json
{
  "appIds": [
    "284882215"
  ],
  "countries": [
    "us",
    "gb"
  ],
  "allCountries": false,
  "maxReviewsPerCountry": 50,
  "sortBy": "mostrecent",
  "includeAuthorNames": false,
  "classifyTopics": false,
  "model": "claude-haiku-5-5"
}
```

# Actor output Schema

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

One row per result, in the dataset (overview view).

## `topics` (type: `string`):

Reviews, average rating and countries per topic. Written only when topic tagging is on.

# 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 = {
    "appIds": [
        "284882215"
    ],
    "countries": [
        "us",
        "gb"
    ],
    "maxReviewsPerCountry": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("brisaworks/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 = {
    "appIds": ["284882215"],
    "countries": [
        "us",
        "gb",
    ],
    "maxReviewsPerCountry": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("brisaworks/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 '{
  "appIds": [
    "284882215"
  ],
  "countries": [
    "us",
    "gb"
  ],
  "maxReviewsPerCountry": 50
}' |
apify call brisaworks/app-store-reviews --silent --output-dataset

```

## MCP server setup

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