# Instagram Video & Reel Downloader (`seemuapps/instagram-video-downloader`) Actor

Download Instagram Reels, videos, and photos from any post URL get direct, full-quality media download links for every slide, no login required.

- **URL**: https://apify.com/seemuapps/instagram-video-downloader.md
- **Developed by:** [Andrew](https://apify.com/seemuapps) (community)
- **Categories:** Social media, Videos, Integrations
- **Stats:** 174 total users, 100 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 video downloadeds

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/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 Video & Reel Downloader

Download Instagram Reels, videos, and photos from any post URL - get direct, full-quality media download links for every post, carousel slide, and Reel. No login, no cookies, no app required.

### What you get

For every Instagram URL you submit, the downloader returns a structured record with:

**Direct download links**

- The main video URL (MP4) and cover/thumbnail image URL
- `downloads` - one entry per slide, so carousels return every image and video, each with its own `downloadUrl`, width, and height
- Optional **permanent links**: enable *Save files to storage* and each video/image is copied to Apify storage with a `savedUrl` that never expires (Instagram's own CDN links stop working after a few hours)

**Post details**

- Post ID, shortcode, and clean post URL
- Media type (photo, video, carousel) and product type (feed, Reel)
- Caption, post timestamp, and video duration
- Like, comment, view, and play counts

**Author**

- Username, full name, profile picture, and verified status

### Use cases

- **Reel & video downloading** - save Instagram Reels and videos in full quality for reposting or archiving
- **Carousel downloading** - grab every image in a multi-slide post in one go
- **Ad & creative research** - pull competitor Reels and videos into a swipe file
- **Content backup** - archive your own posts with permanent, non-expiring links
- **Bulk media export** - paste hundreds of URLs and export all media links at once

### How to use

1. Paste one or more Instagram **Reel, video, or photo URLs** (or bare shortcodes) into **Post / Reel URLs**
2. (Optional) Turn on **Save files to storage** for permanent download links
3. Run the actor - results appear in the **Dataset** tab
4. Open any `downloadUrl` (or `savedUrl`) to download the media

### Output format

Each dataset record:

```json
{
  "input": "https://www.instagram.com/reel/DWocNOhgmgg/",
  "shortcode": "DWocNOhgmgg",
  "postUrl": "https://www.instagram.com/reel/DWocNOhgmgg/",
  "mediaType": "video",
  "caption": "Everyone has their own story...",
  "likeCount": 18420,
  "playCount": 512334,
  "authorUsername": "georgie.rose.1",
  "thumbnailUrl": "https://...jpg",
  "videoUrl": "https://...mp4",
  "downloads": [
    { "index": 0, "type": "video", "imageUrl": "https://...jpg", "videoUrl": "https://...mp4", "width": 1080, "height": 1920, "downloadUrl": "https://...mp4", "savedUrl": null }
  ]
}
```

# Actor input Schema

## `postUrls` (type: `array`):

One or more Instagram Reel, video, or photo URLs (e.g. https://www.instagram.com/reel/DWocNOhgmgg/) or bare shortcodes (DWocNOhgmgg). Each one is returned as a record with direct media download links.

## `saveFiles` (type: `boolean`):

Also download each video/image and store it on Apify, returning a permanent download link (savedUrl). Instagram's own CDN links expire after a few hours - enable this if you need links that keep working. Slower and uses more storage.

## Actor input object example

```json
{
  "postUrls": [
    "https://www.instagram.com/reel/DWocNOhgmgg/"
  ],
  "saveFiles": false
}
```

# Actor output Schema

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

Each record contains input, postId, shortcode, postUrl, mediaType, productType, takenAt, caption, videoDuration, engagement counts, author fields, headline thumbnailUrl/videoUrl, and downloads\[] - one entry per slide with type, imageUrl, videoUrl, width, height, downloadUrl, and (when Save files is on) a permanent savedUrl.

# 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 = {
    "postUrls": [
        "https://www.instagram.com/reel/DWocNOhgmgg/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("seemuapps/instagram-video-downloader").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 = { "postUrls": ["https://www.instagram.com/reel/DWocNOhgmgg/"] }

# Run the Actor and wait for it to finish
run = client.actor("seemuapps/instagram-video-downloader").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 '{
  "postUrls": [
    "https://www.instagram.com/reel/DWocNOhgmgg/"
  ]
}' |
apify call seemuapps/instagram-video-downloader --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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