# Instagram Reels Scraper 🎬 Fast, Cheap, No Login (`scrapesmith/instagram-reels-scraper`) Actor

🔥$0.45/1000 results🔥Scrape Instagram Reels from any public profile. Get video URLs, play counts, likes, comments, captions, hashtags, audio tracks, tagged users and more 40+ fields per reel. No login, no cookies, no proxy. Export to JSON, CSV or Excel, or plug straight into an AI agent via MCP.

- **URL**: https://apify.com/scrapesmith/instagram-reels-scraper.md
- **Developed by:** [Scrape Smith](https://apify.com/scrapesmith) (community)
- **Categories:** Social media, Videos, Automation
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.45 / 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/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.

- **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 Reels Scraper — Export Any Public Profile's Reels to JSON, CSV or Excel

**Scrape Instagram Reels from any public account in seconds.** Paste a username, get a clean spreadsheet of every reel — video URL, play count, likes, comments, caption, hashtags, audio track, tagged users, collaborators and 40+ more fields.

No login. No cookies. No proxy configuration. No browser extension. Just usernames in, structured data out. 🚀

***

### ⚡ Why creators, agencies and analysts use this

Instagram gives you a grid of videos and nothing else. No export button, no numbers you can sort, no way to compare one account against another. If you want to know *which* reels actually worked — for you or for anyone else — you are stuck scrolling and screenshotting.

This Instagram Reels Scraper turns any public profile into a sortable dataset. Every reel becomes a row. Every metric becomes a column. Sort by plays, filter by date, chart engagement over time, feed it to a model. Done in the time it takes to read this paragraph.

#### 🏆 What makes it different

| | This scraper |
|---|---|
| 💸 **Price** | A fraction of what comparable Instagram reel scrapers charge per 1,000 results |
| ⚡ **Speed** | Thousands of reels per minute, streamed to your dataset as they arrive |
| 🔓 **Login** | Never required. You never hand over an account, password or cookie |
| 🧾 **Fields** | 43 per reel — every field the market leader returns, plus 10 they don't (collaborators, location, pinned status, verified badge) |
| 🤖 **AI-ready** | Works as an MCP tool, an OpenAI function, or a LangChain / CrewAI tool |
| 📦 **Output** | JSON, CSV, Excel, XML, HTML table — one click or one API call |
| 🧹 **Data quality** | No padded nulls, no invented columns. If Instagram doesn't publish it, we don't fake it |

***

### 🎯 Who this is for

**📈 Social media managers** — Benchmark your reels against every competitor in your category. Find out what length, what posting time and what audio actually correlate with reach.

**🕵️ Competitor researchers** — Track a rival's entire reel output on a schedule. Spot their new campaign the day it launches, not the month after.

**🤝 Influencer marketing teams** — Vet creators before you pay them. Real play counts, real comment volume, real posting cadence — and paid-partnership flags so you can see who is already sponsored.

**🎵 Music and audio marketers** — See which reels use which tracks, whether the audio is original or licensed, and how many other reels use the same sound.

**🧠 AI & data teams** — Build training sets, run multimodal experiments, or wire live Instagram reel data into an agent with MCP.

**📰 Journalists and researchers** — Archive public reel output with timestamps, captions and engagement figures for reporting and analysis.

**🎬 Content editors** — Pull direct video and audio URLs into your own download and editing pipeline.

***

### 🚀 How to use the Instagram Reels Scraper

It takes about thirty seconds.

1. **Add accounts.** Type `nike`, `@nike` or paste `https://www.instagram.com/nike/`. All three work. Add as many as you want.
2. **Set how many reels per account.** 100 for a quick look, or set it high to pull an entire back catalogue.
3. *(Optional)* **Filter by date.** Type `3 months`, `30 days` or an exact date like `2026-01-31`.
4. *(Optional)* **Skip pinned reels** if you want a clean chronological feed.
5. **Click Start.** Watch rows appear live, then export.

That's the whole thing. No tokens to paste, no accounts to connect, no settings to tune.

***

### 📊 What you get — every field explained

#### 🎥 The reel

| Field | What it is |
|---|---|
| `id` | Instagram's unique reel ID |
| `shortCode` | The short code from the reel's link |
| `url` | Direct link to the reel |
| `type` | Media type |
| `productType` | Format Instagram classifies it as |
| `caption` | Full caption text |
| `hashtags` | Every hashtag, pulled out as a clean list |
| `mentions` | Every @mention in the caption |
| `timestamp` | When it was posted (ISO 8601, UTC) |
| `inputUrl` | The exact input you supplied, so rows always trace back |
| `scrapedAt` | When this row was collected |

#### 📈 Performance

| Field | What it is |
|---|---|
| `videoPlayCount` | How many times the reel was played |
| `videoViewCount` | View count as Instagram reports it |
| `likesCount` | Likes |
| `commentsCount` | Comments |
| `firstComment` | Present for schema compatibility; use the Instagram Comments Scraper for comment text |
| `latestComments` | Present for schema compatibility; use the Instagram Comments Scraper for full comment threads |

#### 🎞️ Media & audio

| Field | What it is |
|---|---|
| `videoUrl` | Direct video link, highest quality available |
| `displayUrl` | Cover thumbnail |
| `images` | Every available thumbnail size |
| `audioUrl` | Direct audio link where the creator allows it |
| `videoDuration` | Length in seconds |
| `dimensionsWidth` / `dimensionsHeight` | Original resolution |
| `hasAudio` | Whether the reel has sound |
| `videoQualityCount` | How many quality variants exist |

#### 🎵 Music

| Field | What it is |
|---|---|
| `musicInfo.song_name` | Track title |
| `musicInfo.artist_name` | Artist |
| `musicInfo.uses_original_audio` | Whether the creator made the audio |
| `musicInfo.audio_id` | Stable audio identifier for grouping reels by sound |
| `musicInfo.should_mute_audio` | Whether Instagram mutes the audio |
| `musicInfo.should_mute_audio_reason` | Why, when it does |
| `musicInfo.audioType` | Original sound or licensed music |
| `musicInfo.reelsUsingThisAudio` | How many reels use this audio |
| `musicInfo.isExplicit` | Explicit flag |

#### 👤 The account

| Field | What it is |
|---|---|
| `ownerUsername` | Handle |
| `ownerFullName` | Display name |
| `ownerId` | Numeric account ID |
| `ownerIsVerified` | Blue check |
| `ownerIsPrivate` | Private account flag |
| `ownerProfilePicUrl` | Profile picture |

#### 🤝 People & places

| Field | What it is |
|---|---|
| `taggedUsers` | Everyone tagged, with handle, name, verified status and picture |
| `coauthors` | Collaborators on joint reels — the field most scrapers drop |
| `sponsors` | Declared brand partners on sponsored reels |
| `locationName` / `locationId` | Tagged location |

#### 🏷️ Flags

| Field | What it is |
|---|---|
| `isPinned` | Pinned to the top of the reels tab |
| `paidPartnership` | Declared paid partnership |
| `isCommentsDisabled` | Comments turned off |
| `alt` | Accessibility caption, when Instagram supplies one |
| `childPosts` | Always empty for reels; present so post-scraper pipelines drop in unchanged |

***

### 🤖 Instagram Reels data for AI agents

This actor is built to be called by software, not just by people.

**🔌 MCP (Model Context Protocol)** — Expose it as a tool to Claude, Cursor, or any MCP-capable client and let the model pull live Instagram reel data mid-conversation. Ask *"which of Nike's last 50 reels got the most plays, and what audio did they use?"* and get a real answer from real data.

**🧩 Function calling** — Drop it into OpenAI function calling, LangChain, LlamaIndex, CrewAI or AutoGen as a single tool. Input is one small JSON object; output is a clean array your model can reason over without cleanup.

**🔗 API & webhooks** — Start runs over the REST API, poll or subscribe, and receive a webhook the moment a run finishes. Integrate with Make, Zapier, n8n or your own backend.

**⏰ Scheduling** — Run it nightly on a competitor set and build a time series of reel performance without touching anything.

**📥 Straight to storage** — Push results into Google Sheets, Airtable, S3, BigQuery or a database through Apify integrations.

Because the output shape is stable and every field is either real or empty — never invented — you can build on it without defensive parsing.

***

### 💡 What people build with it

- 🥇 **Competitor reel leaderboards** — every rival's top reels ranked by plays, refreshed weekly
- 🎼 **Trending audio reports** — group reels by `audioId` to see which sounds are climbing
- 📅 **Posting-cadence analysis** — correlate publishing time and frequency with reach
- 🧲 **Hook studies** — pull captions and durations of top performers to find the pattern
- 🕵️ **Influencer due diligence** — verify a creator's real numbers before signing
- 🗂️ **Content archives** — keep a dated record of a brand's public reel output
- 🎬 **Media pipelines** — feed `videoUrl` and `audioUrl` into your own processing stack
- 🤖 **Agent memory** — give an AI assistant live awareness of what a brand is publishing

***

### ❓ Frequently asked questions

**Do I need an Instagram account or login?**
No. You never provide an account, password, cookie or token. Nothing is connected to your profile.

**Is scraping Instagram Reels legal?**
This actor collects only public data — reels that anyone can view without logging in. Public data collection is broadly lawful in the US and EU, but how you *use* the data still matters, especially for personal data under GDPR/CCPA. Use it for analysis and research, and take your own legal advice for your specific case.

**Can it scrape private accounts?**
No, and it never will. Private accounts are skipped and clearly reported in the run log.

**How many reels can I get from one account?**
As many as the account has published. Set the per-account limit high and it will page through the entire back catalogue.

**How fast is it?**
Thousands of reels per minute in practice. Results stream into your dataset while the run is still going, so you can start working before it finishes.

**What if an account has no reels?**
It's reported as empty in the summary and costs you nothing. Every account you enter is accounted for in the final tally.

**Can I get reels by hashtag or by audio instead of by account?**
This actor works profile-by-profile. For hashtags, keyword search, comments, followers or posts, see the other Instagram actors in our store.

**Does it return share counts?**
No. Instagram does not publish share counts on this data, so the field is not included. We would rather ship a column that's always real than one that's always empty.

**What formats can I export?**
JSON, CSV, Excel, XML and HTML table — from the UI in one click, or over the API.

**Is there a free way to try it?**
Yes. Free-plan runs return a capped sample of the exact same fields so you can check the output shape before committing.

***

### 🔎 Related Instagram scrapers

Pair this with the rest of the suite:

- 💬 **Instagram Comments Scraper** — every comment and reply on any post or reel
- \#️⃣ **Instagram Hashtag Scraper** — posts and reels from any hashtag
- 👥 **Instagram Followers & Following Scraper** — audience lists for any public account
- 📸 **Instagram Post Scraper** — full post data from any profile
- 🏷️ **Instagram Tagged Posts Scraper** — every post an account is tagged in
- 🔍 **Instagram Search Scraper** — accounts, hashtags and places by keyword

***

### 🏷️ Keywords

instagram reels scraper · instagram reel scraper · scrape instagram reels · instagram video scraper · instagram reels api · instagram reels data export · download instagram reels data · instagram reels analytics · instagram engagement scraper · instagram play count scraper · instagram audio scraper · instagram music scraper · instagram creator analytics · instagram competitor analysis · influencer marketing data · instagram reels csv export · instagram reels json · instagram scraper no login · instagram reels mcp · instagram data for ai agents · social media scraping tool · instagram content analysis

***

#### 💬 Questions or a field you need?

Open an issue on the actor's **Issues** tab. Feature requests and field additions get read and acted on.

# Actor input Schema

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

Usernames or profile links. Paste @nike, nike, or https://www.instagram.com/nike/ — all three work. Add as many accounts as you like.

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

How many reels to collect from each account, newest first. Set it high to pull an entire back catalogue.

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

Optional. Accepts a date (2026-01-31) or a plain phrase (7 days, 3 months, 1 year). Leave empty to collect everything.

## `skipPinnedPosts` (type: `boolean`):

Leave pinned reels out of the results. Useful when you want a clean chronological feed.

## Actor input object example

```json
{
  "usernames": [
    "nike",
    "natgeo"
  ],
  "resultsLimit": 100,
  "onlyPostsNewerThan": "3 months",
  "skipPinnedPosts": false
}
```

# 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": [
        "nike",
        "https://www.instagram.com/natgeo/"
    ],
    "resultsLimit": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesmith/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": [
        "nike",
        "https://www.instagram.com/natgeo/",
    ],
    "resultsLimit": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapesmith/instagram-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": [
    "nike",
    "https://www.instagram.com/natgeo/"
  ],
  "resultsLimit": 100
}' |
apify call scrapesmith/instagram-reels-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/TFfQc3NYMyQ5ZOS4u/builds/yTACmgnjbNehGbAhZ/openapi.json
