# Instagram Account Reels Scraper (`xtracto/instagram-account-reels-scraper`) Actor

Scrape Reels from any public Instagram account: video URLs, caption, plays, likes, audio metadata.

- **URL**: https://apify.com/xtracto/instagram-account-reels-scraper.md
- **Developed by:** [Farhan Febrian Nauval](https://apify.com/xtracto) (community)
- **Categories:** Social media
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Account Reels Scraper

Scrape every Reel from a public Instagram account in bulk — video URLs, view counts, likes, comments, captions, audio, and posted-at timestamp — in clean structured JSON.

### Why use this actor

- **No account / no login required** — just give it an Instagram username or profile URL.
- **No API key needed** — Instagram has no public API for this; the actor returns the same vertical Reels feed the web app shows on a profile's Reels tab.
- **Direct video URLs in multiple resolutions** — every reel comes with downloadable MP4 URLs for the qualities Instagram serves, plus a poster image, so you can pull video files immediately.
- **View counts and engagement** — accurate `play_count` (Instagram view counter), `like_count`, and `comment_count` per reel.
- **Audio + caption metadata** — full caption text, hashtags, mentions, audio attribution, and video duration in seconds.
- **Bulk input** — pass a list of usernames in one run; results stream into your dataset with one row per reel.
- **Stable JSON output** — every row carries `_input`, `_source`, `_scrapedAt` envelope fields so you can join results back to your input list, plus `_userId` (the stable numeric Instagram user ID that does not change when a creator renames their handle).

### How it works

1. You provide a list of Instagram usernames (e.g. `mrbeast`) or full profile URLs.
2. The actor resolves each username to its numeric user ID, then pulls the Reels tab feed the same way Instagram's web app does, walking the paginated cursor until it reaches your `maxReels` limit (or the end of the account).
3. Results stream into your dataset, ready to download as JSON, CSV, or Excel.

You do not need to manage scrapers, browsers, or rotating IPs — all handled internally.

### Input

```json
{
  "usernames": [
    "mrbeast",
    "khaby.lame"
  ],
  "maxReels": 12,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["DATACENTER"]
  }
}
````

| Field | Type | Description |
|---|---|---|
| `usernames` | array | Instagram usernames or full profile URLs whose Reels tab you want to scrape. Both `mrbeast` and `https://www.instagram.com/mrbeast/` are accepted. |
| `maxReels` | integer | Maximum number of reels per account. Default `12`. Set to `0` to fetch every reel on the account (large channels can have thousands). |
| `proxyConfiguration` | object | Apify Proxy settings. Datacenter proxy works for most accounts; switch to residential for very large jobs. |

### Output

Sample command: `python test_local.py mrbeast --max 3`

```json
{
  "_input": "mrbeast",
  "_userId": "2278169415",
  "_source": "S1-primary",
  "_scrapedAt": "2026-05-18T10:54:08.610256+00:00",
  "id": "3466556599773603825_2278169415",
  "pk": "3466556599773603825",
  "code": "DAbrtxjSqfx",
  "fbid": "18339051271120588",
  "media_type": 2,
  "taken_at": 1727465883,
  "video_duration": 16.647,
  "original_width": 1080,
  "original_height": 1920,
  "has_audio": true,
  "play_count": 183626669,
  "ig_play_count": 171174980,
  "fb_play_count": 12451689,
  "like_count": 6086367,
  "comment_count": 67785,
  "caption": {
    "text": "Go watch video on YouTube of 100 twins competing!",
    "created_at_utc": 1727541691,
    "user_id": "2278169415"
  },
  "user": {
    "pk": "2278169415",
    "username": "mrbeast",
    "full_name": "MrBeast",
    "is_verified": true,
    "is_private": false,
    "profile_pic_url": "https://instagram.fcgk52-1.fna.fbcdn.net/v/t51.2885-19/31077884_..._n.jpg"
  },
  "video_versions": [
    {
      "width": 720,
      "height": 1280,
      "bandwidth": 2078036,
      "url": "https://instagram.fcgk52-1.fna.fbcdn.net/o1/v/t2/f2/m367/AQPA8Oko1IGGXNa9...mp4"
    },
    "... 2 more"
  ],
  "image_versions2": {
    "candidates": [
      {
        "width": 452,
        "height": 800,
        "url": "https://instagram.fcgk52-1.fna.fbcdn.net/v/t51.71878-15/505456263_..._n.jpg"
      },
      "... 9 more"
    ]
  },
  "usertags": {
    "in": [
      { "user": { "username": "vorostwins", "full_name": "Chris and Patrick Voros", "is_verified": true } }
    ]
  }
}
```

| Field | Type | Description |
|---|---|---|
| `_input` | string | The username or URL exactly as you supplied it. Use to join results back to your input list. |
| `_userId` | string | Stable numeric Instagram user ID for the account. Survives username changes — the most reliable creator identifier. |
| `_source` | string | Internal tag for the path used to fetch the record. `S1-primary` means the fastest, richest path; values starting with `S2-` indicate a fallback was used. |
| `_scrapedAt` | string | ISO-8601 UTC timestamp when the record was scraped. |
| `id` | string | Composite reel ID (`{pk}_{userId}`). |
| `pk` | string | Numeric reel ID on its own. |
| `code` | string | Short code from the public reel URL: `https://www.instagram.com/reel/{code}/`. |
| `fbid` | string | Meta-wide post ID (shared with Facebook). |
| `media_type` | integer | `2` = single video. Reels are always video. |
| `taken_at` | integer | Unix timestamp (seconds) when the reel was posted. |
| `video_duration` | number | Length of the reel in seconds. |
| `original_width` / `original_height` | integer | Native video resolution. Reels are vertical (height > width). |
| `has_audio` | boolean | `true` if the reel has an audio track. |
| `play_count` | integer | Total view count Instagram displays on the reel. |
| `ig_play_count` | integer | Views attributed to Instagram only (excludes Facebook). |
| `fb_play_count` | integer | Views attributed to Facebook crossposting. |
| `like_count` | integer | Likes on the reel. |
| `comment_count` | integer | Comments on the reel. |
| `caption.text` | string | Full caption text including emoji, hashtags, and @mentions. |
| `caption.created_at_utc` | integer | Unix timestamp when the caption was set. |
| `user` | object | Author profile snapshot: `pk`, `username`, `full_name`, `is_verified`, `is_private`, `profile_pic_url`. |
| `video_versions` | array | Direct MP4 URLs the player would use, one entry per quality (typically 2-9 versions with different `bandwidth`/`width`/`height`). URLs are signed and expire — download promptly. |
| `image_versions2.candidates` | array | Poster / cover image in multiple sizes. Same signed-URL expiry note applies. |
| `usertags.in` | array | Other accounts tagged in the reel (collaborators, mentions). |
| `clips_metadata` | object | Audio attribution block — populated when the reel uses a tracked song (`music_info`) or an attributed original sound (`original_sound_info`). `null` on both means the audio is untracked. |

#### Error envelope

Accounts that fail to load (private, deactivated, blocked) return a structured error instead of crashing the run:

```json
{
  "_input": "this-account-does-not-exist-xyz",
  "_source": "S1-primary",
  "_error": "profile_failed",
  "_errorDetail": "HTTP 404 for web_profile_info",
  "_scrapedAt": "2026-05-18T10:54:09.001234+00:00"
}
```

Filter on `_error` to triage failed rows. Possible values: `profile_failed`, `no_user_id`, `fetch_failed`.

### Pricing

This actor is billed per result: **$6.00 per 1,000 reels**. Each reel returned = 1 result. Error rows are not billed.

### Other Sosmed Actors

| Platform | Actor | Best for |
|---|---|---|
| Instagram | [Instagram Account Scraper](https://apify.com/xtracto/instagram-account-scraper) | Profile bio, follower count, post count for a handle |
| Instagram | [Instagram Account Posts Scraper](https://apify.com/xtracto/instagram-account-posts-scraper) | Main feed posts (photos + carousels + videos) for an account |
| Instagram | [Instagram Post Detail Scraper](https://apify.com/xtracto/instagram-post-detail-scraper) | Full detail for a single reel or post by shortcode |
| YouTube | [YouTube Shorts Scraper](https://apify.com/xtracto/youtube-shorts-scraper) | Vertical short-form video feed from a YouTube channel |
| Threads | [Threads Account Threads Scraper](https://apify.com/xtracto/threads-account-threads-scraper) | Recent threads (including video) from a Threads handle |
| Twitch | [Twitch Clips Scraper](https://apify.com/xtracto/twitch-clips) | Short-form video clips from a Twitch channel |
| Pinterest | [Pinterest Board Scraper](https://apify.com/xtracto/pinterest-board) | Video pins and image pins from a board |
| Bluesky | [Bluesky Account Posts Scraper](https://apify.com/xtracto/bluesky-account-posts-scraper) | Recent posts (with attached video) from a Bluesky handle |

Browse the full catalog at [apify.com/xtracto](https://apify.com/xtracto).

### Notes

- The Reels tab is **separate** from an account's main feed (grid). A reel posted to both surfaces will appear in this actor's output and in [Instagram Account Posts Scraper](https://apify.com/xtracto/instagram-account-posts-scraper). Reel-only posts (the most common case for short-form creators) appear only here.
- `play_count` is the integer view count Instagram displays on the reel. It updates continuously and may lag the live counter by a few minutes for very fresh posts.
- Video URLs (`video_versions[].url`) and cover image URLs are signed by Instagram's CDN and expire within hours — if you want the actual MP4 files, download them promptly after each run rather than storing URLs long-term.
- Private accounts return zero reels with no error — there is nothing to fetch.
- For jobs above ~30 accounts in one run, switch `proxyConfiguration` from `DATACENTER` to `RESIDENTIAL` to avoid per-IP rate limits.
- `_userId` (the numeric user ID) is the most stable creator identifier — if a creator changes their username later, you can still match reels back to the same person using this field.

# Actor input Schema

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

Instagram usernames or full profile URLs whose Reels tab you want to scrape. Both `mrbeast` and `https://www.instagram.com/mrbeast/` are accepted.

## `maxReels` (type: `integer`):

Maximum number of reels returned per account. Set to 0 to fetch every reel on the account (large channels can have thousands).

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

Apify Proxy settings. Datacenter proxy works for most accounts; switch to residential for very large jobs.

## Actor input object example

```json
{
  "usernames": [
    "cristiano",
    "mrbeast"
  ],
  "maxReels": 12,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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": [
        "cristiano",
        "mrbeast"
    ],
    "maxReels": 12
};

// Run the Actor and wait for it to finish
const run = await client.actor("xtracto/instagram-account-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": [
        "cristiano",
        "mrbeast",
    ],
    "maxReels": 12,
}

# Run the Actor and wait for it to finish
run = client.actor("xtracto/instagram-account-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": [
    "cristiano",
    "mrbeast"
  ],
  "maxReels": 12
}' |
apify call xtracto/instagram-account-reels-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Instagram Account Reels Scraper",
        "description": "Scrape Reels from any public Instagram account: video URLs, caption, plays, likes, audio metadata.",
        "version": "1.0",
        "x-build-id": "AJdLK41ocYTLpXdz9"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/xtracto~instagram-account-reels-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-xtracto-instagram-account-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/xtracto~instagram-account-reels-scraper/runs": {
            "post": {
                "operationId": "runs-sync-xtracto-instagram-account-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/xtracto~instagram-account-reels-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-xtracto-instagram-account-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",
                "required": [
                    "usernames"
                ],
                "properties": {
                    "usernames": {
                        "title": "Instagram usernames",
                        "type": "array",
                        "description": "Instagram usernames or full profile URLs whose Reels tab you want to scrape. Both `mrbeast` and `https://www.instagram.com/mrbeast/` are accepted.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxReels": {
                        "title": "Max reels per account",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of reels returned per account. Set to 0 to fetch every reel on the account (large channels can have thousands).",
                        "default": 12
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify Proxy settings. Datacenter proxy works for most accounts; switch to residential for very large jobs.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
