# ✨ Instagram Reels Downloader Apify

⚡ Fast Instagram Reels downloader that saves public Reels to S3 or MinIO with clean filenames (video.mp4, thumbnail.jpg, description.txt). Fully temp-based, no local storage. Supports parallel downloads, custom S3 endpoints, and is perfect for archiving or automation workflows.

## Actor Statistics

- Total users: 6
- Monthly users: 6
- Runs succeeded: 91.43%
- Categories: Social media, Lead generation

## Pricing

$15.00/month + usage

## Input Schema

- **directUrls** (type: array): List of direct URLs to Instagram Reels videos.
- **s3\_access\_key** (type: string): Your S3 access key for uploading the downloaded Reels.
- **s3\_secret\_key** (type: string): Your S3 secret key for uploading the downloaded Reels.
- **s3\_bucket\_name** (type: string): Your S3 bucket name where the Reels will be stored.
- **s3\_endpoint\_url** (type: string): Your Custom S3 endpoint URL. Leave empty for default S3.
- **s3\_prefix** (type: string): Your S3 prefix (folder) where the Reels will be stored.
- **proxy** (type: object): Select proxies to be used by your crawler.

## API example

## ✨ Instagram Reels Downloader Apify

- **OpenAPI Version:** `3.1.1`
- **API Version:** `0.0`

⚡ Fast Instagram Reels downloader that saves public Reels to S3 or MinIO with clean filenames (video.mp4, thumbnail.jpg, description.txt). Fully temp-based, no local storage. Supports parallel downloads, custom S3 endpoints, and is perfect for archiving or automation workflows.

### Servers

- **URL:** `https://api.apify.com/v2`

### Operations

#### Executes an Actor, waits for its completion, and returns Actor's dataset items in response.

- **Method:** `POST`
- **Path:** `/acts/damilo~instagram-reels-downloader-apify/run-sync-get-dataset-items`
- **Tags:** Run Actor

##### Request Body

###### Content-Type: application/json

- **`directUrls` (required)**

  `array` — List of direct URLs to Instagram Reels videos.

  **Items:**

  `string`

- **`s3_access_key` (required)**

  `string` — Your S3 access key for uploading the downloaded Reels.

- **`s3_bucket_name` (required)**

  `string` — Your S3 bucket name where the Reels will be stored.

- **`s3_secret_key` (required)**

  `string` — Your S3 secret key for uploading the downloaded Reels.

- **`proxy`**

  `object` — Select proxies to be used by your crawler.

- **`s3_endpoint_url`**

  `string`, default: `""` — Your Custom S3 endpoint URL. Leave empty for default S3.

- **`s3_prefix`**

  `string`, default: `"instagram-reels/"` — Your S3 prefix (folder) where the Reels will be stored.

**Example:**

```
{
  "directUrls": [
    ""
  ],
  "s3_access_key": "",
  "s3_secret_key": "",
  "s3_bucket_name": "",
  "s3_endpoint_url": "",
  "s3_prefix": "instagram-reels/",
  "proxy": {}
}
```

##### Responses

###### Status: 200 OK

#### Executes an Actor and returns information about the initiated run in response.

- **Method:** `POST`
- **Path:** `/acts/damilo~instagram-reels-downloader-apify/runs`
- **Tags:** Run Actor

##### Request Body

###### Content-Type: application/json

- **`directUrls` (required)**

  `array` — List of direct URLs to Instagram Reels videos.

  **Items:**

  `string`

- **`s3_access_key` (required)**

  `string` — Your S3 access key for uploading the downloaded Reels.

- **`s3_bucket_name` (required)**

  `string` — Your S3 bucket name where the Reels will be stored.

- **`s3_secret_key` (required)**

  `string` — Your S3 secret key for uploading the downloaded Reels.

- **`proxy`**

  `object` — Select proxies to be used by your crawler.

- **`s3_endpoint_url`**

  `string`, default: `""` — Your Custom S3 endpoint URL. Leave empty for default S3.

- **`s3_prefix`**

  `string`, default: `"instagram-reels/"` — Your S3 prefix (folder) where the Reels will be stored.

**Example:**

```
{
  "directUrls": [
    ""
  ],
  "s3_access_key": "",
  "s3_secret_key": "",
  "s3_bucket_name": "",
  "s3_endpoint_url": "",
  "s3_prefix": "instagram-reels/",
  "proxy": {}
}
```

##### Responses

###### Status: 200 OK

\####### Content-Type: application/json

- **`data`**

  `object`

  - **`actId`**

    `string`

  - **`buildId`**

    `string`

  - **`buildNumber`**

    `string`

  - **`containerUrl`**

    `string`

  - **`defaultDatasetId`**

    `string`

  - **`defaultKeyValueStoreId`**

    `string`

  - **`defaultRequestQueueId`**

    `string`

  - **`finishedAt`**

    `string`, format: `date-time`

  - **`id`**

    `string`

  - **`meta`**

    `object`

    - **`origin`**

      `string`

    - **`userAgent`**

      `string`

  - **`options`**

    `object`

    - **`build`**

      `string`

    - **`diskMbytes`**

      `integer`

    - **`memoryMbytes`**

      `integer`

    - **`timeoutSecs`**

      `integer`

  - **`startedAt`**

    `string`, format: `date-time`

  - **`stats`**

    `object`

    - **`computeUnits`**

      `integer`

    - **`inputBodyLen`**

      `integer`

    - **`rebootCount`**

      `integer`

    - **`restartCount`**

      `integer`

    - **`resurrectCount`**

      `integer`

  - **`status`**

    `string`

  - **`usage`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `integer`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`usageTotalUsd`**

    `number`

  - **`usageUsd`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `number`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`userId`**

    `string`

**Example:**

```
{
  "data": {
    "id": "",
    "actId": "",
    "userId": "",
    "startedAt": "2025-01-08T00:00:00.000Z",
    "finishedAt": "2025-01-08T00:00:00.000Z",
    "status": "READY",
    "meta": {
      "origin": "API",
      "userAgent": ""
    },
    "stats": {
      "inputBodyLen": 2000,
      "rebootCount": 0,
      "restartCount": 0,
      "resurrectCount": 0,
      "computeUnits": 0
    },
    "options": {
      "build": "latest",
      "timeoutSecs": 300,
      "memoryMbytes": 1024,
      "diskMbytes": 2048
    },
    "buildId": "",
    "defaultKeyValueStoreId": "",
    "defaultDatasetId": "",
    "defaultRequestQueueId": "",
    "buildNumber": "1.0.0",
    "containerUrl": "",
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 1,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    },
    "usageTotalUsd": 0.00005,
    "usageUsd": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 0.00005,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    }
  }
}
```

#### Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.

- **Method:** `POST`
- **Path:** `/acts/damilo~instagram-reels-downloader-apify/run-sync`
- **Tags:** Run Actor

##### Request Body

###### Content-Type: application/json

- **`directUrls` (required)**

  `array` — List of direct URLs to Instagram Reels videos.

  **Items:**

  `string`

- **`s3_access_key` (required)**

  `string` — Your S3 access key for uploading the downloaded Reels.

- **`s3_bucket_name` (required)**

  `string` — Your S3 bucket name where the Reels will be stored.

- **`s3_secret_key` (required)**

  `string` — Your S3 secret key for uploading the downloaded Reels.

- **`proxy`**

  `object` — Select proxies to be used by your crawler.

- **`s3_endpoint_url`**

  `string`, default: `""` — Your Custom S3 endpoint URL. Leave empty for default S3.

- **`s3_prefix`**

  `string`, default: `"instagram-reels/"` — Your S3 prefix (folder) where the Reels will be stored.

**Example:**

```
{
  "directUrls": [
    ""
  ],
  "s3_access_key": "",
  "s3_secret_key": "",
  "s3_bucket_name": "",
  "s3_endpoint_url": "",
  "s3_prefix": "instagram-reels/",
  "proxy": {}
}
```

##### Responses

###### Status: 200 OK

### Schemas

#### inputSchema

- **Type:**`object`

* **`directUrls` (required)**

  `array` — List of direct URLs to Instagram Reels videos.

  **Items:**

  `string`

* **`s3_access_key` (required)**

  `string` — Your S3 access key for uploading the downloaded Reels.

* **`s3_bucket_name` (required)**

  `string` — Your S3 bucket name where the Reels will be stored.

* **`s3_secret_key` (required)**

  `string` — Your S3 secret key for uploading the downloaded Reels.

* **`proxy`**

  `object` — Select proxies to be used by your crawler.

* **`s3_endpoint_url`**

  `string`, default: `""` — Your Custom S3 endpoint URL. Leave empty for default S3.

* **`s3_prefix`**

  `string`, default: `"instagram-reels/"` — Your S3 prefix (folder) where the Reels will be stored.

**Example:**

```
{
  "directUrls": [
    ""
  ],
  "s3_access_key": "",
  "s3_secret_key": "",
  "s3_bucket_name": "",
  "s3_endpoint_url": "",
  "s3_prefix": "instagram-reels/",
  "proxy": {}
}
```

#### runsResponseSchema

- **Type:**`object`

* **`data`**

  `object`

  - **`actId`**

    `string`

  - **`buildId`**

    `string`

  - **`buildNumber`**

    `string`

  - **`containerUrl`**

    `string`

  - **`defaultDatasetId`**

    `string`

  - **`defaultKeyValueStoreId`**

    `string`

  - **`defaultRequestQueueId`**

    `string`

  - **`finishedAt`**

    `string`, format: `date-time`

  - **`id`**

    `string`

  - **`meta`**

    `object`

    - **`origin`**

      `string`

    - **`userAgent`**

      `string`

  - **`options`**

    `object`

    - **`build`**

      `string`

    - **`diskMbytes`**

      `integer`

    - **`memoryMbytes`**

      `integer`

    - **`timeoutSecs`**

      `integer`

  - **`startedAt`**

    `string`, format: `date-time`

  - **`stats`**

    `object`

    - **`computeUnits`**

      `integer`

    - **`inputBodyLen`**

      `integer`

    - **`rebootCount`**

      `integer`

    - **`restartCount`**

      `integer`

    - **`resurrectCount`**

      `integer`

  - **`status`**

    `string`

  - **`usage`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `integer`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`usageTotalUsd`**

    `number`

  - **`usageUsd`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `number`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`userId`**

    `string`

**Example:**

```
{
  "data": {
    "id": "",
    "actId": "",
    "userId": "",
    "startedAt": "2025-01-08T00:00:00.000Z",
    "finishedAt": "2025-01-08T00:00:00.000Z",
    "status": "READY",
    "meta": {
      "origin": "API",
      "userAgent": ""
    },
    "stats": {
      "inputBodyLen": 2000,
      "rebootCount": 0,
      "restartCount": 0,
      "resurrectCount": 0,
      "computeUnits": 0
    },
    "options": {
      "build": "latest",
      "timeoutSecs": 300,
      "memoryMbytes": 1024,
      "diskMbytes": 2048
    },
    "buildId": "",
    "defaultKeyValueStoreId": "",
    "defaultDatasetId": "",
    "defaultRequestQueueId": "",
    "buildNumber": "1.0.0",
    "containerUrl": "",
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 1,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    },
    "usageTotalUsd": 0.00005,
    "usageUsd": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 0.00005,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    }
  }
}
```

## Instagram Reels Downloader to S3

✅ If this actor saved you time, a ⭐⭐⭐⭐⭐ review helps me keep improving!

Looking for a **blazing-fast, server-clean Instagram Reel downloader** that sends everything straight to your S3 bucket (or MinIO, Wasabi, etc)? You're in the right place.

This actor downloads Reels from Instagram, renames and organizes the files (`video.mp4`, `description.txt`, and `thumbnail.jpg`), and uploads them directly to your specified S3-compatible storage — all from a clean temporary environment with zero leftover files.

***

### Table of Contents

1. [Features](#features)
2. [Input Parameters](#input-parameters)
3. [Example Input](#example-input)
4. [Output](#output)
5. [Limitations & Notes](#limitations--notes)
6. [Support](#support)

***

### Features

- 📥 **Download Reels via Direct URL** – Just plug in the Instagram URL(s), and we’ll handle the rest.
- 🧹 **Zero Residual Files** – Everything happens in `/tmp`; no persistent files or clutter.
- 📦 **S3 Compatible** – Works with AWS S3, MinIO, Wasabi, or any custom S3-compatible storage.
- 🖼 **Well-Structured Output** – Renames and organizes media: `video.mp4`, `thumbnail.jpg`, `description.txt`.
- ⚡ **Concurrent Downloads** – Up to 3 Reels downloaded in parallel for speed.
- 🚀 **Plug-and-Play Simplicity** – Drop in your access keys and bucket name — done.

***

### Input Parameters

| Key               | Type     | Required | Default            | Description                                                                     |
| ----------------- | -------- | -------- | ------------------ | ------------------------------------------------------------------------------- |
| `directUrls`      | `array`  | ✅ Yes   | –                  | List of Instagram Reel URLs to download.                                        |
| `s3_access_key`   | `string` | ✅ Yes   | –                  | Your S3 access key (MinIO, AWS, etc.).                                          |
| `s3_secret_key`   | `string` | ✅ Yes   | –                  | Your S3 secret key.                                                             |
| `s3_bucket_name`  | `string` | ✅ Yes   | –                  | Bucket name where files will be stored.                                         |
| `s3_endpoint_url` | `string` | No       | –                  | Custom S3-compatible endpoint (e.g. `https://custom-minio.com:9000` for MinIO). |
| `s3_prefix`       | `string` | No       | `instagram-reels/` | Folder path (prefix) inside the bucket to organize files.                       |

***

### Example Input

```json
{
  "directUrls": [
    "https://www.instagram.com/reel/DKe9MrjKtQy/",
    "https://www.instagram.com/reel/DKlv9y-Nvfe/",
    "https://www.instagram.com/reel/DK9qyROtDwE/"
  ],
  "s3_access_key": "minioadmin",
  "s3_secret_key": "minioadmin",
  "s3_bucket_name": "instagram",
  "s3_endpoint_url": "https://custom-minio.com:9000",
  "s3_prefix": "instagram-reels/"
}
```

***

### Output

The actor saves output to the Apify dataset in the following format per reel:

```json
[
    {
      "status": true,
      "url": "https://www.instagram.com/reel/DKe9MrjKtQy/",
      "s3_video_location": "s3://instagram/instagram-reels/DKe9MrjKtQy/video.mp4",
      "s3_thumbnail_location": "s3://instagram/instagram-reels/DKe9MrjKtQy/thumbnail.jpg",
      "s3_description_location": "s3://instagram/instagram-reels/DKe9MrjKtQy/description.txt"
    },
    ...
]
```

You can export this dataset as JSON, CSV, or Excel from the **Apify Storage** tab.

***

### Limitations & Notes

- 💾 **No Local Storage** – All temp files are automatically cleaned after upload.
- 🛠 **No Login Required** – Fully anonymous scraping of public content.
- 📊 **Concurrent Cap = 3** – Batches of up to 3 reels are downloaded in parallel for balance between speed and safety.
- 🧩 Designed for Apify – Works out of the box with scheduling, dataset exports, and actor tasks.

***

### Support

- Check out [This Scraptorium blog post](https://www.scraptorium.com/how-to-automatically-download-instagram-reels-to-amazon-s3/)! for demo
- Join the **Apify Developer Community** to ask questions or share feedback.
- Need custom features like batch file download or login support? Contact me via Apify.

***

### Why Use This Actor?

This tool is perfect for marketers, social media managers, researchers, or developers who need fast access to Instagram Reels content for storage, processing, or archival — without leaving a trace on the machine.

> **Start archiving Reels to your storage in seconds. Minimal setup. Maximum speed.**

***

Happy scraping! 🎥📦💨
