# App Store & Google Play Scraper (`anuarbakty/app-store-play-scraper`) Actor

App Store scraper and Google Play scraper in one run: reviews, app details, ratings histogram, search, top charts, similar apps and ASO keyword rankings. Filter reviews by stars, date, words and version, or get only new ones. Export JSON or CSV. No login.

- **URL**: https://apify.com/anuarbakty/app-store-play-scraper.md
- **Developed by:** [Anuar Bakty](https://apify.com/anuarbakty) (community)
- **Categories:** Developer tools, Automation, SEO tools
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.14 / 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

Scrape **App Store reviews** and **Google Play reviews**, app details, top charts, search results and keyword rankings in one run, with one set of columns for both stores. Paste store links, app ids or app names. No login, no API key, no Apple or Google account.

- **Read what users say:** reviews of your app or a competitor's, filtered by stars, words, dates and version.
- **Watch new reviews:** a scheduled run delivers only what appeared since the last one.
- **Research a market:** top charts by category and country, search results, similar apps, every app of a developer.
- **Work on ASO:** where your app ranks for a keyword, store suggestions, popularity and difficulty estimates.

### What does App Store & Google Play Scraper do?

- **Both stores in one table.** App Store and Google Play rows have the same columns, and links, ids and names can be mixed in one list.
- **Fast.** 1,000 Google Play reviews in about 4 seconds and 10,000 in about 75, measured on Apify.
- **Filters reviews.** Stars, words to keep or drop, dates, the last N days, app version, developer reply, helpful votes, text length.
- **Only new reviews.** The Actor remembers the newest review of each app between runs, under a watch name you choose.
- **App details.** Rating, ratings by star, price, installs, version, what's new, screenshots, category, developer, in-app purchases, privacy and data safety.
- **One bad app does not stop the run.** A removed app or a country where it is not sold becomes a free row that says what happened and what to do.
- **Runs inputs made for other store Actors.** `appIds`, `startUrls`, `country`, `lang`, `maxReviews`, `sortBy`, `searchTerm`, `mode` and many more are understood, so a saved flow keeps working.

### How to use this App Store scraper and Google Play scraper

1. In **Data to collect**, keep **Reviews of apps**, or pick others. Several can run together.
2. Paste links, ids or names into **Apps**.
3. Set **Reviews per app**, and **Countries** and **Languages** if you need others than the US and English.
4. Click **Start**, then download JSON, CSV, Excel or HTML, or read the results through the API.

### How much does it cost to scrape app reviews?

You pay only for rows you get. Platform usage is included.

| What you get | On the Free plan | Example |
|---|---|---|
| Review | $0.20 per 1,000 | 5,000 reviews = $1.00 |
| App, keyword position, estimate, suggestion or availability row | $1.00 per 1,000 | top 100 of a chart = $0.10 |
| Start of a run | $0.001 per GB of memory, at least one | a run at the default 512 MB = $0.001 |

Paid Apify plans pay less, up to 30% less: see the **Pricing** tab. Apify's free $5 a month buys about 25,000 reviews. Rows that explain empty results are free, and filtered-out reviews are never charged. Set **Maximum cost per run** in the run options to stop at your budget: the status then says why the run stopped.

### Input

Each mode reads only its own fields, so a leftover field of another mode does nothing.

#### App Store reviews API and Google Play reviews API: one app in both stores

```json
{
    "modes": ["reviews"],
    "apps": ["https://apps.apple.com/us/app/mychart/id382952264", "https://play.google.com/store/apps/details?id=epic.mychart.android"],
    "maxReviewsPerApp": 200
}
```

#### App store review scraper: one- and two-star reviews that mention login, last 30 days

```json
{ "apps": ["epic.mychart.android"], "ratings": ["1", "2"], "reviewKeywords": ["login", "password"], "recentDays": 30, "maxReviewsPerApp": 0 }
```

#### App store review monitoring: only new reviews on a schedule

```json
{ "apps": ["382952264", "epic.mychart.android"], "onlyNew": true, "watchName": "clinic-apps", "maxReviewsPerApp": 500 }
```

#### Google Play store scraper: app details with ratings by star

```json
{ "modes": ["appDetails"], "apps": ["382952264", "epic.mychart.android"], "countries": ["us", "de"], "includePrivacy": true }
```

#### Top charts by category and country

```json
{ "modes": ["charts"], "charts": ["topFree", "topGrossing"], "chartCategory": "MEDICAL", "countries": ["us", "gb"], "maxResultsPerQuery": 100 }
```

#### Apple App Store scraper: search apps by keyword

```json
{ "modes": ["search"], "searchTerms": ["patient portal", "dentist booking"], "maxResultsPerQuery": 30, "fullDetails": true }
```

#### ASO keyword tool: app store keyword ranking, estimates and suggestions

```json
{ "modes": ["keywordRank", "keywordScores", "keywordSuggestions"], "keywords": ["patient portal", "hospital"], "apps": ["382952264", "epic.mychart.android"] }
```

#### Similar apps and developer portfolios

```json
{ "modes": ["similarApps", "developerApps"], "apps": ["382952264"], "developers": ["Epic Systems Corporation"], "maxResultsPerQuery": 30, "includeDeveloperContacts": true }
```

#### Countries and languages

| | App Store | Google Play |
|---|---|---|
| **Country** changes | reviews, prices, charts, availability | prices, charts, availability |
| **Language** changes | texts of the app, where the country has them | reviews and texts |

Google Play gives the same reviews for every country, so its review rows have an empty `country`, and you pick reviews by language. A link keeps its own country and language unless you fill these fields. `all` in **Countries** reads every App Store country in the list, and `all` in **Languages** reads Google Play reviews in 34 languages. Any two-letter country works: `gh`, `bs`, `ng`, `kz`.

### Output

One row per review or app. Download JSON, CSV, Excel, XML or HTML. An example review (sample data):

```json
{
    "type": "review",
    "store": "googlePlay",
    "appId": "com.example.clinic",
    "appTitle": "Example Clinic",
    "appScore": 4.4,
    "appRatings": 12840,
    "language": "en",
    "reviewId": "1a2b3c4d-0000-4000-8000-000000000000",
    "rating": 2,
    "title": null,
    "text": "Booking works, but the login fails after every update.",
    "date": "2026-10-20T08:15:00.000Z",
    "version": "4.2.1",
    "thumbsUp": 3,
    "userName": "Sample User",
    "replyText": "Thank you, we are fixing this.",
    "replyDate": "2026-10-21T09:00:00.000Z",
    "reviewUrl": "https://play.google.com/store/apps/details?id=com.example.clinic&reviewId=1a2b3c4d-0000-4000-8000-000000000000",
    "scrapedAt": "2026-10-31T10:00:00.000Z"
}
```

#### What data can you extract?

| Row (`type`) | Fields |
|---|---|
| `review` | `appId`, `appTitle`, `appUrl`, `appScore`, `appRatings`, `reviewId`, `rating`, `title`, `text`, `date`, `version`, `thumbsUp`, `voteCount`, `userName`, `userUrl`, `userImage`, `replyText`, `replyDate`, `criteriaRatings`, `reviewUrl` |
| `app` | `appId`, `bundleId`, `title`, `subtitle`, `description`, `url`, `icon`, `screenshots`, `developer`, `developerId`, `developerWebsite`, `genre`, `categories`, `price`, `currency`, `free`, `offersIAP`, `inAppPurchases`, `score`, `ratings`, `reviewsCount`, `histogram`, `installs`, `minInstalls`, `maxInstalls`, `version`, `released`, `updated`, `recentChanges`, `sizeBytes`, `minOsVersion`, `contentRating`, `languages`, `privacy`, `rank`, `relation`, `query`, `chart`, `detailLevel` |
| `app`, with **Developer contacts** on | `developerEmail`, `developerPhone`, `developerAddress`, `developerLegalEmail` (Google Play) |
| `rank` | `keyword`, `appId`, `appTitle`, `rank`, `found`, `resultsChecked` |
| `keywordScore` | `keyword`, `popularityEstimate`, `difficultyEstimate` (0 to 100, higher is more popular or harder), `titleMatchesInTop10`, `medianRatingsInTop10`, `suggestionsCount`, `isEstimate` |
| `suggestion` | `keyword`, `suggestion`, `position` |
| `availability` | `appId`, `availableIn`, `notAvailableIn`, `availableCount`, `checkedCount` |
| `notice` (free) | `code`, `message`, `source` |

Every row also has `type`, `store`, `country`, `language`, `source`, `tags` and `scrapedAt`.

### Run it on a schedule and connect it

Reviews change every day, so most value comes from repeating the run. Save your input as a task, add an Apify schedule, and turn on **Only new reviews**. Send the results to Slack, email, Google Sheets, Zapier, Make or n8n with an Apify integration, or read them through the API.

### Use it from AI agents (MCP)

The Actor works in Claude, ChatGPT, Cursor and any MCP client through the Apify MCP server: `https://mcp.apify.com/?tools=anuarbakty/app-store-play-scraper`. **Fast mode** answers within 30 seconds: 100 reviews from two stores took about 2 seconds. A misspelled field stops the run before any charge, with a message that names the field, so an agent can correct itself. A call the agent can copy:

```json
{ "apps": ["Teladoc Health"], "ratings": ["1"], "maxReviewsPerApp": 20, "fastMode": true }
```

https://www.youtube.com/watch?v=1i-dKo-0puk

### More from this developer

- [Instagram Reels Transcript Generator](https://apify.com/anuarbakty/instagram-reels-transcript-generator): Instagram reels to text, subtitles and hooks.
- [YouTube Transcript Scraper](https://apify.com/anuarbakty/youtube-transcript-scraper): transcripts of videos, Shorts, channels and playlists.
- [Facebook Ads Library Scraper](https://apify.com/anuarbakty/facebook-ads-library-scraper): Facebook and Instagram ads by keyword, brand or page.
- [Threads Scraper](https://apify.com/anuarbakty/threads-scraper): posts, replies and profiles without login.
- [2GIS Places Scraper](https://apify.com/anuarbakty/2gis-places-scraper): businesses with phones, emails and websites.
- [2GIS Reviews Scraper](https://apify.com/anuarbakty/2gis-reviews-scraper): reviews with filters and only-new monitoring.

### FAQ

**Is there an App Store reviews API or a Google Play reviews API?** The official ones, App Store Connect and the Google Play Developer API, show reviews only of apps you own, and Google's only for a recent period. This Actor reads the public reviews of any app and gives them to you through the Apify API as JSON or CSV.

**Do I need an Apple or Google account?** No. The Actor reads public store data.

**How do I export App Store reviews to CSV or Excel?** Paste the app link, run, and choose CSV or Excel on the results page.

**How many App Store reviews can I get?** Up to 500 per country from one list. Turn on **App Store: read both newest and most helpful** to reach about 1,000 per country (998 in our test), and add countries, or `all`, for more.

**How many Google Play reviews can I get?** All the store shows with text. 10,000 took about 75 seconds. Star ratings without text are not reviews, so the count can be lower than the number of ratings.

**How do I find a competitor's negative reviews?** Paste the competitor's app or name and set **Only these stars** to 1 and 2. Add **Only with these words** to look for a topic.

**Why are some fields empty?** The stores differ. App Store reviews have titles and votes, but no links of their own and no developer replies in this source. Google Play reviews have avatars, replies and per-feature ratings, but no titles, and some have no version. In lists, Google Play shows only the basics: turn on **Full details** for installs and ratings by star.

**How accurate are keyword positions and popularity?** Positions are the place in the store's search results, read through the iTunes search on the App Store and the search page on Google Play. Popularity and difficulty are estimates for comparing keywords with each other: the stores publish no search volumes.

**Is it legal to scrape app reviews?** The Actor reads public pages only. Author names and developer contacts can be personal data: author names can be turned off, contacts are off by default, and how you use the data is up to you.

**Something does not work?** Open an issue on the Issues tab with the run link.

# Actor input Schema

## `modes` (type: `array`):

Pick one or several. Each reads only its own inputs below, so a leftover field of another mode does nothing.

## `store` (type: `string`):

Which store to read. For a store link or a numeric id the store is known anyway; this narrows names, dotted ids, searches, charts and keywords.

## `apps` (type: `array`):

One per line, both stores mixed: a store link, an App Store id (<code>382952264</code>), a bundle id or Android package (<code>com.epic.mychart</code>, <code>epic.mychart.android</code>), or an app name (the first search result is taken). Used by Reviews, App details, Similar apps, Availability, Keyword position. With Store set to both, a name or a dotted id can find one app in each store, and limits apply to each.

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

Two-letter codes, any country: <code>us</code>, <code>kz</code>. <code>all</code>: about 120 App Store countries. Empty: the country in the link, or <code>us</code>; in the Availability mode, all App Store countries and 25 large Google Play markets.<br>App Store reviews, prices and charts differ by country. On Google Play prices and charts do, but reviews differ by language, not country.

## `languages` (type: `array`):

Two-letter codes: <code>en</code>, <code>de</code>. <code>all</code> reads Google Play reviews in 34 languages and removes duplicates. Empty: the language in the link, or <code>en</code>.<br><b>Google Play:</b> picks the language of reviews and texts.<br><b>App Store:</b> picks the language of texts where the country has it; reviews depend on the country.

## `maxReviewsPerApp` (type: `integer`):

For each app in each country (App Store) or language (Google Play), so 20 with an app in both stores gives 40. 0 means all the store gives. The App Store gives up to 500 per country: add countries or read both sorts for more. For a limit on the whole run, use Rows per run.

## `sort` (type: `string`):

<b>Newest</b> reads the latest first, and stops early at a "from" date. <b>Most helpful</b> reads the most voted first. <b>By rating</b> is for Google Play; the App Store then reads newest first.

## `appStoreBothSorts` (type: `boolean`):

Off: one list of up to 500 reviews per country. On: both lists are read and duplicates removed, which gives more reviews per country.

## `ratings` (type: `array`):

Numbers from 1 to 5, such as <code>1</code> and <code>2</code>. Empty: all stars.

## `reviewKeywords` (type: `array`):

A review is kept when its title or text holds any of them, in any case. Empty: all reviews.

## `excludeKeywords` (type: `array`):

A review holding any of them is dropped. Empty: nothing is dropped.

## `dateFrom` (type: `string`):

<code>2026-09-01</code>, a full date-time, or a span back from now such as <code>30 days</code>. Empty: no lower limit.

## `dateTo` (type: `string`):

The same forms; a date includes that whole day. Empty: no upper limit.

## `recentDays` (type: `integer`):

A shortcut for "From date". 0: not used.

## `appVersions` (type: `array`):

Keep reviews of versions that start with this, such as <code>11.9</code>. Empty: all versions.

## `developerReply` (type: `string`):

Keep reviews with or without a reply of the developer. Google Play shows replies; on the App Store "with" gives nothing, as its feed has no replies.

## `minThumbsUp` (type: `integer`):

0: no minimum.

## `minReviewLength` (type: `integer`):

In characters. 0: no minimum.

## `onlyNew` (type: `boolean`):

Off: every run reads from the top. On: the Actor remembers the newest review of each app between runs, in a store named after the watch below, and delivers only what appeared since. The first run reads up to the limit and remembers. Put it on an Apify schedule to monitor apps.

## `watchName` (type: `string`):

Separate names keep separate memories, for example one per client. Used with "Only new reviews".

## `maxScanPerApp` (type: `integer`):

How far filters may read while looking for matches, for each app in each country or language. 0: to the end of the list, which can take long for large apps.

## `includeReviewAuthors` (type: `boolean`):

On: the public name, profile and avatar of each author. Off: these columns stay empty, for data without personal names.

## `deduplicate` (type: `boolean`):

On: a review met twice in one app (several lists or languages) is written once. Off: written each time.

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

For the Search mode. One search per line, such as <code>patient portal</code>.

## `charts` (type: `array`):

For the Top charts mode. Google Play has the first three.

## `chartCategory` (type: `string`):

A name such as <code>MEDICAL</code>, <code>HEALTH_AND_FITNESS</code>, <code>FINANCE</code>, <code>GAMES</code>, or an App Store genre id such as <code>6020</code>. Names of one store are understood for the other. Empty: all apps.

## `device` (type: `string`):

iPhone or iPad charts. iPad has the top free, paid and grossing charts.

## `developers` (type: `array`):

For the All apps of a developer mode: a store link, an App Store numeric id, or a Google Play developer name or id. Apps in the Apps field add their developers too.

## `maxResultsPerQuery` (type: `integer`):

The stores give up to about 200 per App Store search, 100 per App Store chart, 200 per Google Play chart, and 20 to 30 per Google Play search. 0: as many as the store gives.

## `fullDetails` (type: `boolean`):

Off: lists give what the store shows in a list (for Google Play: name, developer, rating, price; ratings count and installs stay empty). On: each app page is opened too, for installs, ratings by star, description and developer id. Each row is charged the same, the run takes longer.

## `keywords` (type: `array`):

For the Keyword modes. <b>Position:</b> the place of each app of the Apps field in the store search, up to about 200 results on the App Store and 20 to 30 on Google Play; <code>found</code> is false when it is not there. <b>Popularity and difficulty:</b> estimates from 0 to 100, higher is more popular or harder, to compare keywords with each other, not search counts. <b>Suggestions:</b> what the store offers while typing.

## `includeDeveloperContacts` (type: `boolean`):

Off: no contacts. On: the email, phone and address Google Play shows for the developer are added to Google Play app rows (columns developerEmail, developerPhone, developerAddress, developerLegalEmail); each app page is opened for them. The App Store shows no contacts. These can be personal data: handle them lawfully.

## `includePrivacy` (type: `boolean`):

Off: not collected. On: App Store privacy types and Google Play data safety are added to app rows of the App details mode and full lists.

## `tags` (type: `array`):

Written into every row, for example a client name, to tell datasets apart later.

## `customMapFunction` (type: `string`):

Optional. Receives each row and returns the row to save, or nothing to skip it: <code>(row) => ({ ...row, app: row.appId })</code>. Empty: rows are saved as they are.

## `includeErrorRows` (type: `boolean`):

On: when something gives nothing, a free row says why, such as an app not sold in that country. Off: only the log says it.

## `maxItems` (type: `integer`):

The run stops after this many charged rows, whichever store they come from. 0: no limit besides the ones above.

## `fastMode` (type: `boolean`):

Off: reads everything asked. On: answers within about 30 seconds for agents and live tools: up to 50 reviews per app, fewer retries, and reading stops after 25 seconds.

## `failIfAllInputsFail` (type: `boolean`):

Off: the run succeeds and free rows explain why. On: the run ends as Failed, for automations that watch the status.

## `strictInput` (type: `boolean`):

On: a misspelled field stops the run before any charge, so a limit is never silently ignored. Off: unknown fields are ignored with a warning.

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

Not needed for most runs. Turn it on if a store refuses requests.

## Actor input object example

```json
{
  "modes": [
    "reviews"
  ],
  "store": "both",
  "apps": [
    "https://apps.apple.com/us/app/mychart/id382952264",
    "https://play.google.com/store/apps/details?id=epic.mychart.android"
  ],
  "countries": [],
  "languages": [],
  "maxReviewsPerApp": 20,
  "sort": "newest",
  "appStoreBothSorts": false,
  "ratings": [],
  "reviewKeywords": [],
  "excludeKeywords": [],
  "recentDays": 0,
  "appVersions": [],
  "developerReply": "any",
  "minThumbsUp": 0,
  "minReviewLength": 0,
  "onlyNew": false,
  "watchName": "default",
  "maxScanPerApp": 20000,
  "includeReviewAuthors": true,
  "deduplicate": true,
  "charts": [
    "topFree"
  ],
  "device": "iphone",
  "maxResultsPerQuery": 50,
  "fullDetails": false,
  "includeDeveloperContacts": false,
  "includePrivacy": false,
  "includeErrorRows": true,
  "maxItems": 0,
  "fastMode": false,
  "failIfAllInputsFail": false,
  "strictInput": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

No description

## `summary` (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 = {
    "modes": [
        "reviews"
    ],
    "apps": [
        "https://apps.apple.com/us/app/mychart/id382952264",
        "https://play.google.com/store/apps/details?id=epic.mychart.android"
    ],
    "maxReviewsPerApp": 20,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("anuarbakty/app-store-play-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 = {
    "modes": ["reviews"],
    "apps": [
        "https://apps.apple.com/us/app/mychart/id382952264",
        "https://play.google.com/store/apps/details?id=epic.mychart.android",
    ],
    "maxReviewsPerApp": 20,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("anuarbakty/app-store-play-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 '{
  "modes": [
    "reviews"
  ],
  "apps": [
    "https://apps.apple.com/us/app/mychart/id382952264",
    "https://play.google.com/store/apps/details?id=epic.mychart.android"
  ],
  "maxReviewsPerApp": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call anuarbakty/app-store-play-scraper --silent --output-dataset

```

## MCP server setup

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