# Instagram Image Post Scraper & Image Post Downloader📥 (`scrapearchitect/instagram-image-post-scraper-image-post-downloader`) Actor

📸 Download ALL Instagram post images 🖼️ & video thumbnails 🎥! Extract deep metadata 📊 (dimensions/codecs/bitrates) 🔬Bulk URLs 📋, Apify storage 🔒, toggle tech specs 🔧 For archivists 📚, analysts 📈, devs ! 🛠️Instagram Image Post Scraper & Image Post Downloader 📥

- **URL**: https://apify.com/scrapearchitect/instagram-image-post-scraper-image-post-downloader.md
- **Developed by:** [Scrape Architect](https://apify.com/scrapearchitect) (community)
- **Categories:** Social media, Developer tools, Automation
- **Stats:** 69 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

$9.00/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period.You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#rental-actors

## 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 Image Post Scraper & Image Post Downloader📥 – Bulk Image Grab + Deep Metadata Extraction 🔍

**Download ALL images from Instagram posts 🖼️, extract video thumbnails 🎥, and get pixel-perfect metadata 📊!** Bulk processing ✅, Apify storage 📦, and Media analysis 🔬 Perfect for archivists 📚 and data analysts 📈!

***

### 🌟 Overview

Need to download every image from Instagram posts? Want deep technical insights? This actor delivers:\
✅ **All-image extraction** from single/multi-photo posts\
✅ **Video thumbnail capture** for video-containing posts\
✅ **Bulk processing** (1-100+ URLs per run)\
✅ **Pixel-level metadata** (dimensions, codecs, bitrates)\
✅ **Apify storage** for secure downloads

> ⚡ Avg. runtime: 20-60 seconds per post\
> 🧠 Media analysis

***

### 🔥 Key Features

#### 🖼️ Complete Media Capture

- **All Images Downloaded**: Never miss a single photo from carousels
- **Video Thumbnails**: Get cover images when posts contain videos
- **Quality Preservation**: Original resolution maintained

#### 📊 Metadata Mastery

- **Pixel Analysis**: Dimensions, aspect ratios, color spaces
- **Technical Deep Dive**: Codecs, bitrates, compression profiles
- **Validation Stats**: HTTP status, content types, validity checks

#### ⚙️ Smart Processing

- **Metadata Toggle**: Enable/disable technical analysis
- **URL Cleaning**: Auto-remove tracking parameters
- **Bulk Power**: Process entire galleries in one batch

***

### ⚙️ Input Configuration

```json
{
  "additional_metadata": true,
  "post_urls": [
    {
      "url": "https://www.instagram.com/p/DMxzBcrR-Jp/",
      "method": "GET"
    }
  ]
}
```

#### 📋 Input Fields Explained

| Parameter | Type | Description |\
|-----------|------|-------------|\
| `post_urls` | Array | Instagram post URLs (1-100+ items) |\
| `additional_metadata` | Boolean | `true`=Full technical analysis, `false`=Basic info |\
| `url` | String | Valid Instagram post link |\
| `method` | String | `GET` (HTTP method) |

***

### 📤 Output Example

```json
[
  {
    "request": {
      "original_url": "https://www.instagram.com/p/DMxzBcrR-Jp/?utm_source=ig_web_copy_link",
      "cleaned_url": "https://www.instagram.com/p/DMxzBcrR-Jp",
      "api_used": "API 1"
    },
    "media": {
      "total_found": 2,
      "valid_urls": 2,
      "urls": [
        {
          "http_status": 200,
          "content_type": "image/jpeg",
          "is_valid": true,
          "apify_kv_url": "https://api.apify.com/v2/key-value-stores/z6W4po4XfRfyZco03/records/ig_5696195265636061144.jpg?token=apify_actor_run_api_Ef068dr4eCPj1ge9gq21Lppwf2IA9D0lbsTt",
          "metadata": {
            "streams": [
              {
                "index": 0,
                "codec_name": "mjpeg",
                "codec_long_name": "Motion JPEG",
                "profile": "Progressive",
                "codec_type": "video",
                "codec_tag_string": "[0][0][0][0]",
                "codec_tag": "0x0000",
                "width": 1080,
                "height": 1348,
                "coded_width": 1080,
                "coded_height": 1348,
                "closed_captions": 0,
                "film_grain": 0,
                "has_b_frames": 0,
                "sample_aspect_ratio": "1:1",
                "display_aspect_ratio": "270:337",
                "pix_fmt": "yuvj420p",
                "level": -99,
                "color_range": "pc",
                "color_space": "bt470bg",
                "chroma_location": "center",
                "refs": 1,
                "r_frame_rate": "25/1",
                "avg_frame_rate": "25/1",
                "time_base": "1/25",
                "start_pts": 0,
                "start_time": "0.000000",
                "duration_ts": 1,
                "duration": "0.040000",
                "bits_per_raw_sample": "8",
                "disposition": {
                  "default": 0,
                  "dub": 0,
                  "original": 0,
                  "comment": 0,
                  "lyrics": 0,
                  "karaoke": 0,
                  "forced": 0,
                  "hearing_impaired": 0,
                  "visual_impaired": 0,
                  "clean_effects": 0,
                  "attached_pic": 0,
                  "timed_thumbnails": 0,
                  "captions": 0,
                  "descriptions": 0,
                  "metadata": 0,
                  "dependent": 0,
                  "still_image": 0
                }
              }
            ],
            "format": {
              "filename": "/tmp/tmptxkl2qt1.jpg",
              "nb_streams": 1,
              "nb_programs": 0,
              "format_name": "image2",
              "format_long_name": "image2 sequence",
              "start_time": "0.000000",
              "duration": "0.040000",
              "size": "197168",
              "bit_rate": "39433600",
              "probe_score": 50
            }
          }
        },
        {
          "http_status": 200,
          "content_type": "image/jpeg",
          "is_valid": true,
          "apify_kv_url": "https://api.apify.com/v2/key-value-stores/z6W4po4XfRfyZco03/records/ig_2750145812399123644.jpg?token=apify_actor_run_api_Ef068dr4eCPj1ge9gq21Lppwf2IA9D0lbsTt",
          "metadata": {
            "streams": [
              {
                "index": 0,
                "codec_name": "mjpeg",
                "codec_long_name": "Motion JPEG",
                "profile": "Progressive",
                "codec_type": "video",
                "codec_tag_string": "[0][0][0][0]",
                "codec_tag": "0x0000",
                "width": 1080,
                "height": 1348,
                "coded_width": 1080,
                "coded_height": 1348,
                "closed_captions": 0,
                "film_grain": 0,
                "has_b_frames": 0,
                "sample_aspect_ratio": "1:1",
                "display_aspect_ratio": "270:337",
                "pix_fmt": "yuvj420p",
                "level": -99,
                "color_range": "pc",
                "color_space": "bt470bg",
                "chroma_location": "center",
                "refs": 1,
                "r_frame_rate": "25/1",
                "avg_frame_rate": "25/1",
                "time_base": "1/25",
                "start_pts": 0,
                "start_time": "0.000000",
                "duration_ts": 1,
                "duration": "0.040000",
                "bits_per_raw_sample": "8",
                "disposition": {
                  "default": 0,
                  "dub": 0,
                  "original": 0,
                  "comment": 0,
                  "lyrics": 0,
                  "karaoke": 0,
                  "forced": 0,
                  "hearing_impaired": 0,
                  "visual_impaired": 0,
                  "clean_effects": 0,
                  "attached_pic": 0,
                  "timed_thumbnails": 0,
                  "captions": 0,
                  "descriptions": 0,
                  "metadata": 0,
                  "dependent": 0,
                  "still_image": 0
                }
              }
            ],
            "format": {
              "filename": "/tmp/tmpogmgopyu.jpg",
              "nb_streams": 1,
              "nb_programs": 0,
              "format_name": "image2",
              "format_long_name": "image2 sequence",
              "start_time": "0.000000",
              "duration": "0.040000",
              "size": "119060",
              "bit_rate": "23812000",
              "probe_score": 50
            }
          }
        }
      ]
    }
  }
]
```

#### 🗝️ Output Fields

**Core Media**\
| Field | Description |\
|-------|-------------|\
| `apify_kv_url` | Secure download link for image |\
| `is_valid` | Media integrity check |\
| `total_found` | Number of images in post |

**Advanced Metadata**\
| Field | Description |\
|-------|-------------|\
| `width/height` | Pixel dimensions |\
| `codec` | Compression technology (e.g., mjpeg) |\
| `bit_rate` | Image quality metric |\
| `color_space` | Color profile (e.g., bt470bg) |\
| `dynamic_range` | SDR/HDR information |

***

### 🆚 Why This Actor?

| Feature | 📸 This Actor | 🐌 Others |\
|---------|---------------|-----------|\
| Multi-Image Posts | ✅ Full Extraction | ❌ First Image Only |\
| Video Thumbnails | ✅ Auto-Captured | ❌ Manual Screenshots |\
| Metadata Depth | 20+ Technical Fields | Basic Dimensions |\
| Bulk Processing | 100+ Posts | Single Posts |\
| Media Validation | ✅ Integrity Checks | ❌ Blind Downloads |

***

### 🛠️ How It Works

1️⃣ **Add Post URLs** – Single or bulk\
2️⃣ **Toggle Metadata**:

- `true` for codec/bitrate analysis
- `false` for fast downloads\
  3️⃣ **Run Actor**:
- FFmpeg analyzes each image
- Cleans URLs automatically\
  4️⃣ **Get Results**:
- 🖼️ All post images + video thumbnails
- 🔍 Pixel/compression metadata
- 📊 Validation statistics

***

### 💡 Use Cases

🖼️ **Content Archivists** – Preserve visual histories\
📊 **Data Analysts** – Study image compression trends\
👩💻 **Developers** – Build Instagram-powered apps\
📱 **Social Managers** – Backup campaign assets\
🔍 **Researchers** – Analyze visual storytelling patterns

***

### ❓ Troubleshooting

**Issue**: "No images found"\
**Fix**:

- Use URLs from public accounts (private not supported)
- Ensure links follow format: `instagram.com/p/[ID]`

**Issue**: Missing metadata\
**Fix**:

- Verify `additional_metadata` is set to `true`
- Retry with stable network connection

***

**Key Highlights:**

1. Focused on "Instagram Post Downloader (Image) & Scraper" throughout
2. Emphasized unique multi-image extraction capability
3. Showcased metadata analysis
4. Simplified output example while keeping critical fields
5. Added Instagram-specific troubleshooting
6. Highlighted video thumbnail feature
7. Included toggle explanation for metadata control

Perfect for technical users needing deep image analysis! 🔍🖼️

# Actor input Schema

## `post_urls` (type: `array`):

A list of public Instagram post URLs (images only).

## `additional_metadata` (type: `boolean`):

If enabled, the output will include all available metadata for each image. If disabled, metadata will be omitted.

## Actor input object example

```json
{
  "post_urls": [
    {
      "url": "https://www.instagram.com/p/DMxzBcrR-Jp/?utm_source=ig_web_copy_link"
    }
  ],
  "additional_metadata": true
}
```

# 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 = {
    "post_urls": [
        {
            "url": "https://www.instagram.com/p/DMxzBcrR-Jp/?utm_source=ig_web_copy_link"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapearchitect/instagram-image-post-scraper-image-post-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 = { "post_urls": [{ "url": "https://www.instagram.com/p/DMxzBcrR-Jp/?utm_source=ig_web_copy_link" }] }

# Run the Actor and wait for it to finish
run = client.actor("scrapearchitect/instagram-image-post-scraper-image-post-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 '{
  "post_urls": [
    {
      "url": "https://www.instagram.com/p/DMxzBcrR-Jp/?utm_source=ig_web_copy_link"
    }
  ]
}' |
apify call scrapearchitect/instagram-image-post-scraper-image-post-downloader --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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