# Instagram Reel Scraper (`sovanza.inc/instagram-reel-scraper`) Actor

Instagram Reels Scraper extracts structured data from Instagram profiles and reel/post URLs, including captions, engagement metrics, video/media URLs, owner details, comments, hashtags, mentions, and timestamps for social media analytics, campaign tracking, and monitoring workflows.

- **URL**: https://apify.com/sovanza.inc/instagram-reel-scraper.md
- **Developed by:** [Sovanza](https://apify.com/sovanza.inc) (community)
- **Categories:** Social media, Lead generation, Automation
- **Stats:** 9 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $2.60 / 1,000 reels

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Reels Scraper – Extract Videos, Comments, Music, Tags, Profiles & Engagement Data

Extract complete Instagram Reels data including video details, engagement metrics, comments (latest), music information, tagged users, and creator profile fields (when available). This actor is designed for marketers, analysts, and agencies who need deep, structured insights for **trend analysis**, **competitor tracking**, and **influencer research**.

### Overview

This Instagram Reels Scraper extracts structured Reel-level data from Instagram using **profile inputs** (usernames / profile URLs / numeric profile IDs) or **direct reel URLs** (`/reel/...` or `/p/...`). It goes beyond basic scraping by combining page data, network payloads, and GraphQL enrichment when possible.

**Output is compact:** empty or missing fields are omitted so each row contains only what Instagram exposed for that reel.

### Key benefits

- Analyze Reel performance with **views, likes, comments, shares** (when available)  
- Build influencer/competitor datasets with **creator identity + profile picture URL** (best-effort)  
- Understand context via **caption, hashtags, mentions, music, tags, location** (when present)  
- Use latest comments for sentiment and engagement snapshots (optional)  
- Export clean datasets in **JSON, CSV, or Excel** via Apify  

### Core features

- Scrape Reels from **profiles** or **direct Reel URLs**  
- Extract **engagement metrics**: `viewsCount`, `likesCount`, `commentsCount`, `sharesCount`, `videoPlayCount` (availability varies)  
- Capture **caption**, parsed **hashtags** and **mentions**  
- Extract **music/audio info** (`musicInfo`) when available  
- Extract **tagged users** (`taggedUsers`) and **coauthors** (`coauthorProducers`) when present  
- Extract **video dimensions** (`dimensionsWidth`, `dimensionsHeight`) and **duration** (`videoDuration`) when available  
- Optional **latest comments** (`includeComments`) and optional **transcript** (`includeTranscript`)  
- Optional delegation to the **official Apify actor** (`useOfficialApifyActor`) with fallback to built-in Playwright flow  
- Proxy + cookies support for reliability (Instagram is anti-bot heavy)  

### How to Use Instagram Reels Scraper on Apify

#### Using the Actor

1. **Open the Actor** on the Apify platform and go to the **Input** tab.  
2. **Configure input** (see below): add `usernames` (profiles and/or reel URLs), set `resultsLimit` for profiles, and enable proxy + cookies if Instagram blocks you.  
3. **Start** the run. The Actor visits reels, merges page/network/GraphQL data where possible, and **pushes compact items** to the default dataset.  
4. **Open the Dataset** tab to browse, download JSON/CSV/Excel, or pull data via the Apify API.  
5. **Schedule or integrate** (optional): use schedules, webhooks, Zapier/Make, or your own code against the Apify API.  

#### Input Configuration

Full schema: `INPUT_SCHEMA.json`. Example:

```json
{
  "usernames": [
    "https://www.instagram.com/nasa/",
    "https://www.instagram.com/reel/SHORTCODE/"
  ],
  "resultsLimit": 25,
  "downloadVideo": false,
  "includeComments": true,
  "includeTranscript": false,
  "skipPreflightAuthCheck": false,
  "useOfficialApifyActor": false,
  "cookiesJson": "",
  "cookiesFile": "",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "US"
  }
}
````

- **`usernames`** (required): Array of Instagram usernames, profile URLs, numeric profile IDs, or direct reel/post URLs.
- **`resultsLimit`** (optional): Max reels to collect **per profile** (default `25`, max `500`). **Ignored** when every entry is already a reel/post URL.
- **`downloadVideo`** (optional): If `true`, sets `downloadedVideoUrl` to the resolved video URL when available (same URL as `videoUrl` is still stored only once after compaction).
- **`includeComments`** (optional): Include latest comments per reel (default `true`). When `false`, comment data is not added to items.
- **`includeTranscript`** (optional): Attempt to capture on-page transcript when present (default `false`).
- **`skipPreflightAuthCheck`** (optional): Skip the quick session check before scraping (default `false`).
- **`useOfficialApifyActor`** (optional): If `true`, call **apify/instagram-reel-scraper** through the Apify API when **`APIFY_TOKEN`** is available; if the call fails, returns no items, or the token is missing, the Actor **falls back** to the built-in Playwright flow.
- **`cookiesJson`** (optional): String — JSON array of Playwright cookies, or `{ "cookies": [ ... ] }`. Helps with logged-in sessions.
- **`cookiesFile`** (optional): Path to a cookies file inside the Actor, or a key-value store key whose value is that JSON.
- **`proxyConfiguration`** (optional): Apify proxy; **residential** is recommended for Instagram.

##### Environment variables (optional)

| Variable | Purpose |
|----------|---------|
| `APIFY_TOKEN` | Required for `useOfficialApifyActor` delegation to the official Instagram Reel Scraper. |
| `USE_OFFICIAL_INSTAGRAM_ACTOR` | Set to `1` / `true` / `yes` / `on` to enable official-Actor mode if the input flag is not set. |
| `IG_POST_LOAD_SLEEP` | Seconds to wait after load for media/CDN capture (default ~`1.7`, clamped). Lower = faster, higher = slightly safer. |
| `IG_EXTRACT_DOM_WAIT` | Extra DOM wait before extraction (default ~`1.2`, clamped). |
| `MIN_RAW_DATA_SCORE` | Minimum richness score before accepting embedded JSON as a valid reel (default `4`). |
| `PLAYWRIGHT_HEADLESS` | Set to `0` / `false` / `no` / `off` for headed Chromium (debugging locally). |

##### Run locally

`INPUT.json` is gitignored. Copy `INPUT.example.json` to `INPUT.json`, add cookies if needed, set `APIFY_TOKEN` (or proxy password) for Apify proxy from your machine, then:

```bash
cd instagram-reels-scraper
pip install -r requirements.txt
playwright install chromium
cp INPUT.example.json INPUT.json
python main.py
```

### Output

Results are stored in the Actor’s **default dataset**. Each item is a **compact** JSON object: fields that are empty or unknown are **not** included.

Typical fields (when data is available):

- **Identity & links:** `id`, `shortCode`, `reelUrl`, `inputUrl`, `videoUrl`, `downloadedVideoUrl` (only if different from `videoUrl` after logic above).
- **Creator & profile:** `ownerUsername`, `ownerFullName`, `ownerId`, `ownerProfilePicUrl`.
- **Video-level data:** `caption`, `hashtags`, `mentions`, `type`, `productType`, `videoDuration`, `dimensionsHeight`, `dimensionsWidth`, `displayUrl`, `images`, `alt`.
- **Engagement:** `likesCount`, `commentsCount`, `sharesCount`, `viewsCount`, `videoPlayCount`.
- **Music/audio:** `musicInfo` (when available).
- **Tags & collaborators:** `taggedUsers`, `coauthorProducers`.
- **Location:** `location` (when present) and `isCommentsDisabled`.
- **Ads:** `isAd` (best-effort).
- **Comments:** `latestComments` (when enabled and non-empty).
- **Transcript:** `transcript` (when enabled and found).
- **Meta:** `timestamp`.
- **Errors:** `error` (and sometimes `inputUrl` / `reelUrl`) on failure rows; summary rows may use `inputUrl: "__summary__"`.

Example item (illustrative — real items only include keys that have values):

```json
{
  "id": "1234567890_987654321",
  "shortCode": "AbCdEfGhIjK",
  "ownerUsername": "examplecreator",
  "ownerFullName": "Example Creator",
  "caption": "Reel caption text",
  "reelUrl": "https://www.instagram.com/reel/AbCdEfGhIjK/",
  "videoUrl": "https://scontent.cdninstagram.com/.../video.mp4",
  "displayUrl": "https://scontent.cdninstagram.com/.../image.jpg",
  "images": ["https://scontent.cdninstagram.com/.../image.jpg"],
  "likesCount": 1200,
  "commentsCount": 45,
  "viewsCount": 50000,
  "videoPlayCount": 50000,
  "videoDuration": 12.4,
  "dimensionsWidth": 1080,
  "dimensionsHeight": 1920,
  "timestamp": "2025-01-01T12:00:00.000Z",
  "type": "Video",
  "productType": "clips",
  "inputUrl": "https://www.instagram.com/reel/AbCdEfGhIjK/"
}
```

➡️ Output is structured for pipelines, warehouses, or spreadsheet export via Apify.

### Use Cases

- **Influencer marketing:** identify high-performing creators using engagement signals + creator metadata.
- **Trend analysis:** track what captions, hashtags, and audio/musics appear alongside high engagement.
- **Competitor intelligence:** monitor competitor profiles and compare posting frequency + performance.
- **Audience research:** use latest comments (optional) for sentiment snapshots and interaction analysis.

### Integrations & API

- Run and fetch results through the **Apify API**
- Use **Python**, **Node.js**, or HTTP clients against run and dataset endpoints
- Connect **Zapier**, **Make**, **Google Sheets**, and other Apify integrations
- **Webhooks** and **schedules** for recurring runs

### Why Choose This Actor?

- Output shape compatible with the **official Instagram Reel Scraper** expectations
- **Playwright** + network capture + GraphQL enrichment where the page allows
- **Optional** handoff to the **official Apify Actor** when you want their infrastructure to do the heavy lifting
- **Compact JSON** — no noise from empty fields
- Built for **Apify** datasets, exports, and API access

### FAQ

#### How does Instagram Reels Scraper work?

It opens Instagram in a headless browser (unless you disable headless locally), captures JSON from network responses and embedded data, enriches with an in-page GraphQL shortcode request when possible, and merges DOM fallbacks (e.g. OG tags, video element metadata, view counts from `aria-label` when available).

#### Can I scrape multiple profiles or reels in one run?

Yes. Put multiple entries in `usernames`. Profiles are expanded into many reel URLs up to `resultsLimit` each; direct reel URLs are scraped as-is.

#### Do I need an Instagram API?

No. This Actor uses the public web app (and optionally the official Apify Instagram Reel Scraper API product). You must comply with Instagram’s terms and applicable laws.

#### Why am I seeing login walls or low data quality?

Instagram rate-limits and challenges automated traffic. Use **fresh cookies** from a stable session, **residential proxy** in a region consistent with the account, and moderate `resultsLimit`. The preflight step stops early with a clear dataset error if the session looks logged out or blocked.

#### What is `useOfficialApifyActor`?

When enabled and `APIFY_TOKEN` is set, the Actor tries to fetch items from **apify/instagram-reel-scraper** first. If that returns nothing or errors, it continues with the built-in browser scraper.

#### Can I speed up runs?

Slightly lower `IG_POST_LOAD_SLEEP` and `IG_EXTRACT_DOM_WAIT` (see table above). Very aggressive values may increase failures or incomplete video URLs.

#### Is scraping Instagram legal?

Only you can ensure compliance. Use public data responsibly, respect Instagram’s Terms of Service, robots guidance, and local law.

#### What formats can I download?

**JSON**, **CSV**, and **Excel** from the Apify dataset UI, plus full access via the **Apify API**.

### SEO Keywords

instagram reels scraper\
instagram reel scraper apify\
instagram scraper\
reel data extractor\
instagram profile reels\
scrape instagram reels\
instagram video url scraper\
apify instagram\
social media scraper\
reel metadata api

### Actor permissions

This Actor is intended to work with **limited permissions**: it reads your input and writes to its **default dataset** (and uses Apify proxy/KV as configured). It does not require broad access to unrelated account data.

**To set limited permissions in Apify Console:**

1. Open your Actor on the Apify platform.
2. Go to **Source** or **Settings**.
3. Open **Review permissions** / **Permissions**.
4. Choose **Limited permissions** and save.

### Limitations

- Instagram’s HTML and internal APIs change; the scraper may need updates.
- Some fields (e.g. shares, transcripts, or exact view counts) may be missing depending on reel type, locale, and session.
- Heavy use may require higher Apify memory, concurrency, and proxy budgets.
- Logged-out or challenged sessions yield errors or empty runs — cookies + residential proxy are strongly recommended for production.

### License

This project is licensed under the MIT License - see the LICENSE file for details.

### Get Started

Add your Instagram profiles or reel URLs, turn on a residential proxy, paste cookies if needed, and start your first run on Apify. 🚀

# Actor input Schema

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

Enter Instagram usernames, profile URLs (e.g. https://www.instagram.com/nasa/), profile IDs, or direct reel URLs (e.g. https://www.instagram.com/reel/ABC123/).

## `resultsLimit` (type: `integer`):

Maximum number of reels to scrape per user/profile. Ignored when input is direct reel URLs.

## `downloadVideo` (type: `boolean`):

If true, attempt to store video file URL or key for each reel (when available).

## `includeComments` (type: `boolean`):

If true, include the latest comments for each reel.

## `includeTranscript` (type: `boolean`):

If true, include transcript for each reel when available.

## `skipPreflightAuthCheck` (type: `boolean`):

If true, skips the fast Instagram authentication check before scraping. Default false.

## `useOfficialApifyActor` (type: `boolean`):

If true, runs apify/instagram-reel-scraper via API (requires APIFY\_TOKEN) and skips the built-in Playwright flow when data is returned. Fallback: Playwright when token missing, call fails, or dataset is empty.

## `cookiesJson` (type: `string`):

Optional Playwright cookie array JSON. Use to bypass login walls or stricter rate limits. Example: \[{"name":"sessionid","value":"...","domain":".instagram.com","path":"/"}]

## `cookiesFile` (type: `string`):

Optional cookies source. Either a local file path inside the actor (e.g. cookies.json) OR an Apify key-value store key whose value is the cookies JSON.

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

Apify proxy settings. Residential proxy is recommended for Instagram.

## Actor input object example

```json
{
  "usernames": [
    "instagram",
    "nasa"
  ],
  "resultsLimit": 25,
  "downloadVideo": false,
  "includeComments": true,
  "includeTranscript": false,
  "skipPreflightAuthCheck": false,
  "useOfficialApifyActor": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `reels` (type: `string`):

Scraped Instagram reels and posts in the default dataset.

# 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",
        "nasa"
    ],
    "cookiesJson": "",
    "cookiesFile": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("sovanza.inc/instagram-reel-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 = {
    "usernames": [
        "instagram",
        "nasa",
    ],
    "cookiesJson": "",
    "cookiesFile": "",
}

# Run the Actor and wait for it to finish
run = client.actor("sovanza.inc/instagram-reel-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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",
    "nasa"
  ],
  "cookiesJson": "",
  "cookiesFile": ""
}' |
apify call sovanza.inc/instagram-reel-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=sovanza.inc/instagram-reel-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Instagram Reel Scraper",
        "description": "Instagram Reels Scraper extracts structured data from Instagram profiles and reel/post URLs, including captions, engagement metrics, video/media URLs, owner details, comments, hashtags, mentions, and timestamps for social media analytics, campaign tracking, and monitoring workflows.",
        "version": "0.0",
        "x-build-id": "W08xVsu1qp319edRF"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sovanza.inc~instagram-reel-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sovanza.inc-instagram-reel-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/sovanza.inc~instagram-reel-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sovanza.inc-instagram-reel-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/sovanza.inc~instagram-reel-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sovanza.inc-instagram-reel-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "usernames": {
                        "title": "Usernames, profile URLs, profile IDs, or reel URLs",
                        "type": "array",
                        "description": "Enter Instagram usernames, profile URLs (e.g. https://www.instagram.com/nasa/), profile IDs, or direct reel URLs (e.g. https://www.instagram.com/reel/ABC123/).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "resultsLimit": {
                        "title": "Max reels per profile",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of reels to scrape per user/profile. Ignored when input is direct reel URLs.",
                        "default": 25
                    },
                    "downloadVideo": {
                        "title": "Download video",
                        "type": "boolean",
                        "description": "If true, attempt to store video file URL or key for each reel (when available).",
                        "default": false
                    },
                    "includeComments": {
                        "title": "Include latest comments",
                        "type": "boolean",
                        "description": "If true, include the latest comments for each reel.",
                        "default": true
                    },
                    "includeTranscript": {
                        "title": "Include transcript",
                        "type": "boolean",
                        "description": "If true, include transcript for each reel when available.",
                        "default": false
                    },
                    "skipPreflightAuthCheck": {
                        "title": "Skip preflight auth check",
                        "type": "boolean",
                        "description": "If true, skips the fast Instagram authentication check before scraping. Default false.",
                        "default": false
                    },
                    "useOfficialApifyActor": {
                        "title": "Use official Apify Instagram Reel Scraper",
                        "type": "boolean",
                        "description": "If true, runs apify/instagram-reel-scraper via API (requires APIFY_TOKEN) and skips the built-in Playwright flow when data is returned. Fallback: Playwright when token missing, call fails, or dataset is empty.",
                        "default": false
                    },
                    "cookiesJson": {
                        "title": "Cookies JSON (optional)",
                        "type": "string",
                        "description": "Optional Playwright cookie array JSON. Use to bypass login walls or stricter rate limits. Example: [{\"name\":\"sessionid\",\"value\":\"...\",\"domain\":\".instagram.com\",\"path\":\"/\"}]"
                    },
                    "cookiesFile": {
                        "title": "Cookies file / KV key (optional)",
                        "type": "string",
                        "description": "Optional cookies source. Either a local file path inside the actor (e.g. cookies.json) OR an Apify key-value store key whose value is the cookies JSON."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify proxy settings. Residential proxy is recommended for Instagram.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "US"
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
