# Instagram Post Scraper (`automly/instagram-post-details-scraper`) Actor

Scrape Instagram posts and reels by URL: caption, likes, comment count, owner, image and video URLs, carousel items, tagged users, collaborators, location and the latest comments. Real-time API. No login.

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

## Pricing

from $1.00 / 1,000 posts

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

### What is Instagram Post Scraper?

**Instagram Post Scraper** is a tool that lets you **scrape Instagram posts and reels from their links**: caption, likes, comment count, publish date, owner, image and video download links, carousel items, tagged users, collaborators, location, hashtags, mentions and the latest comments. Paste post or reel links, click **Start**, and download the results as Excel, CSV or JSON.

- ⚡ **Speed:** about 5,000 posts per minute (1,000 posts in 11 seconds in our test)
- 🔗 **Any link:** posts, reels and carousels
- 💬 **Latest comments:** optionally include up to 15 comments with each post
- 🔓 **No login:** no Instagram account, cookies or API key needed
- 💸 **Free to try:** the $5 of free usage every Apify account gets each month covers about 5,000 posts

### What can Instagram Post Scraper do?

- Scrape **likes, comment count and caption** of any public Instagram post or reel
- Get **video download links** for reels and videos, and **image links** for photos
- Get every item of a **carousel** post
- Extract **hashtags, mentions, tagged users and collaborators**
- Get the **location** of a post
- Include the **latest comments** shown under each post
- Get results in seconds over the **real-time API**, without starting a run
- Export to Excel, CSV, JSON, HTML or XML, or send them to Google Sheets, Make, Zapier and more

### What data can you extract from an Instagram post?

| | | |
|---|---|---|
| 📝 Caption | ❤️ Number of likes | 💬 Number of comments |
| 📅 Publish date and time | 👤 Owner username and name | ✅ Owner verified |
| 🖼️ Image link | 🎬 Video link | 🗂️ Carousel items |
| #️⃣ Hashtags | @ Mentions | 🏷️ Tagged users |
| 🤝 Collaborators | 📍 Location | 💬 Latest comments |

### How to scrape Instagram posts from links

1. [Create a free Apify account](https://console.apify.com/sign-up) (no credit card needed).
2. Open **Instagram Post Scraper**.
3. Paste one or more **post or reel links**, one per line.
4. Choose how many of the latest comments to include, then click **Start**.
5. When the run finishes, download your posts as Excel, CSV, JSON, HTML or XML.

### How much does it cost to scrape Instagram posts?

You pay **$1.00 per 1,000 posts** (plus $0.00005 when a run starts), and only for the posts you get. For example, 1,000 post links cost $1.00. Every Apify account gets **$5 of free usage each month**, so you can try it at no cost. See the **Pricing** tab for the current prices; paid Apify plans get the same price per result.

### ⬇️ Input

Links can be posts (`https://www.instagram.com/p/DdG4RIxIPyf/`), reels (`https://www.instagram.com/reel/DdG4RIxIPyf/`) or just the code at the end of the link (`DdG4RIxIPyf`).

| Setting | What it does |
|---|---|
| Post or reel URLs | The posts and reels to scrape |
| Latest comments per post | How many of the comments shown under each post to include (0 to 15, default 0) |

Example:

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

### ⬆️ Output

You get one row per post. You can view them as a table in Apify Console or download them as Excel, CSV, JSON, HTML or XML.

```json
{
  "id": "3983118388705688735",
  "shortCode": "DdG4RIxIPyf",
  "url": "https://www.instagram.com/reel/DdG4RIxIPyf/",
  "mediaType": "Video",
  "isReel": true,
  "caption": "Presented by @Rolex. Welcome to Africa 🌍 Africa Earth’s Wild Home takes you deep into...",
  "hashtags": ["Rolex", "PerpetualPlanet"],
  "mentions": ["Rolex", "wunmimosaku", "DisneyPlus", "hulu"],
  "createdAt": "2026-09-10T13:00:14Z",
  "likes": 76876,
  "comments": 482,
  "ownerUsername": "natgeo",
  "ownerFullName": "National Geographic",
  "ownerVerified": true,
  "coauthors": ["rolex"],
  "imageUrl": "https://scontent-lga3-2.cdninstagram.com/v/t51.82787-15/8025...jpg",
  "videoUrl": "https://scontent-lga3-3.cdninstagram.com/o1/v/t2/f2/m86/AQPD...mp4",
  "width": 720,
  "height": 1280,
  "latestComments": [
    {"id": "17900698296656672", "text": "Africa is the next season of human life age in future century",
     "createdAt": "2026-09-24T21:47:21Z", "likes": 1, "ownerUsername": "farshidilaty", "ownerVerified": false}
  ],
  "source": "https://www.instagram.com/p/DdG4RIxIPyf/",
  "fetchedAt": "2026-09-25T00:30:56Z"
}
```

Each run also saves a short report that lists how many posts it covered, and any post it could not scrape with the reason (for example, a deleted or private post).

### How can I use Instagram post data?

- **Campaign reporting:** collect likes and comment counts for every post in an influencer campaign
- **Content research:** compare captions, hashtags and formats of top-performing posts
- **Media archiving:** save image and video links of posts you need to keep
- **Brand monitoring:** see who is tagged, who collaborated and where a post was made
- **Dashboards:** refresh the numbers of a fixed list of posts on a schedule

### Real-time Instagram post API

Need post data right away inside your app? Call the actor's API and get the posts back in the response, without starting a run:

```
GET https://<your-actor-standby-url>/post?url=https://www.instagram.com/p/DdG4RIxIPyf/&latestComments=5
Authorization: Bearer <YOUR_APIFY_TOKEN>
```

You can also run the actor from your own code with the [Apify API](https://docs.apify.com/api/v2) or the Python and JavaScript clients:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("automly/instagram-post-details-scraper").call(run_input={
    "postUrls": ["https://www.instagram.com/p/DdG4RIxIPyf/"],
})
for post in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(post["url"], post["likes"], post["comments"])
```

### ❓FAQ

#### How much does it cost to scrape Instagram posts?

You pay only for the posts you get, per 1,000 posts. See the **Pricing** tab for the current price. Every Apify account gets $5 of free usage each month, so you can try it at no cost.

#### How many posts can I scrape at once?

As many as you like. Add all the links to **Post or reel URLs**.

#### Can I get all the comments of a post?

This scraper includes up to 15 of the latest comments with each post. For all comments, use [Instagram Comments Scraper](https://apify.com/automly/instagram-comments-scraper).

#### Why is the view count of reels missing?

Instagram only shows reel play counts to logged-in users, so this scraper does not include them.

#### Do I need an Instagram account?

No. You don't need an Instagram account, cookies or an API key.

#### Can I scrape posts from private accounts?

No. Only public posts can be scraped. Private, deleted or mistyped posts are skipped and listed in the run report.

#### How long do the image and video links work?

Instagram's media links expire after a few days. Download the files you need soon after the run.

#### Can I connect Instagram Post Scraper to other tools or AI agents?

Yes. Start runs and download results with the Apify API or the Python and JavaScript clients, send results to Make, Zapier, n8n, Google Sheets or Slack with Apify integrations and webhooks, or let AI assistants and agents run it through the Apify MCP server at [mcp.apify.com](https://mcp.apify.com).

#### Is it legal to scrape Instagram posts?

This scraper only collects posts that people chose to publish publicly. It does not collect private data such as email addresses or phone numbers. Posts can still contain personal data, which may be protected by laws such as GDPR, so only scrape it for a legitimate reason and ask a lawyer if you are unsure. You can read more in [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

Instagram Post Scraper is an independent tool. It is not affiliated with, endorsed by or sponsored by Instagram or Meta.

#### Something isn't working. What should I do?

Open the **Issues** tab and tell us the post link and what you expected. We usually reply within a day.

### Scrape more Instagram data

| Actor | What you get |
|---|---|
| [Instagram Posts & Reels Scraper](https://apify.com/automly/instagram-profile-posts-scraper) | All posts and reels of a profile |
| [Instagram Comments Scraper](https://apify.com/automly/instagram-comments-scraper) | Every comment on a post or reel, newest first |
| [Instagram Profile Scraper](https://apify.com/automly/instagram-profile-data-scraper) | Bio, followers, following and post count of any profile |

### ⭐ Your feedback

Ideas, missing fields or problems: open the **Issues** tab and we'll take a look. If Instagram Post Scraper saved you time, a short review on the **Reviews** tab helps other people find it.

# Actor input Schema

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

Links to Instagram posts or reels, e.g. https://www.instagram.com/p/DdG4RIxIPyf/ or https://www.instagram.com/reel/DdG4RIxIPyf/.

## `latestComments` (type: `integer`):

How many of the comments shown under each post to include (up to 15). For all comments use Instagram Comments Scraper.

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

Proxy settings. The default works for most runs.

## Actor input object example

```json
{
  "postUrls": [
    "https://www.instagram.com/p/DdG4RIxIPyf/"
  ],
  "latestComments": 0,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

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

No description

## `report` (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/DdG4RIxIPyf/"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("automly/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/DdG4RIxIPyf/"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("automly/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/DdG4RIxIPyf/"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call automly/instagram-post-details-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automly/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/TmCUUdgKBt6c1YHux/builds/GJoqWITJaNUfsOvbQ/openapi.json
