# Instagram Reel Scraper - Reels, Plays, Likes & Video URLs (`zaver.api/instagram-reel-scraper`) Actor

Scrape Instagram Reels from any profile, hashtag or reel URL - caption, plays, likes, comments, author, timestamp and video/thumbnail links. No login, deep export. $0.99 per 1,000 reels. Export CSV, JSON, Excel.

- **URL**: https://apify.com/zaver.api/instagram-reel-scraper.md
- **Developed by:** [Zaver](https://apify.com/zaver.api) (community)
- **Categories:** Social media, Videos
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.99 / 1,000 reel scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

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

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

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

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

# README

## Instagram Reel Scraper — Views, Plays, Likes & Video URLs

**Scrape Instagram Reels with the metric that matters: view counts.** Point it at a
profile, a hashtag or a single reel URL and export plays, likes, comments, captions
and direct video URLs to CSV, Excel or JSON. No login, no API key.

Reels are where Instagram reach lives, and view counts are not in the API for anyone
else's content. This returns them for any public reel.

### What data does the Instagram Reel Scraper extract?

#### Reel performance fields

| Field | Description |
|---|---|
| `views` | Play count — the headline reel metric |
| `likes` | Like count at scrape time |
| `comments_count` | Number of comments |

#### Reel media fields

| Field | Description |
|---|---|
| `video_url` | Direct MP4 URL, ready to download |
| `thumbnail_url` | Cover image URL |
| `media_type` | Always `reel` in this Actor |
| `product_type` | `clips` — Instagram's internal reel marker |
| `caption` | Full caption, emoji preserved |
| `mentions` | Accounts tagged in the caption |
| `taken_at` | ISO publish timestamp |

#### Creator fields

| Field | Description |
|---|---|
| `username` | Reel author's handle |
| `user_id` | Numeric Instagram user ID |
| `user_full_name` | Display name |
| `is_verified` | Verified status |

Note that on collaboration reels the `username` is the **posting creator**, which may
differ from the profile you scraped — useful for spotting who a brand actually
partners with.

### Why use this Instagram reel scraper

#### View counts you cannot get from the official API

Instagram's Graph API returns insights only for accounts you own. This returns
`views` for any public reel, which is what makes competitive benchmarking possible.

#### Direct video URLs

Every row carries `video_url` — an MP4 link you can download immediately. No separate
downloader step.

#### Reels only, no filtering needed

Feed scrapers return photos and carousels you then have to filter out. This returns
reels exclusively, so `resultsLimit` is spent entirely on reels.

#### Incremental exports

`onlyPostsNewerThan` skips older reels, and skipped reels are not billed — so a daily
scheduled run costs only what is new.

### How to use it

1. Open the Actor in Apify Console.
2. Put usernames, profile URLs, hashtags or reel URLs into **directUrls**.
3. Set **resultsLimit** — reels per target, and your cost ceiling.
4. Optionally set **onlyPostsNewerThan**.
5. **Save & Start**, then download from **Storage**.

### Input example

```json
{
  "directUrls": ["nasa", "https://www.instagram.com/reel/DdEsW1ItqpI/"],
  "resultsLimit": 100,
  "onlyPostsNewerThan": "2026-09-01"
}
```

### Output example

```json
{
  "source": "nasa",
  "url": "https://www.instagram.com/p/DdEsW1ItqpI/",
  "shortcode": "DdEsW1ItqpI",
  "post_id": "3982503053431843400",
  "media_type": "reel",
  "product_type": "clips",
  "caption": "Curly-haired crew, this one's for you! 🌀🚀👩🏻‍🦱 Join me in my temporary home on the @iss…",
  "mentions": ["iss"],
  "views": 4295943,
  "likes": 102192,
  "comments_count": 1283,
  "taken_at": "2026-09-09T16:39:51+00:00",
  "username": "astro_jessica",
  "user_id": "4092263381",
  "user_full_name": "Jessica Meir",
  "is_verified": true,
  "video_url": "https://scontent…mp4"
}
```

### Pricing

**$0.00099 per reel scraped** — the same rate on every Apify plan, including the free
one.

| Reels exported | Cost |
|---|---|
| 1,000 | $0.99 |
| 10,000 | $9.90 |
| 100,000 | $99.00 |

Not billed: unreachable usernames, private profiles, and reels excluded by your date
filter.

### Use cases

#### Find the hooks that worked in your niche

Export a few hundred reels from a hashtag, sort by `views`, and read the first line of
every caption. That is your hook library, built from evidence.

#### Benchmark a creator's reels against their feed

Compare reel `views` with post `likes` from the
[Instagram Post Scraper](https://apify.com/zaver.api/instagram-post-scraper) to see
whether an account's reach comes from short form or static posts.

#### Influencer vetting on real reach

A media kit quotes follower count. Reel view counts show how many people actually see
a post — often an order of magnitude different.

#### Bulk reel download

`video_url` gives you the MP4 for every row, for archiving or offline review.

#### Track a campaign's reels daily

Schedule with `onlyPostsNewerThan` and watch view trajectories build over the first
72 hours, when reel distribution is decided.

### FAQ

**How do I get the view count of an Instagram Reel?**
Pass the reel URL, a username or a hashtag in `directUrls` and every row returns
`views` — Instagram's play count for that reel — alongside likes and comments.

**Can I scrape Instagram Reels without logging in?**
Yes. No Instagram account, cookie or API key is needed. You supply a profile,
hashtag or reel URL and nothing else.

**Can I download Instagram Reel videos with this scraper?**
Yes. Each row includes `video_url`, a direct MP4 link you can download. The Actor
returns the URL rather than the file, so you choose what to fetch.

**How much does it cost to scrape 10,000 Instagram Reels?**
$9.90 — a flat $0.00099 per reel on every plan, including the free tier. You pay only
for reels actually returned.

**Can I scrape Reels by hashtag?**
Yes. Pass a hashtag in `directUrls` and it returns reels carrying that tag, with the
same performance fields as profile reels.

**What is the difference between plays and views on Instagram Reels?**
Instagram reports a single public play count for reels, returned here as `views`. The
separate plays-versus-views distinction exists on Facebook video, not on reels.

**Why does the username differ from the profile I scraped?**
Collaboration reels are attributed to the posting creator. `username` is whoever
published the reel, which is the more useful signal when you are mapping brand
partnerships.

**Can I get only new Reels since my last export?**
Yes. Set `onlyPostsNewerThan` to your last run's date. Older reels are skipped and not
billed.

**Is it legal to scrape Instagram Reels?**
This Actor collects only publicly available data and never accesses private content.
Public data can still be personal data under GDPR and similar regulations, so collect
only what you have a legitimate reason to process. See Apify's guidance on the
legality of web scraping.

### Integrations

Connect to **Make, Zapier, n8n, Slack, Google Sheets, Google Drive, Airbyte** and
GitHub, or use webhooks on run completion. Official **Node.js** and **Python** SDKs
are available, and the Apify MCP server lets an AI agent call this Actor directly.

### Related Instagram scrapers

- [Instagram Scraper](https://apify.com/zaver.api/instagram-scraper) — all-in-one: posts, reels, comments, profiles, hashtags, places and search
- [Instagram Post Scraper](https://apify.com/zaver.api/instagram-post-scraper) — posts and carousels from profiles, hashtags or locations
- [Instagram Comments Scraper](https://apify.com/zaver.api/instagram-comment-scraper) — every comment on a post or reel
- [Instagram Reel Transcript Extractor](https://apify.com/zaver.api/instagram-reel-transcript-extractor) — speech-to-text and subtitles for reels
- [Instagram Profile Scraper](https://apify.com/zaver.api/instagram-profile-scraper) — bio, followers, email and category in bulk

***

Built and maintained by **Zaver**. For bugs, feature requests or custom data needs,
open an issue on this Actor.

# Actor input Schema

## `directUrls` (type: `array`):

What to scrape reels from, one per line: a username or profile URL (<code>nasa</code>), a hashtag (<code>#travel</code>), or a single reel URL (<code>https://www.instagram.com/reel/CODE/</code>).

## `hashtags` (type: `array`):

Hashtags to scrape reels from, one per line - bare names are fine (<code>travel</code>, <code>fitness</code>), no <code>#</code> needed. Use this field for tags; put profiles and URLs in the field above.

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

Max reels to export per profile or hashtag. Set high for a deep export; billed only per reel delivered.

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

ISO date (<code>2026-01-01</code>) or relative (<code>7 days</code>, <code>1 month</code>).

## Actor input object example

```json
{
  "directUrls": [
    "nasa"
  ],
  "resultsLimit": 50,
  "onlyPostsNewerThan": ""
}
```

# Actor output Schema

## `results` (type: `string`):

One dataset item per reel with caption, plays, likes, comments, author and links.

## `resultsCsv` (type: `string`):

The same records as a CSV download.

## `runSummary` (type: `string`):

Counts for the run: reels scraped, requests, errors.

# 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 = {
    "directUrls": [
        "nasa"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zaver.api/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 = { "directUrls": ["nasa"] }

# Run the Actor and wait for it to finish
run = client.actor("zaver.api/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 '{
  "directUrls": [
    "nasa"
  ]
}' |
apify call zaver.api/instagram-reel-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zaver.api/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/5YbimYsM8nsil3OYP/builds/eGAGtBL72frWccGsa/openapi.json
