# Instagram Reels Scraper (`piotrv1001/instagram-reels-scraper`) Actor

Scrape the reels of any public Instagram profile with views (play count), likes, comments, caption, hashtags, date, duration, video URL, thumbnail, music and pinned flag. Track Instagram reels views and analytics for many accounts or reel links at once. No login.

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

## Pricing

from $1.80 / 1,000 reels

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?

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 Reels Scraper: Reels Views, Likes and Analytics

Get **every reel of any public Instagram profile** with its views (play count), likes, comments, caption, hashtags, date, duration, video URL, thumbnail, music and pinned flag. The **Instagram Reels Scraper** works like an Instagram reels API without a key or login: paste usernames, get a table of reels with their view counts, and export it to JSON, CSV or Excel. Use it to check Instagram reels views in bulk, run reels analytics for creators and competitors, or collect reels for content research.

### 🎯 Use Cases

- **Instagram reels views checker**: see the view count of every reel on an account, newest first, without opening each one.
- **Reels analytics for creators and brands**: compare views, likes and comments per reel and find which formats, lengths and audio perform best.
- **Competitor tracking**: follow the reels of rival brands and see which ones take off.
- **Influencer vetting**: check real reel reach (views per reel versus followers) before you book a creator.
- **Hashtag and caption research**: every reel comes with its hashtags and mentions, ready to count and compare.
- **Trend and content datasets**: build reels datasets with captions, durations and audio for analysis or AI training.

### ✨ Features

- **Views, likes and comments**: the play count shown on the profile's reels tab, plus likes and comments, as plain numbers.
- **Full reel details**: caption, hashtags, mentions, post date, duration in seconds, width and height, video URL and thumbnail.
- **Music and audio**: track title and artist for licensed music, or the original audio's owner.
- **Pinned reels**: `isPinned` marks reels the creator pinned to the top of the reels tab.
- **Owner and collaborators**: username, full name, ID, verified badge, co-authors and tagged accounts.
- **Deep history**: page back through hundreds of reels per profile (we tested 720+ on @natgeo).
- **Single reels by link**: add reel URLs too; the view count is filled when the reel is among its profile's latest ~60 reels.
- **Fair billing**: profiles that don't exist and removed reels are listed in the status message and not charged.

### 🛠️ How It Works

1. **Enter profiles**: `natgeo`, `@natgeo` or `https://www.instagram.com/natgeo/`, one per line. Optionally add single reel links.
2. **Set "Max reels per profile"** (default 50).
3. **Run** and download the reels as JSON, CSV or Excel, or pull them through the API.

### ⚙️ Input

| Field | What it does |
| --- | --- |
| **Profiles** | Instagram usernames, @handles or profile links, one per line. You get each profile's reels, newest first. |
| **Max reels per profile** | Stop after this many reels for each profile (default 50). |
| **Reel URLs (optional)** | Links to single reels (`instagram.com/reel/…`), one per line. |

```json
{
    "usernames": ["natgeo", "https://www.instagram.com/mrbeast/"],
    "maxReelsPerProfile": 100
}
```

### 💰 Pricing

Pay only for the reels you get. No monthly rental.

| Event | Price | What you get |
| --- | --- | --- |
| **Reel** | $0.0018 per reel ($1.80 per 1,000) | One reel with views, likes, comments and all fields below |
| **Actor start** | $0.00005 per run | Charged once when the run starts. |

Examples: 100 reels = $0.18 · 1,000 reels = $1.80 · 10,000 reels = $18.00.

### 📊 Sample Output Data

```json
{
    "id": "4015859002104765753",
    "shortcode": "De7MnxIgl05",
    "url": "https://www.instagram.com/reel/De7MnxIgl05/",
    "playCount": 1808472,
    "likes": 76090,
    "comments": 195,
    "caption": "It's a battle of giants on the beaches of South Georgia, where male southern elephant seals clash fo…",
    "hashtags": [],
    "mentions": ["mywildlive"],
    "timestamp": 1792947768,
    "takenAt": "2026-10-25T17:02:48.000Z",
    "durationSeconds": 24.36,
    "videoUrl": "https://scontent-ord5-2.cdninstagram.com/o1/v/t2/f2/m86/AQOh78TQXjihORjo0SEHS0Jj…",
    "thumbnailUrl": "https://scontent-ord5-2.cdninstagram.com/v/t51.82787-15/867079764_1871193272801913…",
    "width": 1080,
    "height": 1920,
    "hasAudio": true,
    "music": { "title": "Original audio", "artist": "natgeo", "isOriginalAudio": true, "audioId": "28453009911047421" },
    "username": "natgeo",
    "userFullName": "National Geographic",
    "userId": "787132",
    "userIsVerified": true,
    "userProfilePicUrl": "https://scontent-ord5-2.cdninstagram.com/v/t51.82787-19/683576066_186536288230191…",
    "coauthors": [],
    "taggedUsers": [],
    "location": null,
    "isPinned": false,
    "isPaidPartnership": false,
    "likeAndViewCountsDisabled": false,
    "input": "natgeo",
    "scrapedAt": "2026-10-26T12:58:21.177Z"
}
```

`playCount` is the number of views Instagram shows for the reel. `input` is the profile (or reel link) the row came from; a collaboration reel pinned on that profile can belong to another owner, shown in `username`. Video and image links are signed by Instagram and expire after a few days, so download what you need soon after the run.

### 🔁 Schedule and Integrate

Run the same profiles **once a day** with Apify **Schedules** to build a history of views per reel and spot the reels that keep growing. Send the rows to **Google Sheets**, **Zapier**, **Make**, **n8n** or a webhook with Apify **integrations**.

### 🤖 Use with AI Agents (MCP)

This Actor works as a tool in Claude, ChatGPT, Cursor and other MCP clients through the Apify MCP server (`https://mcp.apify.com`). An agent can call it with:

```json
{ "usernames": ["natgeo"], "maxReelsPerProfile": 20 }
```

### ❓ FAQ

**How do I see the views on Instagram reels of another account?** Enter the account's username and run the Actor. Every reel comes back with `playCount`, the view count Instagram shows on the profile's reels tab, next to likes and comments.

**Is there an Instagram reels API?** Instagram's official API only covers your own business or creator accounts and needs a Meta developer app. This Actor needs no key or app and returns the public reels data anyone sees on instagram.com.

**Do I need an Instagram account or cookies?** No. The Actor works without logging in.

**Why is `playCount` empty for a reel I added by link?** Views are listed on the owner's reels tab. For a reel added by URL, the Actor looks through the owner's latest ~60 reels; an older reel keeps every other field but `playCount` is `null`. To get views for older reels, scrape the profile with a higher "Max reels per profile".

**Why are likes or views `null` on some reels?** The creator has hidden like and view counts on that reel (`likeAndViewCountsDisabled` is `true`).

**How many reels can I get per profile?** As many as the profile has. Each page holds 12 reels, and we tested more than 720 on one account.

**What about private profiles?** Their reels are not public, so they are listed in the status message and not charged.

### 🔗 Related Scrapers

- [Instagram Reels Search Scraper](https://apify.com/piotrv1001/instagram-reels-search-scraper): find trending reels by keyword.
- [Instagram Profile Posts Scraper](https://apify.com/piotrv1001/instagram-profile-posts-scraper): every post and reel of a profile.
- [Instagram Reel Transcript Scraper](https://apify.com/piotrv1001/instagram-reel-transcript-scraper): turn reels into text with timestamps.
- [Instagram Profile Scraper](https://apify.com/piotrv1001/instagram-profile-scraper): followers, bio and links of any profile.
- [Instagram Comments Scraper](https://apify.com/piotrv1001/instagram-comments-scraper): comments of any reel or post.

# Actor input Schema

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

Instagram usernames, @handles or profile links (instagram.com/name), one per line. You get each profile's reels, newest first.

## `maxReelsPerProfile` (type: `integer`):

Stop after this many reels for each profile.

## `reelUrls` (type: `array`):

Links to single reels (instagram.com/reel/…), one per line. The view count is filled when the reel is among the latest ~60 reels of its profile, otherwise it is empty.

## Actor input object example

```json
{
  "usernames": [
    "natgeo"
  ],
  "maxReelsPerProfile": 50,
  "reelUrls": [
    "https://www.instagram.com/reel/De7MnxIgl05/"
  ]
}
```

# Actor output Schema

## `results` (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": [
        "natgeo"
    ],
    "maxReelsPerProfile": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/instagram-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": ["natgeo"],
    "maxReelsPerProfile": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/instagram-reels-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 '{
  "usernames": [
    "natgeo"
  ],
  "maxReelsPerProfile": 50
}' |
apify call piotrv1001/instagram-reels-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,piotrv1001/instagram-reels-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/ze5AdCxFsDqAKCflP/builds/OyCbcAB3YlkFtPO9a/openapi.json
