# Amazon Bestsellers Scraper (`junglee/amazon-bestsellers`) Actor

Scrape the Amazon Best Sellers categories and extract details on top 100 most popular items on Amazon. Download product name, price, URL, and thumbnail image. Best used on .com, .co.uk, .de, .fr, .es, and .it domains. Download your data in various formats: HTML table, JSON, CSV, Excel, and more.

- **URL**: https://apify.com/junglee/amazon-bestsellers.md
- **Developed by:** [Junglee](https://apify.com/junglee) (Apify)
- **Categories:** E-commerce
- **Stats:** 5,157 total users, 452 monthly users, 92.4% runs succeeded, 106 bookmarks
- **User rating**: 4.25 out of 5 stars

## Pricing

from $3.20 / 1,000 items

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

### ⭐️ What is Amazon Best Sellers Scraper?

This Amazon Best Sellers Scraper allows you to scrape the 100 top-selling items on Amazon. It extracts data from [Amazon Best Sellers](https://www.amazon.com/Best-Sellers/zgbs) pages in structured formats such as JSON, XML, CSV, or Excel. With this Amazon API, you will be able to:

- extract **data from different domains**: US, GB, DE, FR, ES, and IT.
- **extract all Amazon Best Seller product details**: name, price, URL, and thumbnail image.
- **scrape Amazon Best Seller categories** and subcategories.
- **besides Amazon Best Seller categories**, you can now also scrape the following Amazon categories with this scraper: **Most Wished, Movers and Shakers, New Releases, and Gift Ideas.** For examples of URLs that be scraped, head over to the [Input section](https://apify.com/junglee/amazon-bestsellers#input-parameters).

If you would prefer a more general Amazon product data scraper, you should try [Amazon Scraper](https://apify.com/junglee/amazon-crawler) instead.

### 📚 How do I scrape Amazon Best Sellers?

Amazon Best Sellers Scraper was designed for an easy start even if you've never extracted data from the web before. Here's how you can scrape bestsellers with this tool:

1. Create a free Apify account using your email.
2. Open [Amazon Best Sellers Scraper](https://apify.com/junglee/amazon-bestsellers).
3. Add one or more Amazon URLs to scrape product info.
4. Click "Start" and wait for the data to be extracted.
5. Download your data in JSON, XML, CSV, Excel, or HTML.

For a step-by-step guide on how to scrape Amazon Best Seller products, follow our [tutorial](https://blog.apify.com/how-to-scrape-data-from-amazon-best-sellers).

### 📦 How many results can you scrape with Amazon Best Seller scraper?

Amazon Best Sellers scraper can return up to tens of thousands of results **on average**. However, you have to keep in mind that scraping [amazon.com](http://amazon.com/) has many variables to it and may cause the results to fluctuate case by case. There’s no one-size-fits-all-use-cases number. **The maximum number of results may vary** depending on the complexity of the input, location, and other factors. Some of the most frequent cases are:

- website gives a different number of results depending on the type/value of the input
- website has an internal limit that no scraper can cross
- scraper has a limit that we are working on improving

Therefore, while we regularly run Actor tests to keep the benchmarks in check, the results may also fluctuate without our knowing. The best way to know for sure for your particular use case is to do a test run yourself.

### 🎯 Need to do product matching between Amazon and another online shop?

Use the [AI Product Matcher](https://apify.com/product-matching-ai). This AI model allows you to compare items from different web stores, identifying exact matches and comparing real-time data obtained via web scraping. With the AI Product Matcher, you can use scraped product data to monitor product matches across the industry, implement dynamic pricing for your website, replace or complement manual mapping, and obtain realistic estimates against your competition for upcoming promo campaigns.

Most importantly, it is relatively easy to get started with (just follow [this guide](https://blog.apify.com/product-matching-ai-pricing-intelligence-web-scraping/)).⬇️

### ⬇️ Input parameters

You can scrape Amazon Best Sellers **by Amazon URLs** from 6 different Amazon domains: .com, .de. .co.uk, .fr, .es and .it. You can get all the details from a chosen category and its subcategories. You can add as many URLs as you want.

Here's an input example of acceptable Amazon URLs:

- Best Sellers: <https://www.amazon.com/Best-Sellers-Appliances/zgbs/appliances/ref=zg_bs_nav_appliances_0>
- Movers and Shakers: <https://www.amazon.de/-/en/gp/movers-and-shakers/garden/ref=zg_bsms_nav_garden_0>
- New Releases: <https://www.amazon.co.uk/gp/new-releases/ref=zg_bsms_tab_bsnr>
- Most Wished: <https://www.amazon.es/gp/most-wished-for/ref=zg_bs_tab_mw>
- Most Gifted: <https://www.amazon.fr/gp/most-gifted/books/ref=zg_mg_nav_books_0>

<img width="75%" src="https://github.com/apify-projects/actor-readme-images/blob/master/Amazon%20Bestsellers%20Scraper%20input.png?raw=true" />

### ⬆️ Output example

The scraped Amazon items will be shown as a dataset which you can find in the **Output or Storage tabs**. Note that the output will first be organized as a table for viewing convenience:

![Amazon Bestsellers dataset](https://github.com/apify-projects/actor-readme-images/blob/master/Amazon%20Bestsellers%20dataset.png?raw=true)

You can preview all the fields and choose in which format to download the data you’ve extracted: JSON, Excel, HTML table, CSV, or XML. Here below is the same dataset in JSON:

```json
 [{
  "position": 1,
  "category": "Amazon Best Sellers: Best Electronics",
  "categoryUrl": "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/",
  "name": "Amazon Fire TV Stick 4K, brilliant 4K streaming quality, TV and smart home controls, free and live TV",
  "price": 22.99,
  "currency": "$",
  "numberOfOffers": 1,
  "url": "https://www.amazon.com/all-new-fire-tv-stick-4k-with-alexa-voice-remote/dp/B08XVYZ1Y5/ref=zg_bs_g_electronics_sccl_1/134-0062779-1101052?psc=1",
  "thumbnail": "https://images-na.ssl-images-amazon.com/images/I/41GYmjbeVSL._AC_UL600_SR600,400_.jpg"
},
{
  "position": 2,
  "category": "Amazon Best Sellers: Best Electronics",
  "categoryUrl": "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/",
  "name": "Amazon Fire TV Stick with Alexa Voice Remote (includes TV controls), free &amp; live TV without cable or satellite, HD streaming device",
  "price": 19.99,
  "currency": "$",
  "numberOfOffers": 1,
  "url": "https://www.amazon.com/fire-tv-stick-with-3rd-gen-alexa-voice-remote/dp/B08C1W5N87/ref=zg_bs_g_electronics_sccl_2/134-0062779-1101052?psc=1",
  "thumbnail": "https://images-na.ssl-images-amazon.com/images/I/51TjJOTfslL._AC_UL600_SR600,400_.jpg"
},
{
  "position": 3,
  "category": "Amazon Best Sellers: Best Electronics",
  "categoryUrl": "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/",
  "name": "Amazon Echo Dot (5th Gen) | The helpful assistant with clear vocals, deeper bass, and easy voice controls to assist you | Charcoal",
  "price": 22.99,
  "currency": "$",
  "numberOfOffers": 1,
  "url": "https://www.amazon.com/All-New-release-Smart-speaker-Charcoal/dp/B09B8V1LZ3/ref=zg_bs_g_electronics_sccl_3/134-0062779-1101052?psc=1",
  "thumbnail": "https://images-na.ssl-images-amazon.com/images/I/518cRYanpbL._AC_UL600_SR600,400_.jpg"
},
{
  "position": 4,
  "category": "Amazon Best Sellers: Best Electronics",
  "categoryUrl": "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/",
  "name": "Apple AirTag",
  "price": 28.99,
  "currency": "$",
  "numberOfOffers": 1,
  "url": "https://www.amazon.com/Apple-MX532AM-A-AirTag/dp/B0933BVK6T/ref=zg_bs_g_electronics_sccl_4/134-0062779-1101052?psc=1",
  "thumbnail": "https://images-na.ssl-images-amazon.com/images/I/713xuNx00oS._AC_UL600_SR600,400_.jpg"
},
{
  "position": 5,
  "category": "Amazon Best Sellers: Best Electronics",
  "categoryUrl": "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/",
  "name": "Apple AirTag 4 Pack",
  "price": 88.99,
  "currency": "$",
  "numberOfOffers": 1,
  "url": "https://www.amazon.com/Apple-MX542AM-A-AirTag-Pack/dp/B0932QJ2JZ/ref=zg_bs_g_electronics_sccl_5/134-0062779-1101052?psc=1",
  "thumbnail": "https://images-na.ssl-images-amazon.com/images/I/71gY9E+cTaS._AC_UL600_SR600,400_.jpg"
},
{
  "position": 6,
  "category": "Amazon Best Sellers: Best Electronics",
  "categoryUrl": "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/",
  "name": "Blink Video Doorbell | simple setup, two-year battery life, HD video, motion alerts, Works with Alexa — battery or wired (Black)",
  "price": 29.99,
  "currency": "$",
  "numberOfOffers": 1,
  "url": "https://www.amazon.com/Blink-Video-Doorbell/dp/B08SG2MS3V/ref=zg_bs_g_electronics_sccl_6/134-0062779-1101052?psc=1",
  "thumbnail": "https://images-na.ssl-images-amazon.com/images/I/41te-uzWxDL._AC_UL600_SR600,400_.jpg"
},
{
  "position": 7,
  "category": "Amazon Best Sellers: Best Electronics",
  "categoryUrl": "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/",
  "name": "Apple AirPods (2nd Generation) Wireless Earbuds with Lightning Charging Case Included. Over 24 Hours of Battery Life, Effortless Setup. Bluetooth Headphones for iPhone",
  "price": 99,
  "currency": "$",
  "numberOfOffers": 1,
  "url": "https://www.amazon.com/Apple-AirPods-Charging-Latest-Model/dp/B07PXGQC1Q/ref=zg_bs_g_electronics_sccl_7/134-0062779-1101052?psc=1",
  "thumbnail": "https://images-na.ssl-images-amazon.com/images/I/61Zh467pKjL._AC_UL600_SR600,400_.jpg"
},
{
  "position": 8,
  "category": "Amazon Best Sellers: Best Electronics",
  "categoryUrl": "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/",
  "name": "All-new Echo Show 5 (3rd Gen, 2023 release) | Smart display and alarm clock with clearer sound | Charcoal ",
  "price": 39.99,
  "currency": "$",
  "numberOfOffers": 1,
  "url": "https://www.amazon.com/All-new-Echo-Show-5/dp/B09B2SBHQK/ref=zg_bs_g_electronics_sccl_8/134-0062779-1101052?psc=1",
  "thumbnail": "https://images-na.ssl-images-amazon.com/images/I/61dIsuhh4AL._AC_UL600_SR600,400_.jpg"
},
{
  "position": 9,
  "category": "Amazon Best Sellers: Best Electronics",
  "categoryUrl": "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/",
  "name": "Wall Charger, Surge Protector, QINLIANF 5 Outlet Extender with 4 USB Charging Ports (4.8A Total) 3-Sided 1680J Power Strip Multi Plug Adapter Spaced for Home Travel Office (3U1C)",
  "price": 15.97,
  "currency": "$",
  "numberOfOffers": 1,
  "url": "https://www.amazon.com/Charger-Protector-QINLIANF-Extender-Charging/dp/B08R6S1M1K/ref=zg_bs_g_electronics_sccl_9/134-0062779-1101052?psc=1",
  "thumbnail": "https://images-na.ssl-images-amazon.com/images/I/61Hh-YlfJOL._AC_UL600_SR600,400_.jpg"
},
{
  "position": 10,
  "category": "Amazon Best Sellers: Best Electronics",
  "categoryUrl": "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/",
  "name": "Apple EarPods Headphones with Lightning Connector. Microphone with Built-in Remote to Control Music, Phone Calls, and Volume. Wired Earbuds for iPhone",
  "price": 16.59,
  "currency": "$",
  "numberOfOffers": 1,
  "url": "https://www.amazon.com/Apple-EarPods-Lightning-Connector-White/dp/B01M0GB8CC/ref=zg_bs_g_electronics_sccl_10/134-0062779-1101052?psc=1",
  "thumbnail": "https://images-na.ssl-images-amazon.com/images/I/41-aexp44tL._AC_UL600_SR600,400_.jpg"
},
...
```

### ☝️ Tips and tricks

- By default, this Amazon scraper extracts the 37 top Best Seller subcategories. A deeper level of extraction can be added to allow you to scrape the top-selling items from the first level of the main categories' sub-divisions.
- The default depth of the crawl is limited to two subcategories. There is a way around this restriction. Start on the main category, scrape two departments. Then remove duplicate category URLs from there and feed them back into the scraper again.

### Error items

When the scraper cannot retrieve data for a given input — for example a bestsellers category page does not exist or a start URL is malformed — it pushes an **error item** to the dataset instead of silently skipping it. Normal output items are never affected; you can tell them apart by the presence of an `error` field.

#### Error item structure

```json
{
    "error": "product_not_found",
    "errorDescription": "Loaded a 404 page. The product does not exist.",
    "input": "https://www.amazon.com/dp/B0XXXXXXXX",
    "url": "https://www.amazon.com/dp/B0XXXXXXXX"
}
```

#### Error codes reference

| `error`                          | Meaning                                                        |
| -------------------------------- | -------------------------------------------------------------- |
| `invalid_url`                    | One or more start URLs were malformed or not recognized        |
| `invalid_input`                  | Actor failed due to bad configuration (run is also terminated) |
| `product_not_found`              | Product URL returns a 404 page                                 |
| `shortened_url_invalid`          | Amazon shortened URL could not be resolved                     |
| `bestsellers_category_not_found` | Bestsellers category page could not be found                   |
| `no_relevant_reviews_found`      | Reviews exist but none match the active filters                |
| `no_results_found`               | No results were found for the given input                      |

***

### ❓FAQ

#### Do I need proxies to scrape Amazon?

For the most reliable results of scraping, you will need to use some sort of proxy along with the scraper to prevent its detection by target websites. You can use both [Apify Proxy](https://apify.com/proxy) and custom HTTP or SOCKS5 proxy servers.

To engage custom proxies specifically, you will need to specify them in the  `scheme://user:password@host:port` format. Multiple proxies should be separated by a space or new line and the URL scheme can be either HTTP or SOCKS5. User and password might be omitted, but the port must always be present.

####

#### Can I integrate Amazon Best Sellers Scraper with other apps?

Yes. Amazon Best Sellers can be connected with almost any cloud service or web app thanks to <a href="https://apify.com/integrations"  target="_blank"> integrations on the Apify platform</a>. You can integrate with Make, Zapier, LangChain, Slack, Airbyte, GitHub, Google Sheets, Google Drive, <a href="https://docs.apify.com/integrations"  target="_blank"> and more</a>.

Or you can use <a href="https://docs.apify.com/integrations/webhooks"  target="_blank"> webhooks</a> to carry out an action whenever an event occurs, e.g. get a notification whenever this Amazon web scraper successfully finishes a run.

#### Can I use Amazon Best Sellers Scraper with API?

Yes, you can do so by using Apify API. It gives you programmatic access to the Apify platform. The API is organized around RESTful HTTP endpoints that enable you to manage, schedule, and run Apify Actors. The API also lets you access any datasets, monitor actor performance, fetch results, create and update versions, and more.

To access the API using Node.js, use the `apify-client` NPM package. To access the API using Python, use the `apify-client` PyPI package.

Check out the <a href="https://docs.apify.com/api/v2"  target="_blank"> Apify API reference</a> docs for full details or click on the <a href="https://apify.com/junglee/amazon-bestsellers-scraper/api"  target="_blank"> API tab</a> for code examples.

#### How can you use Amazon Best Sellers data?

If you're web scraping Amazon for retail or market research, the Amazon [Best Sellers list](https://www.amazon.com/gp/help/customer/display.html?nodeId=525376) can tell you a lot about the top trends in e-commerce. Competing directly against top-selling items across Amazon can be difficult, but it also can be a source of inspiration for new products for e-commerce retailers. Data collected on those top-selling items can help you:

- stay ahead of the competition
- improve sales for your business
- track up-and-coming products
- adjust your product prices to market levels

#### Not your cup of tea? Build your own scraper

Amazon Best Sellers Scraper doesn’t exactly do what you need? You can always build your own! We have various [scraper templates](https://apify.com/templates) in Python, JavaScript, and TypeScript to get you started. Alternatively, you can write it from scratch using our [open-source library Crawlee](https://crawlee.dev/). You can keep the scraper to yourself or make it public by adding it to Apify Store (and [find users](https://apify.com/partners/actor-developers) for it). Or let us know if you need a [custom scraping solution](https://apify.com/custom-solutions).

#### Resources on how to scrape data from Amazon Best Sellers

1. [Platform pricing page](https://apify.com/pricing/actors) with pricing specifications.
2. [Video guide ▷](https://www.youtube.com/watch?v=s_89WpOsKRI) on how to choose the right subscription plan.
3. [Step-by-step guide](https://blog.apify.com/how-to-scrape-data-from-amazon-best-sellers) on how to use Amazon Best Sellers scraper.
4. [Input tab](https://apify.com/junglee/amazon-bestsellers/input-schema) with all the technical parameters of this scraper.
5. [Is web scraping legal](https://blog.apify.com/is-web-scraping-legal/) on the legal aspects of web scraping.

#### Your feedback

We’re always working on improving the performance of our Actors. So if you’ve got any technical feedback for Amazon Best Sellers or simply found a bug, please create an issue on the Actor’s [Issues tab](https://console.apify.com/actors/iHaiR8VIUt13olbXg/issues) in Apify Console.

# Changelog

This Actor's version history is a separate document: https://apify.com/junglee/amazon-bestsellers/changelog.md

# Actor input Schema

## `categoryUrls` (type: `array`):

Pick one or a few Best Seller categories to scrape. If you enter a top-level category, all subcategories will be scraped (up to max depth). <br> Category URL has to contain <code>Best-Sellers</code>, <code>best-sellers</code> or <code>bestsellers</code>. To see examples of all accepted URLs, <a href='https://apify.com/junglee/amazon-bestsellers#input-parameters' target='_blank' rel='noopener'>check out the readme</a>.

## `maxItemsPerStartUrl` (type: `integer`):

Enter the maximum number of results you want to scrape per each star URL. Note that Amazon has a hard limit of 100 bestsellers per category.

## `depthOfCrawl` (type: `integer`):

Amazon Best Sellers covers 42 main categories. Each of those have at least one more subcategory level. <br> Setting this field to 2 will get you roughly 550 subcategories, each with 100 results.

## `language` (type: `string`):

Language to use on Amazon.

**Disclaimer**: each Amazon domain has a different set of supported languages. If you choose a language that is not supported by the domain, the scraper will use the default language of the domain.

## `detailedInformation` (type: `boolean`):

Check this if you want to get the maximum amount of information about individual products. However, choosing this option means the scraper could take longer, since it is extracting more data.

## `useCaptchaSolver` (type: `boolean`):

If enabled the scraper will automatically solve captchas thrown by Amazon. This will decrease the amount of request retries and increase the speed of the scraper.<br><br>***IMPORTANT*** - This option works well only for the `'.com'` Amazon domain, but even for that one Amazon doesn't show a few product fields after solving a captcha (specifically: 'attributes', 'manufacturer attributes', and 'bestseller ranks')

## Actor input object example

```json
{
  "categoryUrls": [
    "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"
  ],
  "maxItemsPerStartUrl": 100,
  "depthOfCrawl": 1,
  "language": "en",
  "detailedInformation": false,
  "useCaptchaSolver": false
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset containing all scraped bestseller data

# 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 = {
    "categoryUrls": [
        "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"
    ],
    "maxItemsPerStartUrl": 100,
    "depthOfCrawl": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("junglee/amazon-bestsellers").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 = {
    "categoryUrls": ["https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"],
    "maxItemsPerStartUrl": 100,
    "depthOfCrawl": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("junglee/amazon-bestsellers").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 '{
  "categoryUrls": [
    "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"
  ],
  "maxItemsPerStartUrl": 100,
  "depthOfCrawl": 1
}' |
apify call junglee/amazon-bestsellers --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,junglee/amazon-bestsellers"
        }
    }
}
```

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/iHaiR8VIUt13olbXg/builds/QAGInzRPtXTwAOUW3/openapi.json
