# Instagram Post & Reel Details Scraper (`karamelo/instagram-post-reel-details`) Actor

Scrape complete details from Instagram posts and Reels by URL or shortcode — metrics, captions, hashtags, mentions, audio metadata, video/media URLs, and creator profiles. No login required.

- **URL**: https://apify.com/karamelo/instagram-post-reel-details.md
- **Developed by:** [karamelo](https://apify.com/karamelo) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 posts

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/actors/running/actors-in-store.md#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

### Overview

The **Instagram Post & Reel Details Scraper** is a high-performance, login-free automation tool built for developers, marketers, data analysts, and researchers who need complete, structured data from Instagram posts and Reels. By accepting direct post URLs, Reels links, shortcodes, or numeric media IDs in bulk, this Actor extracts extensive engagement metrics, post metadata, creator profiles, high-resolution media URLs, and audio attribution without requiring any login credentials, browser automation, or cookies.

Whether you are auditing competitor campaigns, monitoring influencer partnerships, analyzing trending Reels audio, tracking user-generated content, or feeding downstream AI applications and analytics dashboards, this Actor provides reliable, real-time extraction across all primary Instagram media types.

***

### What Does Instagram Post & Reel Details Scraper Do?

Instagram houses billions of public media assets, but extracting reliable data at scale is traditionally difficult due to aggressive rate limiting and session gating. This Actor streamlines data extraction by connecting directly to public Instagram endpoints via high-grade rotating residential proxies, returning comprehensive structured datasets in standard formats like JSON, CSV, and Excel.

For every supplied post or Reel, the Actor extracts:

- **Engagement metrics**: Like counts, comment counts, video play and view counts, reshares, saves, and repost counts.
- **Content metadata**: Full post captions, extracted hashtags, user mentions, media dimensions, timestamps, and tagged geographic locations.
- **Reels & audio specifications**: Audio track title, original artist or creator, audio asset ID, original audio indicator, and video duration.
- **Creator profile details**: Author username, full name, numeric user ID, verified account badge, avatar profile picture link, and follower stats.
- **Direct media assets**: High-resolution image URLs, direct video MP4 streaming links, and thumbnail preview images.
- **Commercial indicators**: Paid partnership declarations and sponsored content flags.

***

### Why Use This Actor?

- **No login or cookies required** — You never need to supply your personal or corporate Instagram credentials, session cookies, or account tokens. Your accounts remain completely safe from bans, checkpoints, and security verification challenges.
- **Full Reels and video support** — Seamlessly extract metadata from standard photo posts, multi-slide carousels, video posts, and vertical Reels with zero configuration differences.
- **Complete audio & music metadata** — Identify trending sounds, background music titles, artists, and original audio flags from viral Reels.
- **Bulk URL processing** — Submit hundreds or thousands of URLs or shortcodes in a single run. The Actor automatically cleanses, deduplicates, and concurrent-processes your inputs.
- **Clean structured output** — Every record is delivered in a uniform flat structure ready for immediate import into Google Sheets, Airtable, Snowflake, PostgreSQL, or business intelligence pipelines.
- **Cost-effective batching** — Processing multiple URLs in a single run significantly lowers runtime overhead and optimizes compute unit usage compared to single-item requests.
- **Automated retry & rate-limit resilience** — Integrated backoff algorithms and rotating proxy management ensure smooth extraction even during upstream platform turbulence.

***

### Who Is This Actor For?

#### Digital Marketing Agencies & Brand Managers

Verify sponsored influencer posts and track performance metrics on paid collaborations. Check the `is_paid_partnership` flag, extract verified like and comment counts, and determine actual engagement rates across sponsored campaigns.

#### Content Creators & Social Media Strategists

Benchmark your content against top-performing competitors. Analyze which Reel hooks, caption styles, hashtag clusters, and audio tracks generate the highest volume of comments and saves.

#### E-Commerce & Market Research Teams

Monitor user-generated content (UGC) around product drops, seasonal promotions, and brand tags. Track consumer sentiment in captions and measure earned media value (EMV).

#### AI Engineers & Data Scientists

Collect multimodal datasets (captions, hashtags, mentions, high-resolution imagery, and video URLs) to train computer vision models, fine-tune social recommendation algorithms, or perform natural language processing (NLP) on public discourse.

#### Talent Agencies & Influencer Scouts

Evaluate candidate creators by reviewing their recent post performance, verification badges, engagement consistency, and audience interactions.

***

### What Data Can You Extract?

The Actor extracts over 30 structured attributes per post, organized into distinct logical categories:

#### 1. Core Post Identifiers

| Field Name | Type | Description |
|---|---|---|
| `post_id` | String | Unique numeric identifier for the post or Reel |
| `shortcode` | String | Alphanumeric shortcode used in the Instagram URL slug |
| `post_url` | String | Canonical permalink URL of the post |
| `post_type` | String | Format classification: `Photo`, `Video`, `Carousel`, or `Reel` |
| `posted_at` | String | ISO 8601 publication timestamp (e.g. `2026-09-03T07:01:06.000Z`) |

#### 2. Engagement & Performance Metrics

| Field Name | Type | Description |
|---|---|---|
| `like_count` | Integer | Total count of public likes received |
| `comment_count` | Integer | Total count of comments posted |
| `view_count` | Integer | Public view count for video and Reel media |
| `play_count` | Integer | Number of video playback starts |
| `share_count` | Integer | Public reshare count when reported |
| `save_count` | Integer | Bookmark save count when available |
| `repost_count` | Integer | Total times the content was reposted |

#### 3. Caption, Text & Semantic Data

| Field Name | Type | Description |
|---|---|---|
| `caption` | String | Full raw caption text accompanying the post |
| `hashtags` | Array | Normalized list of hashtags extracted from the caption |
| `mentions` | Array | Usernames mentioned with the `@` symbol in the caption |
| `location_name` | String | Human-readable name of tagged location |
| `location_id` | String | Unique numeric location identifier |

#### 4. Audio & Reels Metadata

| Field Name | Type | Description |
|---|---|---|
| `audio_title` | String | Track or sound title utilized in the Reel |
| `audio_artist` | String | Name of the artist or creator behind the audio |
| `is_original_audio`| Boolean| `true` if original creator sound; `false` if commercial track |
| `video_duration` | Number | Duration of video or Reel in seconds |

#### 5. Creator Profile Information

| Field Name | Type | Description |
|---|---|---|
| `owner_username` | String | Instagram handle of the author |
| `owner_full_name` | String | Display name shown on author profile |
| `owner_id` | String | Unique author user ID |
| `owner_is_verified`| Boolean| `true` if author holds a verified blue badge |
| `owner_follower_count` | Integer | Number of followers when available |
| `owner_profile_pic_url` | String | Direct URL to author profile avatar image |

#### 6. Media Dimensions & Asset URLs

| Field Name | Type | Description |
|---|---|---|
| `media_url` | String | Direct high-resolution image URL or video MP4 file URL |
| `thumbnail_url` | String | Thumbnail preview image URL |
| `dimensions_width` | Integer | Width of media asset in pixels |
| `dimensions_height` | Integer | Height of media asset in pixels |
| `is_paid_partnership` | Boolean | `true` if declared as sponsored partnership |

***

### How to Get Started

Running the Actor is straightforward and requires only a few clicks or a single API call.

#### Step-by-Step Console Walkthrough

1. **Open the Actor in Apify Console**: Navigate to the Actor page in the Apify Store and click **Try for free** or **Start**.
2. **Enter Post URLs**: Paste one or more Instagram post or Reel links into the **Post or Reel URLs / Shortcodes** field. You can paste standard posts (`/p/`), Reels (`/reel/` or `/reels/`), IGTV videos (`/tv/`), or raw alphanumeric shortcodes.
3. **Configure Proxies**: Keep the default **Automatic residential proxy** selected. Residential proxies ensure uninterrupted access to Instagram public endpoints.
4. **Set Max Concurrency**: Adjust the concurrency level (default is 3) based on how quickly you want large batches processed.
5. **Click Save & Run**: Click the green **Start** button at the bottom of the screen.
6. **Download Results**: Once completed, view the tabular dataset under the **Storage / Dataset** tab or export in JSON, CSV, or Excel formats.

***

### Input Reference

The Actor accepts input in JSON format. The table below outlines all available parameters:

| Input Field | Type | Default | Description |
|---|---|---|---|
| `postUrls` | Array of Strings | *(Required)* | List of Instagram post URLs, Reels URLs, shortcodes, or numeric media IDs to scrape. One entry per line in the Console form. |
| `proxyConfiguration` | Object | `{ "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }` | Apify Proxy configuration. High-reputation residential proxies are recommended for stable Instagram scraping. |
| `maxConcurrency` | Integer | `3` | Maximum number of concurrent worker requests. Allowed range is 1 to 10. |

#### Minimal Input Example

```json
{
  "postUrls": [
    "https://www.instagram.com/p/DdFFajKABI4/"
  ]
}
```

#### Batch Input Example with Multiple Formats

```json
{
  "postUrls": [
    "https://www.instagram.com/p/DdFFajKABI4/",
    "DdFFajKABI4",
    "3982613260166763064"
  ],
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

***

### Sample Output

Below is an authentic sample output record generated by the Actor from a public Instagram post (`https://www.instagram.com/p/DdFFajKABI4/`):

```json
{
  "post_id": "3982613260166763064",
  "shortcode": "DdFFajKABI4",
  "post_url": "https://www.instagram.com/p/DdFFajKABI4/",
  "post_type": "Carousel",
  "caption": "Hard work pays off 🟡🔵",
  "hashtags": [],
  "mentions": [],
  "like_count": 4777247,
  "comment_count": 44479,
  "view_count": null,
  "play_count": null,
  "share_count": null,
  "save_count": null,
  "repost_count": null,
  "posted_at": "2026-09-09T20:08:39.000Z",
  "location_name": null,
  "location_id": null,
  "audio_title": null,
  "audio_artist": null,
  "is_original_audio": null,
  "is_paid_partnership": false,
  "video_duration": null,
  "media_url": "https://scontent.cdninstagram.com/v/t51.82787-15/801882196_18771362578056421_3427892846902468863_n.jpg?stp=dst-jpg_e35_s640x640_tt6&_nc_cat=1&ccb=7-5&_nc_sid=18de74",
  "thumbnail_url": "https://instagram.falg6-1.fna.fbcdn.net/v/t51.82787-15/801882196_18771362578056421_3427892846902468863_n.jpg?stp=c0.400.3200.3200a_dst-jpg_e35_s150x150_tt6",
  "dimensions_width": 3200,
  "dimensions_height": 4000,
  "owner_username": "cristiano",
  "owner_full_name": "Cristiano Ronaldo",
  "owner_id": "173560420",
  "owner_is_verified": true,
  "owner_follower_count": null,
  "owner_profile_pic_url": "https://scontent.cdninstagram.com/v/t51.2885-19/472007201_1142000150877579_994350541752907763_n.jpg?stp=dst-jpg_s150x150_tt6"
}
```

***

### Programmatic Integration & API Usage

You can trigger this Actor programmatically from any application using the Apify API or official client libraries.

#### JavaScript & TypeScript

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({
    token: process.env.APIFY_TOKEN,
});

const input = {
    postUrls: [
        'https://www.instagram.com/p/DdFFajKABI4/'
    ],
    maxConcurrency: 3,
};

// Start the Actor run and wait for it to finish
const run = await client.actor('karamelo/instagram-post-reel-details').call(input);

// Fetch resulting records from default dataset
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Retrieved ${items.length} post records:`);
for (const item of items) {
    console.log(`[${item.post_type}] ${item.shortcode} by @${item.owner_username}: ${item.like_count} likes`);
}
```

#### Python

```python
import os
from apify_client import ApifyClient

client = ApifyClient(os.getenv('APIFY_TOKEN'))

run_input = {
    "postUrls": [
        "https://www.instagram.com/p/DdFFajKABI4/"
    ],
    "maxConcurrency": 3
}

run = client.actor("karamelo/instagram-post-reel-details").call(run_input=run_input)

dataset_items = client.dataset(run["defaultDatasetId"]).iterate_items()
for post in dataset_items:
    print(f"Post {post['shortcode']} by {post['owner_username']}: {post['comment_count']} comments")
```

#### Apify CLI

```bash
echo '{ "postUrls": ["https://www.instagram.com/p/DdFFajKABI4/"] }' | \
apify call karamelo/instagram-post-reel-details --output-dataset
```

#### REST API

Trigger the Actor via standard HTTP request:

```bash
curl -X POST "https://api.apify.com/v2/acts/karamelo~instagram-post-reel-details/runs?token=YOUR_API_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
       "postUrls": ["https://www.instagram.com/p/DdFFajKABI4/"]
     }'
```

***

### Downstream Integrations & Export Workflows

The dataset produced by this Actor connects directly to various business tools:

- **Google Sheets & Airtable**: Set up automatic synchronization so new scraped posts append as new rows in your tracking spreadsheets.
- **Zapier & Make (Integromat)**: Create automated triggers that notify your Slack or Discord channels when a competitor publishes a new post or Reel.
- **Webhooks**: Configure Apify Webhooks to notify your server endpoint the moment a batch job finishes, passing the dataset ID for automatic ingestion.
- **AI Pipelines & MCP Server**: Feed post captions, hashtags, and media assets into Large Language Models (LLMs) for content summarization, brand sentiment analysis, or automated response generation.

***

### Pricing, Performance & Best Practices

#### Bulk Processing for Maximum Cost Efficiency

Apify charges a minor platform startup fee per Actor run. Consequently, running one batch job with 50 URLs is significantly more cost-effective than executing 50 separate single-URL runs. Whenever possible, aggregate URLs into batches of 20 to 100 items per run to maximize throughput and minimize compute costs.

#### Recommended Concurrency Settings

- **Small batches (1–10 URLs)**: Concurrency of `2` or `3` finishes in just a few seconds.
- **Medium batches (10–50 URLs)**: Concurrency of `3` to `5` provides optimal balance between speed and steady upstream throughput.
- **Large batches (50+ URLs)**: Keep concurrency around `3` to `4` to prevent upstream request throttling and maintain consistent residential proxy distribution.

#### Proxy Selection

Always utilize Apify residential proxies (`RESIDENTIAL`). Instagram aggressively throttles datacenter IP ranges. Residential proxies ensure that requests originate from legitimate consumer broadband addresses, providing reliable data retrieval.

***

### Supported Scope & Limitations

#### Supported Media Types

- Standard single-photo feed posts (`/p/`)
- Multi-photo and mixed carousels (`/p/`)
- Vertical video Reels (`/reel/` or `/reels/`)
- IGTV / long-form video posts (`/tv/`)
- Direct alphanumeric shortcodes
- Numeric media identifiers

#### Explicit Limitations

- **Private Profiles**: The Actor cannot extract posts from private profiles that require an approved follower relationship.
- **Expired Stories**: This Actor is designed for permanent feed posts and Reels; temporary 24-hour Stories are not supported.
- **Deleted or Age-Gated Content**: Content that has been removed by the author or restricted behind regional/age gates cannot be accessed anonymously.
- **Viewer-Specific Metrics**: Certain metrics like non-public insights (impressions, reach, detailed audience demographics) are visible only to the account owner via Instagram Professional Dashboard and cannot be scraped publicly.

***

### Troubleshooting & Common Solutions

#### 1. Zero Items Returned / All Attempts Failed

- **Cause**: The supplied URL might be a private account post, or the shortcode is invalid.
- **Solution**: Open the post URL in an incognito browser window without logging in. If the post requires logging in to view, it cannot be scraped. Verify that the URL contains a valid public shortcode.

#### 2. Upstream Throttling / HTTP 429

- **Cause**: Too many rapid requests originating from the same proxy session.
- **Solution**: Ensure residential proxies are enabled in your input configuration (`useApifyProxy: true`, `apifyProxyGroups: ["RESIDENTIAL"]`). Decrease `maxConcurrency` to `2` to space requests steadily.

#### 3. Missing Audio Title on Reels

- **Cause**: Not all Reels use licensed commercial music; many use raw unedited camera audio or sounds that do not have catalog metadata attached.
- **Solution**: This is expected platform behavior when the original creator does not select a registered audio asset from Instagram's music library.

#### 4. Input URL Parsing Issues

- **Cause**: Unusual tracking parameters or mobile redirect URLs.
- **Solution**: The Actor automatically strips query parameters, but ensuring you provide canonical URLs (e.g. `https://www.instagram.com/p/SHORTCODE/`) guarantees instantaneous matching.

***

### Frequently Asked Questions (FAQ)

#### Does this Actor require an Instagram account or login?

No. This Actor operates entirely without login credentials, cookies, or account access tokens. You do not need to risk your personal or brand Instagram accounts.

#### Can I scrape Instagram Reels as well as regular posts?

Yes. Both standard feed posts (`/p/`) and Instagram Reels (`/reel/`) are fully supported. The Actor automatically identifies the content type and returns appropriate media formats and metrics.

#### What happens if I paste an invalid or deleted URL?

The Actor logs a warning indicating that the item was not found or is private, skips the item, and continues processing the remaining valid URLs in your batch without crashing.

#### Can I download the actual MP4 video files?

The Actor provides the direct `media_url` pointing to the MP4 video stream on Instagram content delivery networks (CDNs). You can download or stream the video file directly using this URL.

#### How fresh is the data?

All data is extracted in real-time at the moment the Actor executes. Engagement numbers, like counts, and comments reflect live public figures at run time.

#### Can I schedule automatic daily or weekly runs?

Yes. In Apify Console, navigate to the **Schedules** tab. You can configure cron-based schedules (e.g., daily at midnight) to monitor a static list of URLs or trigger dynamic batch runs via webhooks.

#### Are there limits on how many URLs I can scrape in a single run?

There is no hard platform limit. You can process hundreds or thousands of URLs in a single run. For very large runs (500+ URLs), ensure your Actor memory is set to at least 1,024 MB or 2,048 MB to handle dataset buffering smoothly.

***

### Compliance & Responsible Use

- **Public Data Only**: This Actor exclusively accesses publicly available content accessible without authentication.
- **Respect Rate Limits**: Avoid running excessive concurrency against upstream platforms. Maintain steady, polite request rates.
- **Personal Data Considerations**: Always comply with local data protection regulations (such as GDPR, CCPA, and relevant privacy laws) when storing, analyzing, or publishing personal identifiers like creator usernames or display names.
- **Copyright & Intellectual Property**: Media assets extracted through this Actor belong to their respective creators and copyright holders. Ensure you possess appropriate rights or fair use justifications before republishing or redistributing copyrighted video or photographic material.

# Actor input Schema

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

One or more Instagram post or Reel URLs, shortcodes, or media IDs (e.g., https://www.instagram.com/p/..., https://www.instagram.com/reel/..., or shortcode). Enter one per line.

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

Select proxies to be used by the Actor. Rotating residential proxies are recommended for scraping Instagram.

## `maxConcurrency` (type: `integer`):

Maximum number of concurrent requests to process URLs steadily without rate limits.

## Actor input object example

```json
{
  "postUrls": [
    "https://www.instagram.com/p/DdFFajKABI4/"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "maxConcurrency": 3
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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/p/DdFFajKABI4/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("karamelo/instagram-post-reel-details").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/p/DdFFajKABI4/"] }

# Run the Actor and wait for it to finish
run = client.actor("karamelo/instagram-post-reel-details").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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/p/DdFFajKABI4/"
  ]
}' |
apify call karamelo/instagram-post-reel-details --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,karamelo/instagram-post-reel-details"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

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