# Instagram Downloader - Reels, Video, Story, Photo & Audio (`convertfleetdotonline/instagram-downloader`) Actor

Instagram downloader for Reels, videos, posts, IGTV, Stories, photos and audio in original HD. Direct CDN URLs, no watermark. Bulk download by URL - no login for public content, no API key.

- **URL**: https://apify.com/convertfleetdotonline/instagram-downloader.md
- **Developed by:** [Hasnain Nisar](https://apify.com/convertfleetdotonline) (community)
- **Categories:** Videos, Social media
- **Stats:** 14 total users, 2 monthly users, 95.8% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00 / 1,000 media resolveds

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 Downloader - Reels, Video, Stories, IGTV & Posts (No Watermark, HD)

**This Instagram downloader saves Instagram Reels, video posts, IGTV, and public Story highlights in original HD quality with no watermark.** Pass any public Instagram URL and get direct CDN download links - an Instagram video downloader, Instagram reel downloader, Instagram story downloader, and Instagram audio downloader in one actor. No login required, no API key, no quotas.

### At a glance

| | |
|---|---|
| **What you get** | Direct HD video + audio CDN URLs, no watermark, not re-encoded |
| **Supports** | Reels, posts (/p/), IGTV (/tv/), and public Story Highlights |
| **Input** | One or more public Instagram URLs |
| **Auth** | No login and no API key for public content |
| **Speed** | 2-4 seconds per post; under 256 MB memory |
| **Output fields** | Title, uploader, duration, thumbnail, and full format list |
| **Export** | JSON, CSV, Excel, or Google Sheets via the Apify API |

### What this Instagram Downloader does

For each Instagram URL, the actor returns:

- **Best combined download URL** (video + audio, original quality)
- **Best video-only URL** (highest resolution available)
- **Best audio URL** for Reels and IGTV (extract audio for podcasts / music)
- Full format list with resolution, bitrate, file size
- Title, thumbnail, duration, uploader, platform metadata

Supports:

- **Reels** - `/reel/<id>/`
- **Standard video posts** - `/p/<id>/`
- **IGTV** - `/tv/<id>/`
- **Story highlights** that are public

### Why use this Instagram Downloader?

- **Original quality** - direct from Instagram CDN, not re-encoded
- **No watermark** - content as it was uploaded
- **No login or API key** for public content
- **Bulk download URLs** - pass an array, get every download link
- **Direct CDN URLs** - pipe straight into ffmpeg, S3, or your client

### Use cases

- **Repurposing content** - download your own Reels for cross-posting to TikTok / YouTube Shorts
- **UGC archival** - back up brand mentions, Reels you've been tagged in
- **Influencer marketing** - analyse high-performing Reels for campaigns you'll run
- **Audio extraction** - pull Reels audio for podcast intros or stingers
- **Compliance / legal** - capture public posts for editorial review

### Input

```json
{
    "videoUrls": [
        "https://www.instagram.com/reel/CzABCdEFghi/",
        "https://www.instagram.com/p/CxDEfGHiJkL/",
        "https://www.instagram.com/tv/CABcdEfGHi/"
    ]
}
```

### Output

Each dataset record:

```json
{
    "title": "Caption / first line of post",
    "thumbnail": "https://scontent.cdninstagram.com/.",
    "duration": 28,
    "duration_string": "0:28",
    "uploader": "@username",
    "platform": "Instagram",
    "audio_url": "https://. (best audio direct URL)",
    "formats": [
        {
            "format_id": "dash_video",
            "type": "video",
            "ext": "mp4",
            "height": 1080,
            "quality": "1080p",
            "filesize": 8456789,
            "has_audio": true,
            "url": "https://."
        }
    ]
}
```

### How it works

The actor uses [yt-dlp](https://github.com/yt-dlp/yt-dlp) - the open-source standard for Instagram extraction. It queries Instagram's public web endpoints and parses the embedded media manifest exactly the way the Instagram web client does.

### Cost & speed

URLs resolve in 2-4 seconds per post. Memory under 256 MB. You only pay for compute time used.

### Related actors

- **TikTok Downloader** - TikTok videos (no watermark)
- **YouTube Downloader** - YouTube videos and Shorts
- **Facebook Downloader** - Facebook videos and reels
- **Universal Video Downloader** - every supported platform in one actor

### FAQ

**Q: How do I download an Instagram Reel?**
Paste the Reel URL (`/reel/<id>/`) and the actor returns the best combined MP4, a video-only stream, and the audio URL - all in original quality with no watermark. Download any of them with `curl`, `wget`, or `ffmpeg`.

**Q: Can I download Instagram Stories?**
Public Story Highlights can be resolved and downloaded. Active 24-hour Stories require login and are not supported.

**Q: How do I download an Instagram video without a watermark?**
Every URL comes straight from Instagram's CDN, not re-encoded and with no watermark added - just grab the best combined MP4 or the video-only stream from the `formats` list.

**Q: Can I download Instagram photos?**
The actor focuses on video content (Reels, video posts, IGTV, Story Highlights) and returns a direct `thumbnail` image URL for each item. Full photo-post downloading is not its primary function.

**Q: Are private accounts supported?**
No. Only public posts can be resolved without login.

**Q: Does this work on Stories?**
Public Story Highlights can be resolved. Active 24-hour Stories require login and aren't supported.

**Q: Why does my download URL stop working after a few hours?**
Instagram signs CDN URLs with a time-limited token. Re-run the actor for fresh URLs.

**Q: Does the actor download the file?**
No - it returns the direct URL. Download with `curl`, `wget`, `ffmpeg`, or any HTTP client. This keeps the actor cheap, fast, and avoids storage charges.

**Q: Is downloading Instagram content legal?**
For your own content and creative-commons material, yes. For copyrighted content, comply with Instagram's Terms of Service and your local copyright law.

# Actor input Schema

## `videoUrls` (type: `array`):

One or more Instagram URLs - Reels (/reel/...), posts (/p/...), IGTV (/tv/...), or Stories highlights. Returns direct MP4 / image download URLs in original quality.

## `proxyConfiguration` (type: `object`):

Routes yt-dlp through Apify Proxy. Residential proxies bypass platform IP blocks.

## `cookies` (type: `string`):

Netscape-format cookies.txt content. Required for private/age-gated posts. Export with 'Get cookies.txt' browser extension.

## Actor input object example

```json
{
  "videoUrls": [
    "https://www.instagram.com/reel/CzABCdEFghi/"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "cookies": ""
}
```

# 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 = {
    "videoUrls": [
        "https://www.instagram.com/reel/CzABCdEFghi/"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("convertfleetdotonline/instagram-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 = {
    "videoUrls": ["https://www.instagram.com/reel/CzABCdEFghi/"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("convertfleetdotonline/instagram-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 '{
  "videoUrls": [
    "https://www.instagram.com/reel/CzABCdEFghi/"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call convertfleetdotonline/instagram-downloader --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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