# Instagram Post /Reel Scraper — No Login, No Cookies, No API Key (`devil_port369-owner/instagram-posts`) Actor

Scrape any public Instagram post or Reel by URL. Extract likes, comments, captions, hashtags, music, tagged users & video links. No login. No API key. Clean JSON output.

- **URL**: https://apify.com/devil\_port369-owner/instagram-posts.md
- **Developed by:** [DataFusionX](https://apify.com/devil_port369-owner) (community)
- **Categories:** Lead generation, Social media, SEO tools
- **Stats:** 10 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $2.00 / 1,000 results

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

## 📸 Instagram Post & Reel Scraper — No Login. No Cookies. No API Key.

> **Scrape any public Instagram post or Reel in seconds.** Just paste the URLs — get likes, comments, captions, hashtags, tagged users, music, video links, and 25+ fields per post. Export to JSON, CSV, or pipe directly into your pipeline.

***

### 🏆 Why This Actor Beats the Rest

| Feature | This Actor | Others |
|---|---|---|
| No login / cookies required | ✅ | ⚠️ Often required |
| No Instagram API key needed | ✅ | ⚠️ Often required |
| Direct post URL input | ✅ | ❌ Profile-only |
| Music / audio metadata | ✅ | ❌ Rarely included |
| Tagged users extraction | ✅ | ❌ |
| Reel + Image + Carousel | ✅ | ⚠️ Partial |
| Clean flat JSON output | ✅ | ⚠️ Nested / messy |
| Concurrency-safe scraping | ✅ | ⚠️ |

***

### 🚀 What Is This Actor?

**Instagram Post & Reel Scraper** is a fast, reliable Apify Actor that extracts structured data from any public Instagram post or Reel — directly from a list of post URLs. No account. No session cookie. No Graph API approval.

Built for:

- 📊 **Social media analysts** tracking post-level engagement
- 🤳 **Influencer marketers** auditing content performance
- 🧠 **AI/ML engineers** building training datasets from social content
- 📰 **Journalists & researchers** monitoring public campaigns
- 🛒 **E-commerce brands** tracking UGC and competitor posts

***

### ⚡ Input — Dead Simple

Just give it a list of Instagram post URLs. That's it.

```json
{
  "postURLs": [
    "https://www.instagram.com/p/DW_gdCpDYeL/",
    "https://www.instagram.com/reel/DW_gdCpDYeL/",
    "https://www.instagram.com/tv/DW_gdCpDYeL/"
  ]
}
```

**Supported URL formats:**

- `instagram.com/p/{shortcode}/`
- `instagram.com/reel/{shortcode}/`
- `instagram.com/tv/{shortcode}/`
- Raw shortcodes (e.g., `DW_gdCpDYeL`)

***

### 📦 Output — 25+ Fields Per Post

Each result is a clean, flat JSON object. No nested nightmares.

```json
{
  "MediaType": "GraphVideo",
  "MediaId": "3872956937751332747",
  "postShortCode": "DW_gdCpDYeL",
  "postURL": "https://www.instagram.com/p/DW_gdCpDYeL",
  "productType": "clips",
  "isVideo": true,
  "hasAudio": true,
  "isDashEligible": true,
  "numberOfQualities": 2,
  "displayURL": "https://instagram.fktm1-1.fna.fbcdn.net/v/t51.71878-15/670011908_...",
  "videoURL": "https://instagram.fktm19-1.fna.fbcdn.net/o1/v/t2/f2/m86/AQNs6r74_...",
  "dimensionWidth": 540,
  "dimensionHeight": 960,
  "totalLikes": 19,
  "totalComments": 3,
  "videoViewCount": null,
  "mediaRepostCount": null,
  "postCaption": "Jomsom Mustang: where roads meet heaven 🏍️ #jomsoommustang❤️ #mustang",
  "hashtags": ["#jomsoommustang❤️", "#mustang"],
  "taggedUsers": ["dr_saroz_bhattarai_lost", "sharmasaurav1", "niroz.subedi"],
  "coauthors": [],
  "ownerUserID": "3665256531",
  "ownerUsername": "karkimanoj20",
  "ownerFullName": "Karki Manoj",
  "isVerified": false,
  "isPrivateAccount": false,
  "isPaidPartnership": false,
  "commentsDisabled": null,
  "likesDisabled": false,
  "viewerCanReshare": true,
  "captionIsEdited": false,
  "location": "",
  "locationID": "",
  "postDate": "2025-04-09 12:48",
  "takenAtTimestamp": 1775912929,
  "musicTitle": "Mountain High",
  "musicArtist": "Bipul Chettri",
  "audioType": "licensed_music",
  "previewComments": [
    { "username": "karkimanoj20", "text": "@weirdbiks guys haru xan ni dai 😍" },
    { "username": "weirdbiks", "text": "Sakcha ta kasaile🔥👏❤️" }
  ]
}
```

***

### 🗂️ Full Output Schema

| Field | Type | Description |
|---|---|---|
| `MediaType` | string | `GraphImage`, `GraphVideo`, or `GraphSidecar` |
| `MediaId` | string | Instagram internal media ID |
| `postShortCode` | string | Post shortcode (used in URL) |
| `postURL` | string | Full post URL |
| `productType` | string | `clips`, `feed`, `igtv` |
| `isVideo` | boolean | True if post is a video/reel |
| `hasAudio` | boolean | True if post has audio |
| `isDashEligible` | boolean | Supports adaptive streaming |
| `numberOfQualities` | integer | Number of video quality options |
| `displayURL` | string | Best-quality thumbnail image URL |
| `videoURL` | string | Direct MP4 video URL |
| `dimensionWidth` | integer | Video/image width in pixels |
| `dimensionHeight` | integer | Video/image height in pixels |
| `totalLikes` | integer | Like count (null if hidden by owner) |
| `totalComments` | integer | Total comment count |
| `videoViewCount` | integer | View count (Reels/videos) |
| `mediaRepostCount` | integer | Repost count (if available) |
| `postCaption` | string | Full post caption text |
| `hashtags` | array\[string] | Hashtags extracted from caption |
| `taggedUsers` | array\[string] | Usernames tagged in the post |
| `coauthors` | array\[string] | Collab/coauthor usernames |
| `ownerUserID` | string | Owner's Instagram user ID |
| `ownerUsername` | string | Owner's Instagram handle |
| `ownerFullName` | string | Owner's display name |
| `isVerified` | boolean | Whether the account is verified |
| `isPrivateAccount` | boolean | Whether the account is private |
| `isPaidPartnership` | boolean | Paid partnership label present |
| `commentsDisabled` | boolean | Whether comments are turned off |
| `likesDisabled` | boolean | Whether like count is hidden |
| `viewerCanReshare` | boolean | Whether the post can be reshared |
| `captionIsEdited` | boolean | Whether caption was edited after posting |
| `location` | string | Location name (if tagged) |
| `locationID` | string | Location ID |
| `postDate` | string | Human-readable post datetime |
| `takenAtTimestamp` | integer | Unix timestamp of post |
| `musicTitle` | string | Background music track title |
| `musicArtist` | string | Background music artist name |
| `audioType` | string | `licensed_music` or `original_sound` |
| `previewComments` | array\[object] | Latest 2 comments with username + text |

***

### 🎯 Use Cases

#### 🤳 Influencer Marketing & Auditing

Paste 50 influencer post URLs → get likes, views, tagged brands, music used, and caption hashtags in one run. Audit authenticity by cross-referencing engagement ratios instantly.

#### 📊 Competitor Intelligence

Track competitor Instagram campaigns post by post. Monitor which hashtags they ride, what music they're using, and how audiences engage — all without ever opening Instagram.

#### 🧠 AI Training Data Collection

Need structured social media data for NLP, computer vision, or recommendation models? This Actor delivers clean, flat JSON at scale — ideal for building training corpora.

#### 📰 Journalism & Research

Monitor public figures, political campaigns, or brand accounts. Extract timestamped captions and engagement metrics for archival or trend analysis.

#### 🛒 UGC & Brand Monitoring

Find posts that tag your brand or products. Extract tagged users, captions, and media URLs for UGC campaigns — without manual scrolling.

#### 🎵 Music & Trend Analytics

Extract `musicTitle` and `musicArtist` across hundreds of Reels to identify trending audio before it peaks. Perfect for content creators and music marketing teams.

***

### 🔧 How to Use

#### Step 1 — Open the Actor

Go to the Actor page in the Apify Store and click **Try for free**.

#### Step 2 — Paste Your URLs

In the **Input** tab, add your list of Instagram post or Reel URLs:

```json
{
  "postURLs": [
    "https://www.instagram.com/p/DW_gdCpDYeL/",
    "https://www.instagram.com/reel/CxampleCode123/"
  ]
}
```

#### Step 3 — Click Start

Hit **Start** and the Actor begins scraping. Watch the live logs for real-time progress per post, including like counts and owner handles as each one completes.

#### Step 4 — Download Your Data

Go to the **Dataset** tab and export as **JSON**, **CSV**, **XML**, or **Excel** — ready for Google Sheets, BI dashboards, or direct API consumption.

> ⏱️ Average run time: **< 5 seconds per post**

***

### 🔌 Integrations

Connect this Actor to your existing stack in minutes:

| Tool | Use Case |
|---|---|
| **Google Sheets** | Auto-populate post data into spreadsheets |
| **Make (Integromat)** | Trigger workflows when new post data arrives |
| **Zapier** | Route results to Slack, Airtable, Notion, or CRM |
| **Airbyte** | Stream into data warehouses (BigQuery, Snowflake) |
| **Webhooks** | Get notified instantly when each run completes |
| **Apify API** | Trigger runs and fetch results programmatically |

#### API Example (Python)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_API_TOKEN")

run_input = {
    "postURLs": [
        "https://www.instagram.com/p/DW_gdCpDYeL/",
    ]
}

run = client.actor("YOUR_ACTOR_ID").call(run_input=run_input)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

#### API Example (Node.js)

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

const client = new ApifyClient({ token: 'YOUR_APIFY_API_TOKEN' });

const run = await client.actor('YOUR_ACTOR_ID').call({
  postURLs: ['https://www.instagram.com/p/DW_gdCpDYeL/'],
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

***

### ❓ FAQ

**Does this require an Instagram account or login?**
No. This Actor scrapes only publicly available data. No account, session cookie, or credentials needed.

**Does it work with Reels?**
Yes — Reels, feed posts, carousels, and IGTV are all supported. Music metadata (`musicTitle`, `musicArtist`) is extracted specifically for Reels.

**Can it scrape private accounts?**
No. Only public posts are accessible. Private account content is not exposed in public endpoints.

**What if likes are hidden on a post?**
The `totalLikes` field returns `null`. Instagram hides this at the post owner's discretion.

**How fast is it?**
Typically under 5 seconds per post. Concurrency is controlled via semaphore-gated async threading to maintain throughput without triggering rate limits.

**Can I schedule it to run automatically?**
Yes. Use Apify's built-in **Schedules** feature to run this Actor on any cron interval — daily, weekly, or hourly.

**What export formats are available?**
JSON, CSV, Excel (XLSX), and XML — all available from the Dataset tab with one click.

**Is there a free tier?**
Yes. Apify's free plan includes $5/month in credits. Free users are limited to the first 10 results per run. Subscribe for unlimited results.

***

### 📋 Input Reference

```json
{
  "postURLs": ["string"]
}
```

| Parameter | Type | Required | Description |
|---|---|---|---|
| `postURLs` | array\[string] | ✅ Yes | List of Instagram post/reel/tv URLs or raw shortcodes |

***

### ⚠️ Limitations

- **Public posts only** — private accounts and stories are not accessible
- **Like count** may be `null` if the post owner has hidden it
- **View count** may be `null` for image posts (only available on videos/reels)
- **Repost count** is a newer Instagram metric and may not always be populated
- Instagram may throttle high-volume requests — the Actor handles this with built-in retry logic and randomized user agents

***

### ⚖️ Legal & Ethical Use

This Actor collects only **publicly available** data from Instagram — the same data visible to any unauthenticated visitor in a browser. No private data, DMs, or behind-login content is accessed.

Users are responsible for complying with:

- [Instagram Terms of Use](https://help.instagram.com/581066165581870)
- [Meta's Automated Data Collection Terms](https://developers.facebook.com/terms/)
- Applicable privacy laws in your jurisdiction (GDPR, CCPA, etc.)

> ⚠️ **Disclaimer:** This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Instagram or Meta Platforms, Inc. All trademarks are the property of their respective owners.

***

### 🐛 Issues & Feature Requests

Found a bug or want a new feature? Open an issue in the **Issues** tab. Response time is typically under 24 hours.

***

### 🔗 Related Actors

- 🔍 **Instagram Profile Scraper** — Bio, follower count, and profile metadata
- 💬 **Instagram Comments Scraper** — All comments from a post
- \#️⃣ **Instagram Hashtag Scraper** — Discover posts by hashtag
- 📈 **Instagram Follower Scraper** — Analyze follower lists of public accounts

***

*Last updated: May 2026 · Built with ❤️ for data professionals, marketers, and researchers worldwide.*

# Actor input Schema

## `postURLs` (type: `array`):

URLs to start with

## Actor input object example

```json
{
  "postURLs": [
    "https://www.instagram.com/p/DXOPLO7jRBW/"
  ]
}
```

# Actor output Schema

## `results` (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/DXOPLO7jRBW/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("devil_port369-owner/instagram-posts").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/DXOPLO7jRBW/"] }

# Run the Actor and wait for it to finish
run = client.actor("devil_port369-owner/instagram-posts").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 '{
  "postURLs": [
    "https://www.instagram.com/p/DXOPLO7jRBW/"
  ]
}' |
apify call devil_port369-owner/instagram-posts --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=devil_port369-owner/instagram-posts",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/aHiAjRIVe4F2M1P8M/builds/FKxUaI1doQmWFgJbO/openapi.json
