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

Scrape Instagram posts & reels with complete data including captions, likes, comments, tagged users, locations, and more. Get detailed engagement metrics, media URLs, and user information. Perfect for social media analysis and influencer research.

- **URL**: https://apify.com/louisdeconinck/instagram-post-scraper.md
- **Developed by:** [Louis Deconinck](https://apify.com/louisdeconinck) (community)
- **Categories:** Social media, Automation, Lead generation
- **Stats:** 180 total users, 0 monthly users, 100.0% runs succeeded, 10 bookmarks
- **User rating**: 1.05 out of 5 stars

## Pricing

$19.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

Scrape Instagram posts & reels. Get detailed information about each post including captions, likes, comments, tagged users, locations, and more.

### 🎯 Use Cases

- **Social Media Analysis:** Track and analyze Instagram content strategies
- **Influencer Research:** Gather data about influencer posts and engagement
- **Content Monitoring:** Keep track of branded content and partnerships
- **Location Analysis:** Study posts from specific locations
- **Engagement Tracking:** Monitor post performance and user engagement

### ✨ Features

- **Complete Post Data:** Captures all essential post information including media URLs, captions, and engagement metrics
- **Tagged Users:** Extracts information about users tagged in posts
- **Location Data:** Includes detailed location information when available
- **Engagement Metrics:** Provides likes and comments counts
- **Post Metadata:** Includes information about partnerships, affiliates, and post settings

### 📤 Output

The scraper provides detailed information about each Instagram post:

- `id`: Unique identifier of the post
- `shortcode`: Instagram shortcode for the post (used in post URL)
- `thumbnail_src`: URL of the post thumbnail
- `height`: Height of the media
- `width`: Width of the media
- `display_url`: URL of the post media
- `has_audio`: Whether the post has audio
- `video_url`: URL of the video if the post is a video
- `video_view_count`: Number of views for the video
- `video_play_count`: Number of plays for the video
- `video_duration`: Duration of the video in seconds
- `music_artist`: Name of the music artist if music is attributed
- `music_song`: Name of the song if music is attributed
- `music_id`: ID of the music if music is attributed
- `is_video`: Whether the post is a video
- `tagged_users`: Array of users tagged in the post, containing:
  - `full_name`: The full name of the tagged user
  - `id`: The ID of the tagged user
  - `is_verified`: Whether the tagged user is verified
  - `profile_pic_url`: The URL of the tagged user's profile picture
  - `username`: The username of the tagged user
- `owner_id`: ID of the post owner
- `owner_username`: Username of the post owner
- `owner_is_verified`: Whether the post owner is verified
- `owner_profile_pic_url`: URL of the post owner's profile picture
- `owner_full_name`: Full name of the post owner
- `owner_is_embeds_disabled`: Whether embeds are disabled for the owner
- `owner_is_private`: Whether the owner's profile is private
- `owner_is_unpublished`: Whether the owner's profile is unpublished
- `owner_posts_count`: Number of posts by the owner
- `owner_followers_count`: Number of followers of the owner
- `sidecar_children`: Array of sidecar children if the post is a carousel, containing:
  - `id`: ID of the sidecar child
  - `shortcode`: Shortcode of the sidecar child
  - `height`: Height of the sidecar child media
  - `width`: Width of the sidecar child media
  - `display_url`: URL of the sidecar child media
  - `is_video`: Whether the sidecar child is a video
- `caption`: Post caption text
- `caption_is_edited`: Whether the caption has been edited
- `like_and_view_counts_disabled`: Whether like and view counts are disabled
- `comment_count`: Number of comments
- `comments`: Array of comments on the post, containing:
  - `id`: ID of the comment
  - `text`: Text of the comment
  - `created_at`: Timestamp when the comment was created
  - `owner_id`: ID of the comment owner
  - `owner_is_verified`: Whether the comment owner is verified
  - `owner_profile_pic_url`: URL of the comment owner's profile picture
  - `owner_username`: Username of the comment owner
  - `likes_count`: Number of likes on the comment
- `comments_disabled`: Whether comments are disabled
- `taken_at_timestamp`: Post creation timestamp
- `likes_count`: Number of likes
- `is_affiliate`: Whether the post is marked as affiliate content
- `is_paid_partnership`: Whether the post is a paid partnership
- `location_id`: ID of the tagged location
- `location_has_public_page`: Whether the location has a public page
- `location_name`: Name of the tagged location
- `location_slug`: URL slug of the location
- `location_address`: Address of the location in JSON format
- `is_ad`: Whether the post is an advertisement

**Example Output:**

```json
{
	"id": "3564593839739881831",
	"shortcode": "DF3-zYSPcln",
	"thumbnail_src": "https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/476775973_1704197313842259_3023337751564134801_n.heic?stp=c0.180.1440.1440a_dst-jpg_e35_s640x640_sh0.08_tt6&_nc_ht=scontent-atl3-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AFZmGQr12zfUtwwMDHPVg6R0-PdJrfVSn_x-5QFzXD3OZ-B_d6H64bz4RtyB2lIdQU&_nc_ohc=EtoXbLhVEEgQ7kNvgH7OqOG&_nc_gid=ad765d6328fe46f0b8c50d272bd12dda&edm=ANTKIIoBAAAA&ccb=7-5&oh=00_AYBhnvBLmW7bFhYpT5Ibar-3WPrsYSEAs3diUo6OlXxomQ&oe=67BADA98&_nc_sid=d885a2",
	"height": 1350,
	"width": 1080,
	"display_url": "https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/476775973_1704197313842259_3023337751564134801_n.heic?stp=dst-jpg_e35_p1080x1080_tt6&_nc_ht=scontent-atl3-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AFZmGQr12zfUtwwMDHPVg6R0-PdJrfVSn_x-5QFzXD3OZ-B_d6H64bz4RtyB2lIdQU&_nc_ohc=EtoXbLhVEEgQ7kNvgH7OqOG&_nc_gid=ad765d6328fe46f0b8c50d272bd12dda&edm=ANTKIIoBAAAA&ccb=7-5&oh=00_AYAocgYeZUXJucUitB4UcMEkZDraydzb_y4e0SkQiAgJiw&oe=67BADA98&_nc_sid=d885a2",
	"is_video": false,
	"tagged_users": [
		{
			"full_name": "Kris Jenner",
			"id": "144646783",
			"is_verified": true,
			"profile_pic_url": "https://scontent-atl3-1.cdninstagram.com/v/t51.2885-19/65501483_2046174542354674_2702833089855356928_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_ht=scontent-atl3-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AFZmGQr12zfUtwwMDHPVg6R0-PdJrfVSn_x-5QFzXD3OZ-B_d6H64bz4RtyB2lIdQU&_nc_ohc=q6KNQ-IGzBUQ7kNvgGvZDXz&_nc_gid=ad765d6328fe46f0b8c50d272bd12dda&edm=ANTKIIoBAAAA&ccb=7-5&oh=00_AYDcoAYtLv3qabV4DetPk3trUD_yuFVqdhx_PY-TNG9Tbw&oe=67BADF27&_nc_sid=d885a2",
			"username": "krisjenner"
		}
	],
	"owner_id": "314216",
	"owner_username": "zuck",
	"owner_is_verified": true,
	"owner_profile_pic_url": "https://scontent-atl3-1.cdninstagram.com/v/t51.2885-19/432827943_795126845797128_3130780271506186087_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_ht=scontent-atl3-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AFZmGQr12zfUtwwMDHPVg6R0-PdJrfVSn_x-5QFzXD3OZ-B_d6H64bz4RtyB2lIdQU&_nc_ohc=x6XCAtkYKrcQ7kNvgG9x4OG&_nc_gid=ad765d6328fe46f0b8c50d272bd12dda&edm=ANTKIIoBAAAA&ccb=7-5&oh=00_AYCIYXlVk4rUuhGb_AWx3YDfItUh5TG_iolgU2p-bHhoTQ&oe=67BAE1AA&_nc_sid=d885a2",
	"owner_full_name": "Mark Zuckerberg",
	"owner_is_embeds_disabled": false,
	"owner_is_private": false,
	"owner_is_unpublished": false,
	"owner_posts_count": 386,
	"owner_followers_count": 15548480,
	"caption": "the only appropriate hoodie @krisjenner",
	"caption_is_edited": false,
	"like_and_view_counts_disabled": false,
	"comment_count": 7801,
	"comments": [
		{
			"id": "17988138230795315",
			"text": "Wise man😍👏",
			"created_at": 1739914508,
			"owner_id": "69099024239",
			"owner_is_verified": false,
			"owner_profile_pic_url": "https://scontent-atl3-1.cdninstagram.com/v/t51.2885-19/462471388_579686367817992_1318016435491468476_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_ht=scontent-atl3-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AFZmGQr12zfUtwwMDHPVg6R0-PdJrfVSn_x-5QFzXD3OZ-B_d6H64bz4RtyB2lIdQU&_nc_ohc=Bw_u6aLvFD4Q7kNvgH4LTcA&_nc_gid=ad765d6328fe46f0b8c50d272bd12dda&edm=ANTKIIoBAAAA&ccb=7-5&oh=00_AYANQCCojgIql0SCURv1HKah7NlWEkNFGpr2wHO2Wuy2iA&oe=67BAE07A&_nc_sid=d885a2",
			"owner_username": "happy_tailsanimalshelter",
			"likes_count": 0
		},
		{
			"id": "18487712302016152",
			"text": "mark give me the zuck",
			"created_at": 1739914256,
			"owner_id": "51627865545",
			"owner_is_verified": false,
			"owner_profile_pic_url": "https://scontent-atl3-1.cdninstagram.com/v/t51.2885-19/409467619_989133325517178_2808750372361044586_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_ht=scontent-atl3-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AFZmGQr12zfUtwwMDHPVg6R0-PdJrfVSn_x-5QFzXD3OZ-B_d6H64bz4RtyB2lIdQU&_nc_ohc=2e4ougAC8yQQ7kNvgHEVJbe&_nc_gid=ad765d6328fe46f0b8c50d272bd12dda&edm=ANTKIIoBAAAA&ccb=7-5&oh=00_AYBz61yF4u-YjzzB5gusrLFyOUqXRZ54JEQDvXrxT3V-Qg&oe=67BACED5&_nc_sid=d885a2",
			"owner_username": "zenman_139",
			"likes_count": 0
		},
		{
			"id": "18095580376522461",
			"text": "Dady u so handsome .",
			"created_at": 1739914200,
			"owner_id": "18273112570",
			"owner_is_verified": false,
			"owner_profile_pic_url": "https://scontent-atl3-1.cdninstagram.com/v/t51.2885-19/136348203_108353721205866_817139017493490877_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_ht=scontent-atl3-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AFZmGQr12zfUtwwMDHPVg6R0-PdJrfVSn_x-5QFzXD3OZ-B_d6H64bz4RtyB2lIdQU&_nc_ohc=kUC9gGLkwsMQ7kNvgHjPIzB&_nc_gid=ad765d6328fe46f0b8c50d272bd12dda&edm=ANTKIIoBAAAA&ccb=7-5&oh=00_AYBfUCdiVaSOVmHDezRyHY9MgWcMnkIQ7xlaQGhQKnbUQg&oe=67BAC174&_nc_sid=d885a2",
			"owner_username": "gizzy.87",
			"likes_count": 0
		},
		{
			"id": "18041705936588647",
			"text": "Very good! ❤️😍👏🔥🙌",
			"created_at": 1739913076,
			"owner_id": "2160458623",
			"owner_is_verified": false,
			"owner_profile_pic_url": "https://scontent-atl3-1.cdninstagram.com/v/t51.2885-19/464546004_859417923025596_482827648617072079_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_ht=scontent-atl3-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AFZmGQr12zfUtwwMDHPVg6R0-PdJrfVSn_x-5QFzXD3OZ-B_d6H64bz4RtyB2lIdQU&_nc_ohc=8tA9ejmbelsQ7kNvgHAc5Zr&_nc_gid=ad765d6328fe46f0b8c50d272bd12dda&edm=ANTKIIoBAAAA&ccb=7-5&oh=00_AYCrOh0FNMA07NBMZJhruoXo6EIx-q8fJXzaH2BkUc63cA&oe=67BAD785&_nc_sid=d885a2",
			"owner_username": "hyoung_gab_oh",
			"likes_count": 0
		},
		{
			"id": "18047861525244903",
			"text": "😍😍😍😍😍😍😍😍",
			"created_at": 1739912209,
			"owner_id": "622106676",
			"owner_is_verified": false,
			"owner_profile_pic_url": "https://scontent-atl3-1.cdninstagram.com/v/t51.2885-19/478652193_1136318828126830_9015073587893814447_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_ht=scontent-atl3-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AFZmGQr12zfUtwwMDHPVg6R0-PdJrfVSn_x-5QFzXD3OZ-B_d6H64bz4RtyB2lIdQU&_nc_ohc=PFNS8teCStUQ7kNvgHPoS1U&_nc_gid=ad765d6328fe46f0b8c50d272bd12dda&edm=ANTKIIoBAAAA&ccb=7-5&oh=00_AYAfLj8ywb6F8LbnK3-fdgcN2ZQeCOoJPgfy2fyzmB7NhA&oe=67BAC904&_nc_sid=d885a2",
			"owner_username": "valciane_correa",
			"likes_count": 0
		},
		{
			"id": "18053120162144213",
			"text": "Coitada da llama",
			"created_at": 1739911969,
			"owner_id": "2264271270",
			"owner_is_verified": false,
			"owner_profile_pic_url": "https://scontent-atl3-1.cdninstagram.com/v/t51.2885-19/364359200_1333534710901114_4284818549776231034_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_ht=scontent-atl3-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AFZmGQr12zfUtwwMDHPVg6R0-PdJrfVSn_x-5QFzXD3OZ-B_d6H64bz4RtyB2lIdQU&_nc_ohc=-S7HA_AbXNQQ7kNvgF1iT6S&_nc_gid=ad765d6328fe46f0b8c50d272bd12dda&edm=ANTKIIoBAAAA&ccb=7-5&oh=00_AYAPpG2KXDtwhCHVOIa5XdPxGA9MZ_f6tL5XCPXoKxUcJA&oe=67BABD40&_nc_sid=d885a2",
			"owner_username": "fontx",
			"likes_count": 0
		},
		{
			"id": "18004758707546236",
			"text": "😍😍😍",
			"created_at": 1739911366,
			"owner_id": "62651152763",
			"owner_is_verified": false,
			"owner_profile_pic_url": "https://scontent-atl3-3.cdninstagram.com/v/t51.2885-19/387770306_627038499509457_200178226935382779_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_ht=scontent-atl3-3.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2AFZmGQr12zfUtwwMDHPVg6R0-PdJrfVSn_x-5QFzXD3OZ-B_d6H64bz4RtyB2lIdQU&_nc_ohc=V0YoqD5pUmoQ7kNvgEx5McA&_nc_gid=ad765d6328fe46f0b8c50d272bd12dda&edm=ANTKIIoBAAAA&ccb=7-5&oh=00_AYAr3SSK1JDHzImXfvi2i0gzkw7U4kh5INdAk2r-mO3OmA&oe=67BAC6E2&_nc_sid=d885a2",
			"owner_username": "phamphuongtuong2008",
			"likes_count": 0
		}
	],
	"comments_disabled": false,
	"taken_at_timestamp": 1739152720,
	"likes_count": 270561,
	"is_affiliate": false,
	"is_paid_partnership": false,
	"is_ad": false
}
```

### 📥 Input

- `posts`: Array of Instagram post URLs, reel URLs or shortcodes to scrape

**Example Input:**

```json
{
    "posts": [
        "https://www.instagram.com/p/DF3-zYSPcln/", 
        "https://www.instagram.com/p/DFNkPgRROOS/?img_index=1", 
        "DFERYfms1do",
        "https://www.instagram.com/p/DE-UmMaP6_0/"
    ]
}
```

### 🚀 Usage

To use this Instagram Post Scraper:

1. **Get started**: Click on the "Try for free" button to [make an Apify account](https://apify.com?fpr=7p4wu) and log in.
2. **Add input:** Enter the Instagram post URLs you want to scrape.
3. **Run the actor:** Click on the "Start" button to begin scraping.
4. **Monitor execution:** The actor will fetch all details from the given posts
5. **Retrieve the output:** Download the results in JSON or CSV format, or use the API to integrate with your applications.

### 🔌 Integrations

**Make.com Integration:** Automate your Instagram data collection by connecting this scraper to [Make](https://www.make.com/en/register?pc=louisdeconinck). Create workflows to:

- Send post data to Google Sheets
- Monitor new posts and get notifications
- Analyze engagement metrics automatically
- Archive media files

**Gmail Integration:** Use [Google Workspace](https://referworkspace.app.goo.gl/wUpc) to:

- Get email notifications about new posts
- Send reports of post performance
- Alert team members about specific post types

### 🌟 Start for Free

Ready to start scraping Instagram posts? [Try the Actor for free](https://apify.com?fpr=7p4wu) and get:

- Scalable and reliable data collection
- Regular updates to maintain compatibility
- Technical support when you need it
- Flexible output formats

### 🔍 More Scraping Solutions

Check out my other scrapers on [my Apify profile](https://apify.com/louisdeconinck?fpr=7p4wu) for:

- Other social media platforms
- E-commerce websites
- Business directories
- And more!

### 🛠️ Custom Scraper Development

Need a custom Instagram scraping solution? I can help! Contact me for:

- Custom data fields
- Specific filtering requirements
- Integration with your systems
- Specialized reporting needs

# Actor input Schema

## `posts` (type: `array`):

List of Instagram post URLs or shortcodes to scrape

## Actor input object example

```json
{
  "posts": [
    "https://www.instagram.com/p/DF3-zYSPcln/",
    "https://www.instagram.com/p/DFNkPgRROOS/?img_index=1",
    "DFERYfms1do",
    "https://www.instagram.com/p/DE-UmMaP6_0/"
  ]
}
```

# 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 = {
    "posts": [
        "https://www.instagram.com/p/DF3-zYSPcln/",
        "https://www.instagram.com/p/DFNkPgRROOS/?img_index=1",
        "DFERYfms1do",
        "https://www.instagram.com/p/DE-UmMaP6_0/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("louisdeconinck/instagram-post-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 = { "posts": [
        "https://www.instagram.com/p/DF3-zYSPcln/",
        "https://www.instagram.com/p/DFNkPgRROOS/?img_index=1",
        "DFERYfms1do",
        "https://www.instagram.com/p/DE-UmMaP6_0/",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("louisdeconinck/instagram-post-scraper").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 '{
  "posts": [
    "https://www.instagram.com/p/DF3-zYSPcln/",
    "https://www.instagram.com/p/DFNkPgRROOS/?img_index=1",
    "DFERYfms1do",
    "https://www.instagram.com/p/DE-UmMaP6_0/"
  ]
}' |
apify call louisdeconinck/instagram-post-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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