# Instagram Reel Scraper (`moalshal93/instagram-reel-scraper`) Actor

Extract detailed data from Instagram Reels, including views, likes, comments, captions, hashtags, creator details, and media information. Supports profiles and individual Reels.

- **URL**: https://apify.com/moalshal93/instagram-reel-scraper.md
- **Developed by:** [Mohamed Elshal](https://apify.com/moalshal93) (community)
- **Stats:** 3 total users, 2 monthly users, 93.9% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

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

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Instagram Reel Scraper

Extract structured data from **public Instagram Reels** quickly and efficiently. Get Reel details, engagement metrics, captions, authors, media information, hashtags, mentions, and more in an easy-to-use dataset.

### What can Instagram Reel Scraper do?

Instagram Reel Scraper allows you to collect detailed information from Instagram Reels using **Reel URLs, usernames, profile URLs, or profile IDs**.

With this Actor, you can:

🎥 Extract **Reel details and engagement metrics**, including likes, comments, views, and timestamps

👤 Get **creator information**, including username, full name, profile URL, and profile ID

📝 Extract **captions, hashtags, mentions, and tagged users**

🎵 Collect **music and audio information** associated with each Reel

📊 Get **media details**, including video duration, dimensions, thumbnails, and media URLs

💬 Extract **comments and comment metadata** when available

🔗 Collect the original **Reel URL, shortcode, and Reel ID**

📦 Export results in **JSON, CSV, Excel, XML, or other Apify-supported formats**

⚡ Process multiple Reels or profiles in a single run

### What data can I get?

Each scraped Reel can contain information such as:

| Field | Description |
|---|---|
| Reel ID | Unique identifier of the Reel |
| Reel URL | URL of the Instagram Reel |
| Username | Reel owner's username |
| Full Name | Creator's display name |
| Caption | Reel caption |
| Likes | Number of likes |
| Comments | Number of comments |
| Views | Video view count when available |
| Shares | Share count when available |
| Posted At | Reel publication date and time |
| Hashtags | Hashtags used in the caption |
| Mentions | Mentioned Instagram accounts |
| Tagged Users | Accounts tagged in the Reel |
| Music | Music/audio information |
| Duration | Video duration |
| Dimensions | Video width and height |
| Thumbnail | Reel thumbnail URL |
| Video URL | Reel media URL when available |
| Comments | Available comments and metadata |

### How to use Instagram Reel Scraper

1. Open **Instagram Reel Scraper** in Apify.
2. Enter one or more **Instagram Reel URLs, usernames, profile URLs, or profile IDs**.
3. Configure the available scraping options.
4. Click **Start**.
5. Open the resulting dataset and export your data as JSON, CSV, Excel, XML, or another supported format.

### Use cases

Instagram Reel Scraper can be useful for:

- 📊 Social media research
- 👤 Creator and influencer research
- 📈 Content performance analysis
- 🔎 Competitor research
- 🏷️ Hashtag and content analysis
- 📋 Building structured datasets
- 🤖 Automated data pipelines
- 📅 Monitoring public Reel content

### API & Automation

Apify makes it easy to integrate the Actor into your own applications and workflows.

You can run it programmatically using the **Apify API, Python, Node.js, SDKs, webhooks, and scheduled runs**.

The resulting dataset can also be connected to other tools and automated workflows.

### Important

This Actor is designed to process **publicly available Instagram content**. Availability of individual fields may vary depending on the Reel and the information Instagram makes publicly accessible.

Start a run and get your Instagram Reel data in a structured format.

### How much will scraping Instagram Reels cost?

Instagram Reel Scraper uses a pay-per-event (PPE) pricing model.

The standard price is **$1.50 per 1,000 results** ($0.0015 per Reel). With the **$5 free credit**, you can scrape around **3,333 Reels for free**.

If you enable **Include comments**, an additional **$0.30 per 1,000 Reels** ($0.0003 per Reel) is charged for comment scraping.

For example:

- **1,000 Reels:** $1.50
- **1,000 Reels + comments:** $1.80
- **10,000 Reels:** $15.00
- **10,000 Reels + comments:** $18.00

Paid plans offer discounted rates and more monthly credit. Check the **Pricing** tab for the current plan-specific rates and discounts.

### ⬇️ Input

Enter an Instagram profile URL, username, Reel URL, or Reel shortcode. You can enter inputs individually or in bulk using the Bulk edit function.

### ⬆️ Output

The results appear in a dataset in the Storage tab. You can view them as a table, download in JSON, CSV, Excel, or XML, or use API endpoints.

Besides the table view, you can also view your data as JSON, as well as download it as CSV, XML, Excel file, or through an API

# Actor input Schema

## `inputs` (type: `array`):

Enter one or more Instagram profile URLs, usernames, Reel URLs, or bare Reel shortcodes. Add one input per line.

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

Maximum number of reels to fetch when scraping a profile. Ignored for single Reel inputs.

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

Whether to fetch and include the latest comments for each Reel.

## `excludePinned` (type: `boolean`):

Whether to exclude pinned Reels when scraping profiles.

## Actor input object example

```json
{
  "inputs": [
    "instagram"
  ],
  "resultsLimit": 10,
  "includeComments": false,
  "excludePinned": false
}
```

# Actor output Schema

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

One dataset item per scraped reel, including caption, video/audio URLs, engagement counts and (optionally) comments.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("moalshal93/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 = {}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call moalshal93/instagram-reel-scraper --silent --output-dataset

```

## MCP server setup

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

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/e4fmXfblddUHxcsIl/builds/xf2hQibDhBuHzv7AE/openapi.json
