# Instagram Post Scraper - Details by Post or Reel URL (`benthepythondev/instagram-post-details-scraper`) Actor

Paste Instagram post or reel links and get each one as a row without login: caption, date, likes, comments, author, tagged users, location, audio, carousel slides and the video file link.

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

## Pricing

from $1.70 / 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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 🔗 Instagram Post Scraper - Details by Post or Reel URL

Paste Instagram post or reel links and get each one back as a row: caption, date, likes, comment count, author, hashtags, mentions, tagged users, collaborators, location, audio, carousel slides and the video file link. No login, no cookies, no API key. Export to JSON/CSV/Excel, run on a schedule, call via API, or connect to Make, Zapier or n8n.

### 🔎 What is the Instagram Post Scraper?

It is an Apify Actor for the case where you already have the links: a campaign report, a list of sponsored posts, links collected from another tool. It asks Instagram for each post the same way its own website does for a visitor who is not logged in. No browser is opened and no page is loaded, so four links take about seven seconds.

Links to posts (`/p/…`), reels (`/reel/…`) and old TV posts (`/tv/…`) work, with or without tracking parameters. A bare shortcode works too. Links that lead nowhere are listed in the status message and cost nothing.

#### What data does it extract?

- **Post:** `id`, `code`, `url`, `caption`, `posted_at`, `media_type` (`image`, `video` or `carousel`), `is_edited`
- **Engagement:** `likes`, `comments`, `likes_hidden`
- **Author:** `username`, `full_name`, `author_id`, `is_verified`
- **People and places:** `mentions[]`, `tagged_users[]`, `coauthors[]`, `location_name`, `location_id`
- **Content:** `hashtags[]`, `image_url`, `video_url`, `slide_urls[]`, `alt_text`
- **Audio (reels):** `music_title`, `music_artist`

### ⬇️ Input

| Field | Type | What it does |
|---|---|---|
| `postUrls` | array | Links to posts or reels, or bare shortcodes |

#### Example input

```json
{
  "postUrls": [
    "https://www.instagram.com/p/Dd4oFPuF27g/",
    "https://www.instagram.com/reel/Dd9Etk7R91I/"
  ]
}
```

### ⬆️ Output

A real reel row (media links shortened):

```json
{
  "record_type": "reel",
  "id": "3998372768386637128",
  "code": "Dd9Etk7R91I",
  "url": "https://www.instagram.com/reel/Dd9Etk7R91I/",
  "username": "nike",
  "full_name": "Nike",
  "author_id": "13460080",
  "is_verified": true,
  "caption": "*Just @caitlinclark22 making it look easy. It’s really that simple.",
  "posted_at": "2026-10-01T14:00:30+00:00",
  "likes": 38426,
  "comments": 1106,
  "media_type": "video",
  "image_url": "https://scontent-iad3-2.cdninstagram.com/v/t51.82787-15/833083545_1866...",
  "video_url": "https://scontent-iad6-1.cdninstagram.com/o1/v/t2/f2/m86/AQPC_ZkhvpYJv1...",
  "slide_urls": [],
  "hashtags": [],
  "mentions": [
    "caitlinclark22"
  ],
  "tagged_users": [
    "nikebasketball",
    "caitlinclark22"
  ],
  "coauthors": [
    "nikebasketball"
  ],
  "location_name": null,
  "location_id": null,
  "music_title": "Original audio",
  "music_artist": "nike",
  "alt_text": "Video by Nike on October 01, 2026. May be an image of child, smiling, football, basketball, basketball jersey, backboard, sports equipment, ball, basketball court and text.",
  "is_edited": false,
  "likes_hidden": false,
  "scraped_at": "2026-10-02T21:33:36.875516+00:00"
}
```

Media links are signed by Instagram and stop working after some hours.

### 💰 How much does it cost?

You pay per saved post, plus a tiny start fee per run.

| Apify plan | Price per 1,000 posts |
|---|---|
| Free | $2.00 |
| Starter | $1.90 |
| Scale | $1.80 |
| Business and above | $1.70 |

Links that return nothing cost nothing. Set **Maximum cost per run** in the run options and the Actor stops saving at that amount.

### 💡 Use cases

- 📑 **Campaign reporting:** likes and comments for every sponsored post in a campaign, refreshed on a schedule.
- 🔁 **Tracking over time:** run the same links daily and chart how engagement grows.
- 🧾 **Verification:** confirm that a post is live, who published it, who is tagged and when it went up.
- 🎞️ **Media collection:** direct links to the video, the cover and every carousel slide.

### ❓ FAQ

**Do I need an Instagram account or cookies?** No. The Actor never logs in.

**Does it return play counts for reels?** No. Instagram shows play counts on an account's reels tab, not on the reel itself. The [Instagram Reels Scraper](https://apify.com/benthepythondev/instagram-reels-scraper) returns them.

**How fast is it?** One to two posts per second. Reels take longer than pictures, because Instagram needs a few seconds to answer for a video.

**What happens with deleted, private or mistyped links?** They are skipped and listed in the status message and the `SUMMARY` record. The run still succeeds with the other links.

**Can I get the comments of these posts?** Pass the same links to the [Instagram Comments Scraper](https://apify.com/benthepythondev/instagram-comments-scraper).

**Can I get all posts of an account instead?** Use the [Instagram Posts Scraper](https://apify.com/benthepythondev/instagram-posts-scraper) with the username.

**Is it legal to scrape Instagram posts?** The Actor reads only what Instagram shows publicly to any visitor and does not log in. Posts contain personal data, so GDPR, CCPA and similar rules apply to how you store and use them, and Meta's terms apply to you as well. If in doubt, ask a lawyer.

**Something is missing or broken?** Open an issue on the Actor's Issues tab with the run ID. Issues are answered within one business day.

### 🔗 You might also like

- [Instagram Posts Scraper](https://apify.com/benthepythondev/instagram-posts-scraper)
- [Instagram Reels Scraper](https://apify.com/benthepythondev/instagram-reels-scraper)
- [Instagram Comments Scraper](https://apify.com/benthepythondev/instagram-comments-scraper)
- [Instagram Profile Scraper](https://apify.com/benthepythondev/instagram-profile-scraper)
- [Threads Scraper](https://apify.com/benthepythondev/threads-public-scraper)

**Keywords:** instagram post scraper, instagram post details, instagram post by url, instagram reel details, instagram post data api, scrape instagram post url, instagram likes by url, instagram post analytics, instagram campaign reporting, instagram media links, instagram without login, instagram post to json, instagram reel scraper by url, instagram api alternative, instagram post lookup

# Actor input Schema

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

Links such as https://www.instagram.com/p/DeAZ0uAgNuA/ or https://www.instagram.com/reel/DdG4RIxIPyf/. A bare shortcode works too.

## Actor input object example

```json
{
  "postUrls": [
    "https://www.instagram.com/p/DeAZ0uAgNuA/",
    "https://www.instagram.com/reel/DdG4RIxIPyf/"
  ]
}
```

# Actor output Schema

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

No description

## `summary` (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/DeAZ0uAgNuA/",
        "https://www.instagram.com/reel/DdG4RIxIPyf/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("benthepythondev/instagram-post-details-scraper").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/DeAZ0uAgNuA/",
        "https://www.instagram.com/reel/DdG4RIxIPyf/",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("benthepythondev/instagram-post-details-scraper").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/DeAZ0uAgNuA/",
    "https://www.instagram.com/reel/DdG4RIxIPyf/"
  ]
}' |
apify call benthepythondev/instagram-post-details-scraper --silent --output-dataset

```

## MCP server setup

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

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/cu4EyDhi7F6xGaIVw/builds/IK9pUNerknFyKR7Qo/openapi.json
