# Instagram Comments Scraper - Post & Reel Comments (`dami_studio/instagram-comments-scraper`) Actor

The cheapest Instagram comment scraper on the Store at $0.40 per 1,000 - rivals start at $0.50. Pull every comment from any post or reel: text, like count, reply count, timestamp, author username, ID and verified badge. Bulk URLs, export JSON/CSV/Excel or send to Notion. Failed runs are free.

- **URL**: https://apify.com/dami\_studio/instagram-comments-scraper.md
- **Developed by:** [Dami's Studio](https://apify.com/dami_studio) (community)
- **Categories:** Social media, Lead generation
- **Stats:** 6 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 Comments Scraper — Post & Reel Comments

Scrape every comment from any **Instagram post or reel** — text, like count, reply count, author, verified badge, and timestamp. Flat JSON/CSV/Excel export or one-click Notion delivery. **Pay per comment — failed or empty runs cost nothing.**

### Why it wins

- 💸 **$0.40 / 1,000 comments** — the same account-pool method the expensive incumbents charge multiples for, at a fraction of the price.
- 🔄 **Account-pool rotation, built in** — drop in a few throwaway `sessionid` cookies and the actor rotates them across fresh **residential** IPs automatically, exactly how the paid services stay unblocked.
- 🧹 **Clean, flat records** — no nested GraphQL soup. One row per comment, ready for a sheet or a database.
- 📬 **Notion delivery built in** — pipe results straight into a Notion data source, no glue code.
- 🎯 **Post URL or shortcode** — paste `/p/`, `/reel/`, or `/tv/` links, or bare shortcodes. Both work.

> Instagram gates comments behind a login — there is **no keyless path** for this data (the paid services use account pools too). This actor does the same, with **your** sessionid cookies.

### 🆓 Try it keyless (sample mode)

Run it with **no input** (or no `sessionCookies`) and you get an **instant, free, clearly-labeled sample** of the exact output shape (each row carries `sampleData: true` and a `_notice`). No proxy, no charge — perfect for wiring up your pipeline before adding a cookie.

### ⚠️ Real comments need a logged-in `sessionid` cookie

**Get the cookie (about 1 minute):** log in to instagram.com with a **throwaway account** → press `F12` → **Application** → **Cookies** → copy the `sessionid` value → paste it into `sessionCookies`. Add a few accounts (one per line) for higher throughput and lower block rates.

### Input

| Field | Type | Description |
|---|---|---|
| `postUrls` | array | Instagram post / reel / TV URLs (`/p/…`, `/reel/…`, `/tv/…`). |
| `shortcodes` | array | Or bare post shortcodes (e.g. `Bt_RWejnzWS`). |
| `maxComments` | integer | Cap on total comments returned (1–5000, default 100). Charged per comment. |
| `sessionCookies` | array | One or more `sessionid` cookies — the actor rotates them. **Leave empty for a free labeled sample; required for real comments.** |
| `proxyConfiguration` | object | Residential proxy (preconfigured, required by Instagram). |
| `notionConnector` | string | Optional Notion connector ID for delivery. |
| `notionParentId` | string | Optional Notion data-source ID. |

### Output

One flat record per comment:

```json
{
  "type": "comment",
  "id": "17912345678901234",
  "mediaId": "1234567890123456789",
  "text": "this is unreal 🔥",
  "likeCount": 42,
  "replyCount": 3,
  "createdAt": "2026-06-20T14:08:31.000Z",
  "ownerUsername": "real_user",
  "ownerId": "9876543210",
  "ownerVerified": false
}
```

### Pricing

**$0.40 per 1,000 comments** (pay-per-result). Failed or empty runs are **not** charged.

### FAQ

**Do I really need a cookie?** For *real* comments, yes — Instagram comments are login-gated. Run with no cookie first to see a free, labeled **sample** of the output; add a throwaway-account `sessionid` to scrape live data. The actor never touches your main login.

**Can I pass several accounts?** Yes — add one `sessionid` per line in `sessionCookies`. The actor rotates accounts and residential IPs to spread load and avoid blocks.

**Posts or reels?** Both. Reels and IGTV (`/reel/`, `/tv/`) work exactly like feed posts (`/p/`).

**Will I be charged if a post is private or returns nothing?** No. You only pay for comments actually returned.

**How do I get results into Notion?** Set `notionConnector` and `notionParentId` and the actor delivers each run automatically.

***

Want posts, profiles, hashtags, or locations too? Pair this with the companion **Instagram Scraper** and **Instagram Hashtag Scraper**.

### Billing

Two charges apply: a **$0.001 run-start fee** each time a run begins, and the per-result fee for results actually delivered. Samples, diagnostics, duplicates, blocked look-ups and no-result runs **never incur the per-result fee** — a run that returns nothing costs only the $0.001 start fee.

# Actor input Schema

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

Instagram post/reel URLs to scrape comments from.

## `shortcodes` (type: `array`):

Or bare post shortcodes.

## `maxComments` (type: `integer`):

Charged per comment.

## `sessionCookies` (type: `array`):

Leave empty to get a free, instant, labeled SAMPLE of the output. For REAL comments this data is login-gated (this is how the paid services do it): add throwaway-account sessionid cookies; the actor rotates them. From a logged-in instagram.com: F12 → Application → Cookies → copy sessionid. One per line.

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

Residential proxy required (preconfigured).

## `notionConnector` (type: `string`):

Optional Notion delivery.

## `notionParentId` (type: `string`):

Optional Notion data-source id.

## Actor input object example

```json
{
  "postUrls": [
    "https://www.instagram.com/p/Bt_RWejnzWS/"
  ],
  "shortcodes": [
    "Bt_RWejnzWS"
  ],
  "maxComments": 100,
  "sessionCookies": [
    "sessionid=12345%3AAbCd...%3A12%3A..."
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Results in the default dataset.

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

// Run the Actor and wait for it to finish
const run = await client.actor("dami_studio/instagram-comments-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/Bt_RWejnzWS/"] }

# Run the Actor and wait for it to finish
run = client.actor("dami_studio/instagram-comments-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 '{
  "postUrls": [
    "https://www.instagram.com/p/Bt_RWejnzWS/"
  ]
}' |
apify call dami_studio/instagram-comments-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/M0zGqCiV18HJihzgL/builds/2jyX01Pma9b06btef/openapi.json
