# Instagram Posts Scraper Lowcost (0.3$/1K 🤑) (`sones/instagram-posts-scraper-lowcost`) Actor

Cost-optimized Instagram scraper for public profiles. Extract posts, captions, engagement metrics, coauthors, and media without authentication. HTTP-only (no browser), 10x cheaper than alternatives. Supports batch scraping with residential proxies and smart rate limiting.

- **URL**: https://apify.com/sones/instagram-posts-scraper-lowcost.md
- **Developed by:** [Samy](https://apify.com/sones) (community)
- **Categories:** Social media, Developer tools, Other
- **Stats:** 6,023 total users, 749 monthly users, 94.1% runs succeeded, 25 bookmarks
- **User rating**: 4.83 out of 5 stars

## Pricing

from $0.30 / 1,000 posts

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Instagram Posts Scraper (Low-Cost)

⚡ **Ultra-fast and cost-efficient** Instagram scraper for extracting posts from public profiles. **No Instagram account or browser required** - pure HTTP API access.

> **Recently Updated (v1.5):** Profile lookup and pagination use one efficient username feed route, inputs accept usernames and profile URLs, profile starts are globally staggered, and concurrency is configurable with reliability-first defaults.

### What does Instagram Posts Scraper do?

Instagram Posts Scraper extracts comprehensive post data from public Instagram profiles using Instagram's native mobile APIs. It retrieves images, videos, carousels, captions, engagement metrics, tagged users, and complete user information - all without requiring any Instagram authentication.

**Why choose this scraper?**

- ⚡ **Lightning fast** - Powered by Bun runtime (3x faster than Node.js)
- 💰 **Ultra cost-efficient** - 512MB memory vs 4-8GB for browser scrapers
- 🔐 **No session needed** - Works without Instagram login or cookies
- 📊 **Complete data extraction** - Posts, carousels, tagged users, co-authors, engagement metrics
- 🔄 **Automatic pagination** - Fetch 1-500 posts per profile with smart pagination
- 🆕 **Incremental cutoff** - Stop paginating once fetched pages are older than your `newerThan` boundary
- 🛡️ **Smart rate limiting** - Adaptive delays and exponential backoff to avoid blocks
- 🌐 **Apify Proxy** - Automatic proxy selection with session pooling
- 💾 **State persistence** - Resume scraping after interruptions or migrations

### Why scrape Instagram posts?

Instagram post data extraction unlocks powerful business use cases:

#### 📈 Marketing & Analytics

- **Competitor analysis** - Track what content performs best for rival brands
- **Content strategy** - Identify winning post types, captions, and hashtags
- **Engagement benchmarking** - Compare your performance against industry standards
- **Trend forecasting** - Spot emerging visual trends before competitors

#### 🤝 Influencer Marketing

- **Influencer research** - Discover creators with authentic engagement for partnerships
- **Campaign tracking** - Monitor branded content and collaboration performance
- **Audience insights** - Analyze what resonates with target demographics

#### 🎯 Business Intelligence

- **Brand monitoring** - Track mentions, tags, and brand sentiment
- **Lead generation** - Find potential customers engaging with relevant content
- **Market research** - Analyze visual trends and consumer preferences in your industry
- **UGC collection** - Gather user-generated content for marketing campaigns

### How to scrape Instagram profiles

1. **[Create a free Apify account](https://console.apify.com/sign-up)**
2. **Open the Actor** in [Apify Console](https://console.apify.com/actors)
3. **Add Instagram profiles** - Enter usernames, @usernames, or full Instagram profile URLs
4. **Configure settings** - Set how many posts to fetch per profile
5. **Click "Start"** and wait for the scraper to finish
6. **Download your data** - Export as JSON, CSV, Excel, or HTML

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

This scraper is **engineered for maximum cost efficiency** using HTTP-only requests instead of browser automation.

#### 💰 Pricing factors

- **Number of profiles** you scrape
- **Posts per profile** you extract (each ~12 posts = 1 API request)
- **Proxy configuration** and transferred data
- **Apify plan** tier

#### ⚡ Cost advantages over alternatives

| Feature                 | This Actor | Browser-based Scrapers |
| ----------------------- | ---------- | ---------------------- |
| Memory footprint        | 512MB      | 4-8GB                  |
| CPU usage               | Minimal    | High (rendering)       |
| Proxy efficiency        | Excellent  | Poor (TLS handshakes)  |
| Requests per run        | Optimized  | 10x more (assets)      |
| **Cost per 1000 posts** | **~$0.10** | **~$2-5**              |

#### 🎁 Free tier

With the **Apify Free plan**, you get monthly compute credits to scrape thousands of Instagram posts at no cost. Perfect for testing and small-scale projects.

**Estimated free tier capacity**: ~5,000-10,000 posts/month depending on configuration.

#### Owner-managed proxy policy

If you publish this Actor and provide your own external proxy, free users still stay on Apify Proxy, while paying users start on your external proxy and fall back to Apify if the external path keeps failing:

- `EXTERNAL_PROXY_URL`: External proxy used for paying users. Store it as an Apify secret; never save credentials as plain text.
- `FREE_USER_APIFY_PROXY_GROUPS=RESIDENTIAL`: Optional comma-separated override for free-tier users. Residential is the default, with automatic datacenter fallback when residential access is unavailable.
- `FREE_USER_APIFY_PROXY_COUNTRY=US`: Optional country override for the free-tier Apify proxy branch
- `FALLBACK_APIFY_PROXY_GROUPS=RESIDENTIAL`: Optional comma-separated override for the paying-user fallback
- `DECODO_FAILOVER_TO_APIFY=1`: Enables failover from the external proxy to Apify
- `DECODO_FAILOVER_MIN_REQUESTS=3`: Minimum completed primary requests before failover is evaluated. Higher values are capped at `3` so small runs can still recover.
- `DECODO_FAILOVER_FAILURE_RATE=0.25`: Primary request failure-rate threshold. Values above `0.30` are capped for reliability.
- `DECODO_FAILOVER_WEBHOOK_URL=https://<your-worker>.workers.dev/?token=<token>`: Optional webhook called once when the proxy switches to Apify
- `RUN_TELEMETRY_WEBHOOK_URL=https://<your-worker>.workers.dev/telemetry/run`: Optional run-end telemetry endpoint
- `RUN_TELEMETRY_TOKEN=<token>`: Required bearer token when run telemetry is enabled

The Actor detects free vs paying users from `APIFY_USER_IS_PAYING` at runtime. Free-tier runs use Apify Proxy. Paying-tier runs start on the external proxy and switch all affected requests to Apify once the configured failure threshold is reached.

### Input

```json
{
    "usernames": ["natgeo", "@nike", "https://www.instagram.com/cristiano/"],
    "postsPerProfile": 24,
    "newerThan": "2026-01-01T00:00:00Z",
    "proxy": {
        "useApifyProxy": true
    },
    "delayBetweenProfiles": 250,
    "delayBetweenRequests": 500,
    "maxRetries": 3,
    "maxConcurrentProfiles": 10
}
```

#### Input parameters

| Field                   | Type    | Required | Description                                                                                                                                                          |
| ----------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `usernames`             | Array   | **Yes**  | Instagram usernames, @usernames, or profile URLs. Example: `["natgeo", "@nike", "https://www.instagram.com/cristiano/"]`                                             |
| `postsPerProfile`       | Integer | No       | Exact maximum number of posts exported per profile (1-500). The Actor stops as soon as this limit is reached. Default: `24`                                          |
| `newerThan`             | String  | No       | Incremental pagination cutoff. Accepts ISO date/time, `YYYY-MM-DD`, Unix seconds, or Unix milliseconds. This is a pagination boundary, not a strict per-post filter. |
| `proxy`                 | Object  | No       | Apify Proxy configuration. Residential is preferred, with automatic fallback when unavailable.                                                                       |
| `delayBetweenProfiles`  | Integer | No       | Minimum global delay in milliseconds between profile starts. Default: `250`                                                                                          |
| `delayBetweenRequests`  | Integer | No       | Delay in milliseconds between pagination requests. Default: `500`                                                                                                    |
| `maxRetries`            | Integer | No       | Maximum retry attempts for failed requests. Default: `3`                                                                                                             |
| `maxConcurrentProfiles` | Integer | No       | Maximum profiles scraped concurrently (1-50). Default: `10`                                                                                                          |

Invalid profile entries and duplicates are skipped without stopping valid profiles in the same batch.

Each run also writes a `RUN_SUMMARY` record with profile counts, failure reasons, request metrics, HTTP status counts, retry counts, and proxy failover statistics. This makes degraded runs diagnosable directly from the run's default key-value store.

When run telemetry is enabled, Discord receives a compact run summary plus per-profile diagnostics (including Instagram usernames, failure phase, page, attempts, and stable error codes). The complete sanitized telemetry payload is attached as JSON so large runs are not truncated by Discord's embed limits. Proxy credentials, bearer tokens, and common secret query parameters are redacted from retained diagnostic messages.

Profile inputs are normalized to Instagram usernames before scraping. Profile URLs can include a trailing slash, query parameters, or a fragment. URLs for posts, Reels, Stories, and other non-profile pages are rejected.

#### Incremental scraping behavior

- `newerThan` is a pagination cutoff, not a strict dataset filter.
- Posts from the boundary page can include items older than the cutoff.
- `postsPerProfile` is a hard cap. If only part of the final fetched page is needed, the Actor exports only the remaining number of posts.

**Note:** Check the [Input tab](https://console.apify.com/actors/~/input-schema) for the complete list of input fields with descriptions.

### Output

The scraper saves all extracted data to the **Apify dataset** in structured JSON format. Each post includes:

#### Post data extracted

- **Identifiers**: `pk`, `id`, `code` (shortcode for URL)
- **Media files**: `media_type`, `image_versions2`, `video_versions`, `original_width`, `original_height`
- **Video data**: `video_duration`, `view_count`, `play_count`
- **Content**: `caption.text`, `caption.pk`
- **Engagement**: `like_count`, `comment_count`
- **Metadata**: `taken_at` (timestamp), `product_type`, `location`
- **Author info**: `user.pk`, `user.username`, `user.full_name`, `user.is_verified`, `user.profile_pic_url`
- **Carousel posts**: `carousel_media[]` (for multi-image/video posts with individual media items)
- **Tagged users**: `usertags.in[]` (tagged users with X/Y positions)
- **Collaborations**: `coauthor_producers[]`, `invited_coauthor_producers[]`
- **Scraper metadata**: `scraped_username`, `scraped_at`, `post_url`
- **Incremental metadata**: `newer_than_cutoff`, `newer_than_cutoff_iso`, `is_newer_than_cutoff`

#### Output example

```json
{
    "pk": "3284567890123456789",
    "id": "3284567890123456789",
    "code": "C5xYzAbCdEf",
    "taken_at": 1704067200,
    "media_type": 1,
    "product_type": "feed",
    "caption": {
        "pk": "18012345678901234",
        "text": "Exploring the beauty of nature 🌲 #wildlife #photography"
    },
    "like_count": 45892,
    "comment_count": 1247,
    "user": {
        "pk": "25025320",
        "username": "natgeo",
        "full_name": "National Geographic",
        "is_verified": true,
        "profile_pic_url": "https://scontent.cdninstagram.com/..."
    },
    "image_versions2": {
        "candidates": [
            {
                "width": 1080,
                "height": 1350,
                "url": "https://scontent.cdninstagram.com/..."
            }
        ]
    },
    "scraped_username": "natgeo",
    "scraped_at": 1704067200,
    "post_url": "https://www.instagram.com/p/C5xYzAbCdEf/",
    "newer_than_cutoff": 1767225600,
    "newer_than_cutoff_iso": "2026-01-01T00:00:00.000Z",
    "is_newer_than_cutoff": true
}
```

#### Export formats

Download your data in multiple formats:

- **JSON** - Structured data for APIs and databases
- **CSV** - For Excel and data analysis tools
- **Excel** - Ready-to-use spreadsheets
- **HTML** - Human-readable tables
- **XML** - Legacy system integration

### Is it legal to scrape Instagram?

**Yes, when done ethically.** This scraper only accesses **publicly available data** that Instagram exposes for SEO, link previews, and website embeds. It does not:

- ❌ Extract private user data (emails, phone numbers, private posts)
- ❌ Bypass login walls or authentication
- ❌ Access content from private accounts
- ❌ Store personal data unnecessarily

**However, you should:**

- ✅ Review Instagram's Terms of Service
- ✅ Respect rate limits and implement delays
- ✅ Comply with GDPR if scraping EU users
- ✅ Have a legitimate purpose for data collection
- ✅ Not use data for spam, harassment, or unauthorized contact

Our scrapers are ethical and only extract what users have chosen to share publicly. If you're unsure about your use case, consult legal counsel.

**Learn more:** [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/) (Apify Blog)

### Using Instagram Posts Scraper with the Apify API

The Apify API gives you programmatic access to the Apify platform. Run any Actor, manage runs, access datasets, and more from your applications.

**Run the Actor via API:**

```bash
curl -X POST https://api.apify.com/v2/acts/YOUR_USERNAME~instagram-posts-scraper-lowcost/runs \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "usernames": ["natgeo", "https://www.instagram.com/nike/"],
    "postsPerProfile": 24,
    "newerThan": "2026-01-01T00:00:00Z"
  }'
```

**Fetch results:**

```bash
curl https://api.apify.com/v2/datasets/YOUR_DATASET_ID/items \
  -H "Authorization: Bearer YOUR_API_TOKEN"
```

#### Client libraries

- **Node.js**: [`apify-client`](https://www.npmjs.com/package/apify-client) NPM package
- **Python**: [`apify-client`](https://pypi.org/project/apify-client/) PyPI package

**Example (Node.js):**

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

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });

const run = await client.actor('YOUR_USERNAME/instagram-posts-scraper-lowcost').call({
    usernames: ['natgeo', 'https://www.instagram.com/nike/'],
    postsPerProfile: 24,
    newerThan: '2026-01-01T00:00:00Z',
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

**Resources:**

- [Apify API Reference](https://docs.apify.com/api/v2)
- [API Client Documentation](https://docs.apify.com/api/client)

### Integrations

Connect Instagram Posts Scraper to your favorite tools:

- **[Make (Integromat)](https://www.make.com/en/integrations/apify)** - No-code automation workflows
- **[Zapier](https://zapier.com/apps/apify/integrations)** - Connect to 5,000+ apps
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** - Get notified when runs finish
- **[Slack](https://apify.com/apify/slack-integration)** - Send scraped data to Slack channels
- **[Google Sheets](https://apify.com/lukaskrivka/google-sheets)** - Export directly to spreadsheets
- **[Airbyte](https://airbyte.com/connectors/apify)** - Data pipeline integration
- **[Keboola](https://www.keboola.com/integrations/apify)** - ETL and data warehousing

**Learn more:** [Apify Integrations Documentation](https://docs.apify.com/platform/integrations)

### Advanced configuration

#### Proxy settings

The default and tested configuration uses **Apify automatic proxy selection**:

```json
{
    "proxy": {
        "useApifyProxy": true
    }
}
```

**Datacenter proxies** (cheaper but higher block rate):

```json
{
    "proxy": {
        "apifyProxyGroups": ["SHADER"]
    }
}
```

**Custom proxies:**

```json
{
    "proxy": {
        "useApifyProxy": false,
        "proxyUrls": ["http://proxy1.com:8080/", "http://proxy2.com:8080/"]
    }
}
```

#### Rate limiting

Adjust delays to balance speed vs reliability:

```json
{
    "delayBetweenProfiles": 500,
    "delayBetweenRequests": 750,
    "maxRetries": 4,
    "maxConcurrentProfiles": 5
}
```

- **Lower delays** = Faster scraping, higher block risk
- **Higher delays** = Slower but more reliable

#### Concurrency

Profile concurrency defaults to `10` and can be adjusted from `1` to `50`. Keep it between `5` and `10` for reliability-sensitive Instagram workloads.

### FAQ

#### Does this scraper require an Instagram account?

**No.** This scraper accesses Instagram's public APIs that don't require authentication. It works without any Instagram login or session cookies.

#### Can I scrape private accounts?

**No.** Private Instagram profiles are not accessible without authentication. The scraper will return an error for private accounts.

#### How many posts can I scrape per profile?

You can scrape **1-500 posts per profile**. Instagram's API pagination has practical limits beyond this range.

#### What if I get rate limited?

Increase the request delays or lower `maxConcurrentProfiles`. Residential proxies are preferred for Instagram; automatic datacenter mode is used only when the preferred group is unavailable.

#### Can I scrape Stories or Highlights?

**No.** Stories and Highlights require authentication. This scraper only accesses public feed posts.

#### How do I scrape comments?

This Actor focuses on **posts only**. For comment scraping, check out other Apify Instagram scrapers with comment extraction features.

#### What data format is supported?

Data is saved to Apify **datasets** and can be exported as:

- JSON (for APIs)
- CSV (for Excel/analysis)
- Excel (.xlsx)
- HTML (readable tables)
- XML (legacy systems)

#### Can I schedule recurring scraping?

**Yes!** Use [Apify Schedules](https://docs.apify.com/platform/schedules) to run the scraper automatically (hourly, daily, weekly, etc.).

#### The scraper failed. What do I do?

1. Check the **log** for error messages
2. Verify usernames or profile URLs are correct and profiles are **public**
3. Increase delays if you see rate limit errors
4. Keep **Apify automatic proxy selection** enabled unless you have tested another proxy configuration
5. If the issue persists, open an [Issue](https://github.com/YOUR_USERNAME/apify-actor-instagram/issues) on GitHub

### You might also like

- **[Instagram Profile Scraper](https://apify.com/apify/instagram-profile-scraper)** - Official Apify Instagram scraper with more features
- **[Instagram Hashtag Scraper](https://apify.com/apify/instagram-hashtag-scraper)** - Scrape posts by hashtag
- **[Twitter Scraper](https://apify.com/apify/twitter-scraper)** - Extract tweets and profiles
- **[TikTok Scraper](https://apify.com/clockworks/tiktok-scraper)** - Scrape TikTok videos and profiles
- **[YouTube Scraper](https://apify.com/bernardo/youtube-scraper)** - Extract YouTube video data

***

**Need help?** Contact [Apify Support](https://apify.com/contact) or check the [Apify Documentation](https://docs.apify.com).

# Actor input Schema

## `usernames` (type: `array`):

List of Instagram usernames, @usernames, or profile URLs. Example: natgeo, @nike, https://www.instagram.com/instagram/

## `postsPerProfile` (type: `integer`):

Maximum number of posts to export per profile. The Actor stops as soon as this exact limit is reached.

## `newerThan` (type: `string`):

Pagination cutoff for incremental scraping. Accepts ISO date/time, YYYY-MM-DD, or Unix timestamp. The Actor stops once a fetched page has no posts newer than this cutoff. This is not a strict per-post filter.

## `proxy` (type: `object`):

Apify proxy configuration to avoid blocking

## `delayBetweenProfiles` (type: `integer`):

Minimum global delay between starting profiles. This prevents request bursts across concurrent workers.

## `delayBetweenRequests` (type: `integer`):

Delay between pagination requests for the same profile

## `maxRetries` (type: `integer`):

Number of retry attempts on request failure

## `maxConcurrentProfiles` (type: `integer`):

Maximum number of profiles scraped concurrently. Lower values are slower but reduce Instagram blocking.

## Actor input object example

```json
{
  "usernames": [
    "natgeo",
    "@nike",
    "https://www.instagram.com/cristiano/"
  ],
  "postsPerProfile": 24,
  "newerThan": "2026-01-01T00:00:00Z",
  "proxy": {
    "useApifyProxy": true
  },
  "delayBetweenProfiles": 250,
  "delayBetweenRequests": 500,
  "maxRetries": 3,
  "maxConcurrentProfiles": 10
}
```

# Actor output Schema

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

No description

## `runSummary` (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 = {
    "usernames": [
        "instagram"
    ],
    "proxy": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("sones/instagram-posts-scraper-lowcost").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 = {
    "usernames": ["instagram"],
    "proxy": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("sones/instagram-posts-scraper-lowcost").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 '{
  "usernames": [
    "instagram"
  ],
  "proxy": {
    "useApifyProxy": true
  }
}' |
apify call sones/instagram-posts-scraper-lowcost --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sones/instagram-posts-scraper-lowcost"
        }
    }
}

```

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/Y5mzw9TLFReI0d6gQ/builds/vjYY7dyBXP2zIzvW8/openapi.json
