# Instagram Profile, Posts & Reels Scraper (`apt_marble/instagram-profile-posts-reels-scraper`) Actor

Scrape public Instagram profiles, posts and reels — no cookies, nothing to configure. Get followers, bio and links, plus every post's likes, comments, plays, caption, hashtags and direct image/video URLs. Add top comments, filter by date or media type, or pull single posts and reels by URL.

- **URL**: https://apify.com/apt\_marble/instagram-profile-posts-reels-scraper.md
- **Developed by:** [Hamza](https://apify.com/apt_marble) (community)
- **Categories:** Social media, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 scraped records

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/platform/actors/running/actors-in-store#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.

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

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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 Profile, Posts & Reels Scraper

Turn any public Instagram handle into clean, structured data. Give it a list of
usernames and get back full profile stats plus every post with likes, comments,
plays, captions, hashtags, timestamps and direct media URLs — no login, no
cookies, no browser automation, nothing to configure.

Built on Instagram's own JSON endpoints rather than by parsing the page, so the
output is complete and typed instead of scraped-from-HTML guesswork.

---

### What it does

Point it at profiles, at individual post URLs, or both.

**Per profile, choose one of three modes:**

| Mode | What you get |
| --- | --- |
| **Profile details** | The profile record only — fast and cheap for bulk audits. |
| **Posts** *(default)* | The profile plus its timeline, paged back through history. |
| **Reels** | The profile plus its Reels tab, with play counts and audio attribution. |

**Also supported:**

- **Single posts and reels by URL** — paste any `/p/…` or `/reel/…` link.
- **Top comments per post** — comment text, author, likes, replies and timestamp.
- **Filters** — cap posts per profile, only posts newer than a date, and filter by
  media type (image / video / carousel / reel).

### What people use it for

- **Influencer vetting** — real follower counts, engagement rates and posting
  cadence before you pay a creator.
- **Competitor tracking** — what rivals post, how often, and what actually lands.
- **Campaign and UGC reporting** — pull the exact posts in a campaign and their
  performance.
- **Content research** — find the top-performing formats and hooks in a niche.
- **Audience sentiment** — read what commenters actually say under a post.
- **Media archiving** — direct image and video URLs for every post.

---

### What you get

Three record types land in one dataset, each tagged with a `type` field so you can
filter or split them. All examples below are real output, abridged.

**`type: "profile"`**

```json
{
  "type": "profile",
  "username": "nasa",
  "userId": "528817151",
  "fullName": "NASA",
  "profileUrl": "https://www.instagram.com/nasa/",
  "biography": "Making the seemingly impossible, possible. ✨",
  "externalUrl": "https://www.nasa.gov/",
  "bioLinks": [
    { "title": "Download the NASA App", "url": "https://www.nasa.gov/nasa-app/", "linkType": "external" },
    { "title": "Artemis III", "url": "https://www.nasa.gov/mission/artemis-iii/", "linkType": "external" }
  ],
  "followersCount": 104292683,
  "followingCount": 91,
  "postsCount": 4859,
  "reelsCount": 171,
  "highlightsCount": 5,
  "isVerified": true,
  "isPrivate": false,
  "isBusinessAccount": true,
  "businessCategoryName": "Government Agencies",
  "relatedProfiles": [{ "username": "cosmic.travelerr", "fullName": "CosmicTraveler", "isVerified": true }],
  "profilePicUrl": "https://instagram.f…fbcdn.net/v/t51.2885-19/29090066_…jpg"
}
````

**`type: "post"`**

```json
{
  "type": "post",
  "id": "3948507321457537241",
  "shortcode": "DbL6n0ggXDZ",
  "url": "https://www.instagram.com/reel/DbL6n0ggXDZ/",
  "ownerUsername": "nasa",
  "ownerFullName": "NASA",
  "ownerIsVerified": true,
  "caption": "Sound on!\n\nSonifications take images from across the universe and turn them into music…",
  "hashtags": ["NASA", "Space", "MusicLife"],
  "mentions": ["nasachandraxray"],
  "mediaType": "reel",
  "productType": "clips",
  "takenAt": "2026-07-24T18:46:42.000Z",
  "takenAtTimestamp": 1784918802,
  "likesCount": 429292,
  "commentsCount": 1947,
  "playsCount": 11371177,
  "videoDuration": 34.004,
  "countsHidden": false,
  "commentsDisabled": false,
  "isSponsored": false,
  "displayUrl": "https://instagram.f…fbcdn.net/v/t51.82787-15/753557824_…jpg",
  "imageUrls": ["…"],
  "videoUrls": ["…"],
  "width": 1080,
  "height": 1920,
  "source": "profile-feed",
  "commentsScraped": 0
}
```

**`type: "comment"`**

```json
{
  "type": "comment",
  "id": "17873383008553356",
  "postShortcode": "DbL6n0ggXDZ",
  "postUrl": "https://www.instagram.com/reel/DbL6n0ggXDZ/",
  "postOwnerUsername": "nasa",
  "text": "95% of the universe is stuff we still can't directly see or explain…",
  "createdAt": "2026-07-27T00:24:15.000Z",
  "likesCount": 0,
  "repliesCount": 0,
  "username": "3xsaintcom",
  "userIsVerified": false
}
```

***

### Input reference

| Field | Type | Default | What it does |
| --- | --- | --- | --- |
| **Instagram profiles** | list | `["nasa"]` | Usernames, `@handles` or profile URLs — all three forms work. |
| **What to get for each profile** | select | `posts` | `details`, `posts` or `reels`. |
| **Single post or reel URLs** | list | empty | Any `/p/…` or `/reel/…` link. Works with or without profiles. |
| **Save the profile record** | boolean | `true` | Turn off to get posts only. |
| **Max posts per profile** | integer | `30` | Your per-profile cap. |
| **Only posts newer than** | date | empty | Skip anything older. |
| **Post type** | select | `all` | `all`, `image`, `video`, `carousel` or `reel`. |
| **Also scrape top comments** | boolean | `false` | Adds comment records under each post. |
| **Max comments per post** | integer | `15` | Lowers the ceiling; see limits below. |
| **Parallel profiles** | integer | `3` | How many profiles to work on at once. |
| **Country** | string | `us` | Proxy country for the requests. |

Nothing is required — the defaults run out of the box.

***

### Pricing: pay per event

You are charged for two things, and they **add together**.

| Event | Fires |
| --- | --- |
| **Dataset item** | Once per record saved — every profile, every post, **and every comment**. |
| **`post-comments`** | Once per post whose comments were fetched as a **separate request** and came back with at least one comment. |

#### What that means in practice

Scraping one post with comments turned on and 10 comments returned costs:

- 1 dataset item for the post row
- 10 dataset items for the 10 comment rows
- 1 × `post-comments` for the enrichment

So `post-comments` is **on top of** the dataset items, not instead of them. It is
a per-post fee for the extra round-trip Instagram requires to read comments.

**You are not charged `post-comments` when:**

- Comments are off — the default. Then you only pay dataset items.
- The post came from a **single post URL**. That route returns the post and its
  comments in one response, so there is no extra request to bill.
- Instagram returned **no comments** for the post, or the comment request failed.
  The request still happened; you are billed only for comments you actually get.

**Rough guide:** a 30-post profile with the profile record and comments off is 31
dataset items. The same run with comments on and ~15 comments per post is about
481 dataset items plus 30 `post-comments`.

To keep costs predictable, leave comments off unless you need the text, and use
**Max posts per profile** as your budget dial.

***

### Limits — please read before buying

Everything here was measured against the live site, not assumed.

#### Private accounts

A private profile returns its real follower and post counts but zero posts. You
get the profile record and a warning. There is no logged-out way around this.

#### Rate limiting is the real ceiling

Instagram meters requests per IP *and per URL path*. In testing, roughly 35
requests to the post endpoint from one IP over 30 minutes triggered a
`401 "Please wait a few minutes"` that had not cleared 25 minutes later.

Single posts have their own fallback: if the full post route is unavailable, the
actor reads the public embed endpoint. That record is marked
`source: "oembed-partial"` and has the caption, author and thumbnail but **no**
likes, comments or timestamp.

**Practical advice:** prefer several smaller runs over one enormous one. Very deep
crawls across many profiles will be slower than the item count suggests.

#### Comments cap at ~15 per post

Instagram returns only the top ~13–15 comments to logged-out clients. The response
advertises a next-page cursor, but no logged-out query accepting it exists, so
deeper comment paging is **not available at any price**. `maxCommentsPerPost` can
lower that ceiling, never raise it. `commentsCount` on the post is the true total;
`commentsScraped` is how many were saved.

#### Other things worth knowing

- **Page size is fixed at 12.** Instagram ignores a `count` parameter, so 100
  posts is always at least 9 requests.
- **A post-type filter costs extra requests.** It is applied after each page, so
  asking for 30 reels from a photo-heavy account pages through hundreds of posts.
  Filtered runs get up to 60 extra pages, then stop — a very rare media type may
  return fewer rows than your cap.
- **Media URLs expire.** `imageUrls` and `videoUrls` are signed CDN links that need
  no auth but go stale within hours. Download at scrape time; don't store the URLs.
- **Play counts depend on route.** `playsCount` is present on timeline and Reels
  posts. Single posts fetched by URL come from an endpoint with no view count, so
  it is `null` there.
- **Hidden engagement stays null, not zero.** When a creator hides like counts,
  `likesCount` is `null` and `countsHidden` is `true` — so your averages aren't
  silently dragged down by fake zeros.
- **Some fields are route-specific.** `taggedUsers`, `accessibilityCaption` and
  `topics` are only present on posts fetched by URL, not from the timeline.
  `musicTitle` / `musicArtist` appear only when a reel uses licensed audio.

### FAQ

**Do I need an Instagram account, cookies or a session?**
No. Nothing to log in with, nothing to paste, nothing to configure.

**Can it scrape private accounts?**
No. You get the profile's public counts and no posts.

**Does it return video files?**
It returns direct video and image URLs. They expire within hours, so download at
scrape time.

**How do I keep profiles, posts and comments apart?**
Filter on the `type` field: `profile`, `post` or `comment`. Every comment also
carries `postShortcode` and `postUrl` so you can join it back to its post.

**Why did I get fewer posts than I asked for?**
Either the profile has fewer, your date or post-type filter excluded them, or a
rate limit stopped the walk part-way — in which case everything fetched before
the block is still saved, and the log says how many pages went through.

**Is scraping Instagram legal?**
This actor reads only public data that any logged-out visitor can see. You are
responsible for how you use it — in particular for GDPR/CCPA obligations when the
data includes personal information, and for Instagram's own terms. Do not use it
to build profiles of private individuals.

# Actor input Schema

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

Profiles to scrape. Enter a username (nasa), an @handle (@nasa) or a full profile URL (https://www.instagram.com/nasa/) — any mix works. Only public profiles can be scraped.

## `resultsType` (type: `string`):

Profile details only is one request per profile and the cheapest option. Profile + posts walks the whole timeline back in time. Profile + reels reads the Reels tab, which also carries play counts and audio attribution.

## `postUrls` (type: `array`):

Individual posts to scrape, independent of the profiles above. Accepts /p/, /reel/ and /tv/ URLs, or a bare shortcode. Each one is a single request that returns the post and its top comments together.

## `includeProfileRecord` (type: `boolean`):

Push one profile record per handle alongside the posts. Turn this off if you only want post rows in the dataset.

## `maxPostsPerProfile` (type: `integer`):

How many posts (or reels) to keep for each profile. Instagram serves 12 items per page, so this rounds up to whole pages. Combined with a post-type filter the scraper reads up to 60 extra pages looking for matches, so a filtered run costs more requests than the number of rows suggests. Ignored when "Profile details only" is selected.

## `onlyPostsNewerThan` (type: `string`):

Keep only posts published on or after this date. Accepts an absolute date (2026-01-31) or a relative window such as "3 months", "6 weeks" or "90 days". Leave blank for no date limit.

## `postType` (type: `string`):

Keep only one kind of post. "Videos" means standalone video posts; reels are counted separately because Instagram labels them differently.

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

Fetch the top comments for every post and save them as separate comment records linked to the post. Instagram serves roughly 15 comments per post to logged-out clients — deeper comment paging is not available. This costs one extra request per post and is billed as a separate event.

## `maxCommentsPerPost` (type: `integer`):

Upper bound on the comments saved for each post. Instagram itself returns about 15, so a higher number will not produce more.

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

How many profiles to work on at the same time. Instagram rate limits aggressively — raise this only if your runs are slow and you are not seeing rate-limit warnings.

## `proxyCountry` (type: `string`):

Two-letter country code used for the requests (for example us, gb, de). Instagram serves region-specific media hosts; results were verified from the United States.

## Actor input object example

```json
{
  "usernames": [
    "nasa"
  ],
  "resultsType": "posts",
  "postUrls": [],
  "includeProfileRecord": true,
  "maxPostsPerProfile": 30,
  "onlyPostsNewerThan": "",
  "postType": "all",
  "includeComments": false,
  "maxCommentsPerPost": 15,
  "maxConcurrency": 3,
  "proxyCountry": "us"
}
```

# Actor output Schema

## `dataset` (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": [
        "nasa"
    ],
    "resultsType": "posts",
    "maxPostsPerProfile": 30,
    "postType": "all",
    "maxCommentsPerPost": 15,
    "maxConcurrency": 3,
    "proxyCountry": "us"
};

// Run the Actor and wait for it to finish
const run = await client.actor("apt_marble/instagram-profile-posts-reels-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": ["nasa"],
    "resultsType": "posts",
    "maxPostsPerProfile": 30,
    "postType": "all",
    "maxCommentsPerPost": 15,
    "maxConcurrency": 3,
    "proxyCountry": "us",
}

# Run the Actor and wait for it to finish
run = client.actor("apt_marble/instagram-profile-posts-reels-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": [
    "nasa"
  ],
  "resultsType": "posts",
  "maxPostsPerProfile": 30,
  "postType": "all",
  "maxCommentsPerPost": 15,
  "maxConcurrency": 3,
  "proxyCountry": "us"
}' |
apify call apt_marble/instagram-profile-posts-reels-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Instagram Profile, Posts & Reels Scraper",
        "description": "Scrape public Instagram profiles, posts and reels — no cookies, nothing to configure. Get followers, bio and links, plus every post's likes, comments, plays, caption, hashtags and direct image/video URLs. Add top comments, filter by date or media type, or pull single posts and reels by URL.",
        "version": "0.0",
        "x-build-id": "pehgv9pIigxiP7lzi"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/apt_marble~instagram-profile-posts-reels-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-apt_marble-instagram-profile-posts-reels-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/apt_marble~instagram-profile-posts-reels-scraper/runs": {
            "post": {
                "operationId": "runs-sync-apt_marble-instagram-profile-posts-reels-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/apt_marble~instagram-profile-posts-reels-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-apt_marble-instagram-profile-posts-reels-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": "Instagram profiles",
                        "type": "array",
                        "description": "Profiles to scrape. Enter a username (nasa), an @handle (@nasa) or a full profile URL (https://www.instagram.com/nasa/) — any mix works. Only public profiles can be scraped.",
                        "default": [
                            "nasa"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "resultsType": {
                        "title": "What to get for each profile",
                        "enum": [
                            "details",
                            "posts",
                            "reels"
                        ],
                        "type": "string",
                        "description": "Profile details only is one request per profile and the cheapest option. Profile + posts walks the whole timeline back in time. Profile + reels reads the Reels tab, which also carries play counts and audio attribution.",
                        "default": "posts"
                    },
                    "postUrls": {
                        "title": "Single post or reel URLs",
                        "type": "array",
                        "description": "Individual posts to scrape, independent of the profiles above. Accepts /p/, /reel/ and /tv/ URLs, or a bare shortcode. Each one is a single request that returns the post and its top comments together.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeProfileRecord": {
                        "title": "Save the profile record",
                        "type": "boolean",
                        "description": "Push one profile record per handle alongside the posts. Turn this off if you only want post rows in the dataset.",
                        "default": true
                    },
                    "maxPostsPerProfile": {
                        "title": "Max posts per profile",
                        "minimum": 0,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "How many posts (or reels) to keep for each profile. Instagram serves 12 items per page, so this rounds up to whole pages. Combined with a post-type filter the scraper reads up to 60 extra pages looking for matches, so a filtered run costs more requests than the number of rows suggests. Ignored when \"Profile details only\" is selected.",
                        "default": 30
                    },
                    "onlyPostsNewerThan": {
                        "title": "Only posts newer than",
                        "type": "string",
                        "description": "Keep only posts published on or after this date. Accepts an absolute date (2026-01-31) or a relative window such as \"3 months\", \"6 weeks\" or \"90 days\". Leave blank for no date limit.",
                        "default": ""
                    },
                    "postType": {
                        "title": "Post type",
                        "enum": [
                            "all",
                            "image",
                            "video",
                            "carousel",
                            "reel"
                        ],
                        "type": "string",
                        "description": "Keep only one kind of post. \"Videos\" means standalone video posts; reels are counted separately because Instagram labels them differently.",
                        "default": "all"
                    },
                    "includeComments": {
                        "title": "Also scrape top comments",
                        "type": "boolean",
                        "description": "Fetch the top comments for every post and save them as separate comment records linked to the post. Instagram serves roughly 15 comments per post to logged-out clients — deeper comment paging is not available. This costs one extra request per post and is billed as a separate event.",
                        "default": false
                    },
                    "maxCommentsPerPost": {
                        "title": "Max comments per post",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Upper bound on the comments saved for each post. Instagram itself returns about 15, so a higher number will not produce more.",
                        "default": 15
                    },
                    "maxConcurrency": {
                        "title": "Parallel profiles",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "How many profiles to work on at the same time. Instagram rate limits aggressively — raise this only if your runs are slow and you are not seeing rate-limit warnings.",
                        "default": 3
                    },
                    "proxyCountry": {
                        "title": "Country",
                        "type": "string",
                        "description": "Two-letter country code used for the requests (for example us, gb, de). Instagram serves region-specific media hosts; results were verified from the United States.",
                        "default": "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
