# Etsy Listings Scraper - Prices, Shops, Ads, Ranks & Details (`scrapersdelight/etsy-listings-scraper`) Actor

Scrape Etsy listings by keyword, category or listing URL: price, sale, shop, rating, Star Seller and Etsy's Pick badges, ads and organic rank, in 26 Etsy marketplaces. Optional listing-page details: description, photos, favorites, stock, variations, shop sales, buyer search terms. No login.

- **URL**: https://apify.com/scrapersdelight/etsy-listings-scraper.md
- **Developed by:** [Scrapers Delight](https://apify.com/scrapersdelight) (community)
- **Categories:** E-commerce, Business, Automation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.44 / 1,000 listings

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

### What does Etsy Listings Scraper do?

**Etsy Listings Scraper** exports Etsy listings from a keyword, a category or a listing URL: price and sale price, shop, shop rating, the badges Etsy shows (Star Seller, Etsy's Pick, free shipping), whether the slot is a paid ad, and the listing's organic rank or ad slot. Turn on listing-page details to add the description, every photo, favorites, quantity, variations, item reviews, shipping and returns, shop sales and the buyer search terms Etsy attaches to each listing. Product researchers, Etsy sellers, print-on-demand teams and price monitors use it to watch a niche without copying pages by hand.

Also searched as: Etsy scraper, Etsy search scraper, Etsy product scraper, Etsy API alternative.

- 🔎 **Keywords, categories or URLs** - type "ceramic mug", paste a /c/ category path, an Etsy search URL or a listing URL.
- 🏷️ **Rank and ads** - every row says whether it is an ad, its ad slot or its organic rank, and the page it was on.
- ⭐ **Badges and shop quality** - Star Seller, Etsy's Pick, local seller, free shipping, shop rating and review count.
- 📄 **Listing-page details on demand** - description, photos, video, favorites, stock, variations, materials, reviews, returns, shop sales.
- 🔑 **Buyer search terms** - about 200 searches per listing that Etsy itself ties to the listing page.
- 🌍 **26 Etsy marketplaces** - US, UK, Canada, Australia, Germany, France, Japan and more, in each one's currency.
- 🔁 **Monitor mode** - only new or re-priced listings since the last run.
- 🚫 **No login, no API key, no browser.**

### What data can you get from Etsy?

| | | |
|---|---|---|
| 🆔 Listing id and URL | 🏷️ Title | 💲 Price, sale price, % off |
| 💱 Currency | 🖼️ Main photo | 🏪 Shop id, name and URL |
| ⭐ Shop rating and reviews | 📢 Ad flag and ad slot | 📈 Organic rank and page |
| 🌟 Star Seller | 🏅 Etsy's Pick, Bestseller | 🚚 Free shipping |
| 📦 Only N left | 💾 Digital download | 🔢 Etsy's result total |
| 📝 Description `details` | 🖼️ All photos, video `details` | ❤️ Favorites `details` |
| 📦 Quantity, variations `details` | 🧵 Materials, highlights `details` | ⭐ Item rating, latest reviews `details` |
| 🚚 Ships from, delivery estimate `details` | ↩️ Returns policy `details` | 🏪 Shop sales, years on Etsy `details` |
| 👀 Views / bought in 24 h `details` | 🗂️ Category path `details` | 🔑 Buyer search terms `details` |

### How to scrape Etsy listings with Etsy Listings Scraper

1. [Create a free Apify account](https://console.apify.com/sign-up) - the free plan includes monthly credit.
2. Open **Etsy Listings Scraper** and type one or more keywords (or paste categories / Etsy URLs).
3. Pick the marketplace, a sort order and any filters.
4. Switch on **Add listing-page details** if you need the full record.
5. Click **Start** and wait for the run to finish.
6. Download the listings as JSON, CSV, Excel or HTML, or read them through the API.

### ⬇️ Input

| Parameter | Type | Description |
|---|---|---|
| **🔍 What to scrape** | | |
| `queries` | array | Keywords, one search each, e.g. `"ceramic mug"`. Prefilled. |
| `categories` | array | Category paths or /c/ URLs, e.g. `"home-and-living/kitchen-and-dining"`. |
| `startUrls` | array | Etsy search, market, category or listing URLs; filters in the URL are kept. |
| `listingUrls` | array | Listing URLs or ids to look up one by one (billed with the details add-on). |
| `marketplace` | select | Etsy country site; prices and currency follow it. Default `US`. |
| **🎯 Filters** (applied by Etsy) | | |
| `sortBy` | select | Relevancy, lowest price, highest price, top customer reviews, most recent. |
| `minPrice`, `maxPrice` | number | Price range in the marketplace currency. |
| `shipTo` | string | Two-letter country the item must ship to (keywords only). |
| `readyToShipWithin` | select | 1 or 3 business days. |
| `freeShippingOnly`, `onSaleOnly`, `starSellerOnly`, `bestsellerOnly`, `etsysPickOnly`, `handmadeOnly`, `digitalOnly`, `personalizableOnly` | boolean | Etsy's own filter switches. Default off. |
| `includeAds` | boolean | Keep paid ad slots (flagged on each row). Default on. |
| **✂️ Refine results** | | |
| `includeKeywords`, `excludeKeywords` | array | Title must / must not contain these words. |
| `minShopRating`, `minShopReviews` | number | Shop quality floor. |
| `minFavorites` | integer | Favorites floor; reads each listing page, so kept rows carry the details add-on. |
| **➕ Extra data** | | |
| `includeDetails` | boolean | Read each listing page (paid add-on). Default off. |
| **🔁 Monitoring** | | |
| `monitorMode`, `monitorKey` | boolean, string | Only listings that are new or changed price since the last run. |
| **📦 Output** | | |
| `maxItems` | integer | Total listings. Default 100, prefill 20. |
| `maxItemsPerQuery`, `maxPagesPerQuery` | integer | Per-search caps; 0 = none. |
| `compact`, `descriptionMaxLength` | boolean, integer | Core fields only; trim descriptions. |
| **⚙️ Advanced** | | |
| `maxConcurrency` | integer | Pages in flight. Default 4. |
| `useUnblockerFallback` | boolean | Try a refused page once through Apify's Unblocker. Default on. |
| `proxyConfiguration` | object | Residential by default; your own proxy URLs also work. |

#### Input JSON

```json
{
    "queries": ["ceramic mug", "linen apron"],
    "marketplace": "US",
    "sortBy": "top_reviews",
    "minPrice": 20,
    "starSellerOnly": true,
    "maxItems": 200,
    "includeDetails": false
}
```

#### Type keywords the way a shopper would

Each keyword is read from Etsy's own keyword page for that phrase, with the same filters as the search page. Use plain phrases ("leather journal", "personalized dog collar"). If Etsy has no listings for a phrase it still shows a grid of unrelated items; the run notices that none of them names your keyword and returns nothing for it instead of billing you for noise.

#### Paste a URL when you already filtered on Etsy

An Etsy search URL such as `https://www.etsy.com/search?q=linen+apron&min=10&order=price_asc` is read with its keyword and its filters. A category URL keeps its path. A listing URL is looked up on its own page.

#### Use a category for shop names on every row

Category pages print the shop name on every card (95% of rows in our test). Keyword pages print it on their first few cards only (21% of rows); every row still has the shop id, and the details add-on fills the shop name on every row.

### ⬆️ Output

One row per listing. A keyword row from a real run:

```json
{
  "listingId": "650260324",
  "url": "https://www.etsy.com/listing/650260324/washed-linen-pinafore-apron-japanese",
  "title": "Washed Linen Pinafore Apron: Japanese Style Cross Back Apron",
  "price": 46,
  "originalPrice": 92,
  "discountPercent": 50,
  "currency": "USD",
  "shopId": "7803582",
  "shopRating": 4.79,
  "shopReviewCount": 37700,
  "isAd": false,
  "organicRank": 6,
  "page": 1,
  "freeShipping": true,
  "isStarSeller": true,
  "badges": ["freeShipping", "starSeller"],
  "searchQuery": "linen apron",
  "searchTotalResultsText": "5,000+"
}
```

The same run with details adds fields like these (another real row):

```json
{
  "listingId": "771470421",
  "favorites": 7177,
  "quantity": 15967,
  "listingRating": 5,
  "listingReviewCount": 1079,
  "boughtLast24h": 4,
  "categoryPath": ["Home & Living", "Home Decor", "Candles & Home Fragrances", "Candles", "Pillar Candles"],
  "shipsFrom": "Belleville, PA",
  "deliveryEstimate": "Oct 20-26",
  "shopName": "BeesLightCandles",
  "shopSales": 48800,
  "shopTenure": "7 years",
  "imageCount": 15,
  "buyerSearchTerms": ["beeswax pillar candle", "beeswax candle", "beeswax pillar", "100 beeswax pillar candle", "pillar candle"]
}
```

#### Fields and measured fill

Measured on 2026-10-16 runs: a 100-listing keyword run (linen apron), a 70-listing category run (kitchen and dining) and 12 listing pages read for details.

| Field | Keyword rows | Category rows | Notes |
|---|---|---|---|
| `listingId`, `url`, `title`, `price`, `currency`, `imageUrl`, `shopId` | 100% | 100% | |
| `shopRating`, `shopReviewCount` | 99% | 100% | Etsy rounds big counts (37.7k) |
| `shopName`, `shopUrl` | 21% | 95% | 100% with details |
| `originalPrice`, `discountPercent` | 70% | 77% | only listings on sale |
| `organicRank` / `adSlot` | 64% / 36% | 72% / 27% | one or the other on every row |
| `freeShipping` | known on 100% | known on 100% | |
| `isStarSeller`, `isEtsysPick`, `isLocalSeller` | known on 78% | Star Seller known on 100% | null = the card did not say |
| `isBestseller` | from the listing page | from the listing page | null on search rows unless printed |
| Detail fields: `description`, `images`, `quantity`, `favorites`, `listedOn`, `categoryPath`, `variations`, `shipsFrom`, `deliveryEstimate`, `returnsPolicy`, `shopSales`, `shopTenure`, `buyerSearchTerms` | | | 100% of 12 listing pages |
| `listingRating`, `latestReviews` | | | 83% (listings with their own reviews) |
| `videoUrl`, `views24h`, `boughtLast24h`, `shopOwnerName` | | | 50%, 33%, 42%, 67% - only when Etsy prints them |

### Use cases

- 🛍️ **Etsy sellers** - see who ranks for your keywords, their prices, sales and badges.
- 📊 **Product research** - size a niche with Etsy's result totals, price ranges and favorites.
- 🔑 **SEO for listings** - mine the buyer search terms attached to top listings.
- 💸 **Price monitoring** - schedule monitor mode and get only new listings and price changes.
- 📢 **Ad intelligence** - see which shops buy ad slots on your keywords and where.
- 🧵 **Print-on-demand and wholesale** - find best-selling designs, materials and production partners.

### How much does it cost to scrape Etsy?

Pay per result, no start fee: **$0.00044 per listing** ($0.44 per 1,000). Listing-page details are an add-on at **$0.0015 per listing** that has them. You pay only for listings saved to your dataset.

| Run | Listings | Cost |
|---|---|---|
| Demo (prefill) | 20 | $0.0088 |
| Typical keyword | 100 | $0.044 |
| Deep keyword | 1,000 | $0.44 |
| 100 listings with listing-page details | 100 | $0.044 + $0.15 |

Apify's free plan credit covers thousands of listings a month.

### Integrations, API, scheduling & MCP

- **Schedules** - run Etsy Listings Scraper hourly or daily from the Schedules tab; pair it with monitor mode.
- **Webhooks** - get a call when a run finishes.
- **Make, Zapier, n8n, Google Sheets, Slack** - send rows anywhere through Apify's integrations.
- **API** - start runs and read results with the [Python](https://apify.com/scrapersdelight/etsy-listings-scraper/api/python) or [JavaScript](https://apify.com/scrapersdelight/etsy-listings-scraper/api/javascript) client.
- **MCP** - use it from an AI agent through the [MCP tab](https://apify.com/scrapersdelight/etsy-listings-scraper/api/mcp).

### More e-commerce scrapers

- 🛒 [AliExpress Products Scraper](https://apify.com/scrapersdelight/aliexpress-products-scraper) - use it when your products are sourced on AliExpress.
- 📦 [Amazon Product Scraper](https://apify.com/scrapersdelight/amazon-product-scraper) - Amazon search, prices and ratings.
- ⭐ [Amazon Reviews Scraper](https://apify.com/scrapersdelight/amazon-reviews-scraper) - review text and rating histograms.
- 🏬 [Shopify Products Scraper](https://apify.com/scrapersdelight/shopify-products-scraper) - products, variants and barcodes from any Shopify store.

See [all our scrapers](https://apify.com/scrapersdelight).

### Limits & empty runs

- A results page holds about 60 listings: 8 in the page and the rest from the page's own loader. A 1,000-listing run read 23 pages in our test (1,000 unique listings).
- Etsy caps its displayed result total at "5,000+".
- Shop pages (/shop/...) are not supported.
- Etsy refuses some page loads; the run retries on a new connection, then once through Apify's Unblocker. Pages that still fail are listed in the RUN_SUMMARY record and nothing is charged for them.
- Listing pages are the hardest pages to load, so with details on, some rows can come back without details; those rows are charged as plain listings.
- A keyword Etsy has no listings for returns 0 rows and is not charged.
- Every run writes a RUN_SUMMARY record: Etsy's total per search, pages read, listings delivered, filtered, duplicate and unchanged.

### ❓ FAQ

#### How much does Etsy Listings Scraper cost?

$0.00044 per listing, plus $0.0015 per listing that has listing-page details. There is no start fee; 1,000 listings cost $0.44.

#### How many listings can Etsy Listings Scraper return?

As many as Etsy pages through for the keyword or category, about 60 per page. Set `maxItems` for the total and `maxItemsPerQuery` per search.

#### Does Etsy Listings Scraper show ads and organic rank?

Yes. Every row has `isAd`; ads carry `adSlot` and organic results carry `organicRank`, both counted the way Etsy numbers them, with the page number.

#### Can Etsy Listings Scraper get the full listing description and photos?

Yes, with **Add listing-page details** on: description, all photos, video, favorites, quantity, variations, materials, item rating and latest reviews, shipping, returns and shop sales.

#### What are buyer search terms in Etsy Listings Scraper?

The list of searches Etsy attaches to each listing page - the phrases that lead buyers to it. We saw 180-218 per listing.

#### Can I schedule Etsy Listings Scraper to watch a niche?

Yes. Turn on monitor mode and schedule the run; each run delivers only listings that are new or changed price, with `changeType` and `previousPrice`.

#### Can I scrape other Etsy countries with Etsy Listings Scraper?

Yes. Pick one of 26 marketplaces; prices come in that marketplace's currency (USD, GBP, EUR, JPY ...).

#### Can I use Etsy Listings Scraper with the Apify API or an MCP server?

Yes - through the API clients, webhooks, integrations or the MCP tab on this page.

#### Do I need an Etsy account or API key for Etsy Listings Scraper?

No. It reads Etsy's public pages; no login, cookies or Etsy API key.

#### Why did my Etsy Listings Scraper run return no results?

Etsy has no listings for that keyword (the run says so), your filters are too narrow, or Etsy refused every page load - the RUN_SUMMARY record shows which.

#### Your feedback

Found a bug or need a field? Open an issue on the [Issues tab](https://apify.com/scrapersdelight/etsy-listings-scraper/issues/open) and we will look at it.

# Actor input Schema

## `queries` (type: `array`):

What to search on Etsy, as a buyer would type it, e.g. "ceramic mug", "linen apron", "personalized dog collar". Each line is its own search.

## `categories` (type: `array`):

Etsy category paths or /c/ URLs, e.g. "home-and-living/kitchen-and-dining", "jewelry/rings" or https://www.etsy.com/c/art-and-collectibles. 60+ listings per page, shop names included.

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

Etsy search, market, category or listing URLs, e.g. https://www.etsy.com/search?q=linen+apron or https://www.etsy.com/uk/market/tea_towel. URL filters are kept; shop pages are not supported.

## `listingUrls` (type: `array`):

Look up single listings: listing URLs or ids, e.g. https://www.etsy.com/listing/1017209660/... or 4589157848. Each one is read from its listing page (billed with the details add-on).

## `marketplace` (type: `string`):

Which Etsy country site to read: prices, currency and delivery estimates follow it. A pasted URL keeps its own country.

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

Order of the results.

## `minPrice` (type: `number`):

Lowest price, in the marketplace currency, e.g. 20.

## `maxPrice` (type: `number`):

Highest price, in the marketplace currency, e.g. 60.

## `shipTo` (type: `string`):

Only listings that ship to this country: a two-letter code, e.g. US, GB, DE. Keyword searches only.

## `readyToShipWithin` (type: `string`):

Only listings the seller dispatches within this many days. Empty = any.

## `freeShippingOnly` (type: `boolean`):

Only listings with free shipping.

## `onSaleOnly` (type: `boolean`):

Only listings with a sale price.

## `starSellerOnly` (type: `boolean`):

Only listings from Star Seller shops.

## `bestsellerOnly` (type: `boolean`):

Only listings with Etsy's Bestseller badge.

## `etsysPickOnly` (type: `boolean`):

Only listings Etsy's editors picked.

## `handmadeOnly` (type: `boolean`):

Only handmade listings.

## `digitalOnly` (type: `boolean`):

Only instant-download listings.

## `personalizableOnly` (type: `boolean`):

Only listings that take personalization.

## `includeAds` (type: `boolean`):

Keep the paid ad slots Etsy mixes into the results (each row says isAd and its ad slot). Off = organic results only.

## `includeKeywords` (type: `array`):

Keep a listing only if its title contains at least one of these words, e.g. "stoneware".

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

Drop listings whose title contains any of these words, e.g. "digital", "svg".

## `minShopRating` (type: `number`):

Only shops rated at least this many stars (0-5), e.g. 4.8.

## `minShopReviews` (type: `integer`):

Only shops with at least this many reviews, e.g. 100.

## `minFavorites` (type: `integer`):

Only listings favorited at least this many times. Favorites are on the listing page, so this reads it for each candidate and kept rows carry (and bill) the details add-on.

## `includeDetails` (type: `boolean`):

Description, all photos, video, favorites, quantity, variations, materials, item rating and latest reviews, shipping and returns, shop sales and years on Etsy, buyer search terms.

## `monitorMode` (type: `boolean`):

Deliver only listings not delivered by an earlier run with the same searches, plus listings whose price changed (changeType, previousPrice).

## `monitorKey` (type: `string`):

Optional name for the monitor's memory, e.g. "mugs-daily". Empty = one memory per set of searches and filters.

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

Total listings to deliver across all inputs. A results page holds about 60 listings.

## `maxItemsPerQuery` (type: `integer`):

Cap for each keyword, category or URL; 0 = no per-search cap.

## `maxPagesPerQuery` (type: `integer`):

Stop each search after this many results pages; 0 = no page cap.

## `compact` (type: `boolean`):

Core fields only (id, title, price, shop, rating, rank, badges, favorites) - trimmed for AI/MCP pipelines.

## `descriptionMaxLength` (type: `integer`):

Trim the listing description to this many characters; 0 = full text.

## `maxConcurrency` (type: `integer`):

Pages loaded at the same time.

## `useUnblockerFallback` (type: `boolean`):

When Etsy refuses a page on two residential exits, try it once through Apify's Unblocker before giving up on it.

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

Etsy serves residential exits (the run picks one in the marketplace's country). You can also give your own proxy URLs.

## Actor input object example

```json
{
  "queries": [
    "ceramic mug"
  ],
  "marketplace": "US",
  "sortBy": "relevance",
  "freeShippingOnly": false,
  "onSaleOnly": false,
  "starSellerOnly": false,
  "bestsellerOnly": false,
  "etsysPickOnly": false,
  "handmadeOnly": false,
  "digitalOnly": false,
  "personalizableOnly": false,
  "includeAds": true,
  "includeDetails": false,
  "monitorMode": false,
  "maxItems": 20,
  "maxItemsPerQuery": 0,
  "maxPagesPerQuery": 0,
  "compact": false,
  "descriptionMaxLength": 0,
  "maxConcurrency": 4,
  "useUnblockerFallback": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

One item per listing: price, sale, shop, ratings, badges, ad flag and rank; listing-page details when asked for.

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

Per-search Etsy result totals, pages read, listings delivered / filtered / duplicate / unchanged, details read, and page-load stats.

# 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 = {
    "queries": [
        "ceramic mug"
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapersdelight/etsy-listings-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 = {
    "queries": ["ceramic mug"],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapersdelight/etsy-listings-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 '{
  "queries": [
    "ceramic mug"
  ],
  "maxItems": 20
}' |
apify call scrapersdelight/etsy-listings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapersdelight/etsy-listings-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/0S5WEOCh3OjUMEaz6/builds/m0dBkX95aZNXK0IdV/openapi.json
