# Instagram Comments Scraper - Comments, Authors & Likes (`zaver.api/instagram-comment-scraper`) Actor

Scrape all comments from any Instagram post or reel - comment text, author (username, verified), likes, timestamp and reply count. Bulk post URLs, deep export, no login. $0.99 per 1,000 comments. Export CSV, JSON, Excel.

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

## Pricing

from $0.99 / 1,000 comment scrapeds

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/actors/running/actors-in-store.md#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 — Export Comments to CSV, Excel or JSON

**Download every comment from any public Instagram post or reel.** Paste a post URL,
get a clean spreadsheet of comment text, author username, like counts and timestamps.
No login, no API key, no Instagram Business account.

This Instagram comment extractor is built for one job and does it fast: bulk comment
export you can hand straight to a sentiment model, a giveaway draw, or an outreach
list.

### What data does the Instagram Comments Scraper extract?

#### Comment fields

| Field | Description |
|---|---|
| `comment_id` | Instagram's unique ID for the comment |
| `text` | Full comment text, emoji preserved |
| `likes` | How many likes the comment received |
| `created_at` | ISO timestamp of when it was posted |

#### Author fields

| Field | Description |
|---|---|
| `username` | Commenter's handle |
| `user_id` | Numeric Instagram user ID, stable across renames |
| `user_full_name` | Display name |
| `is_verified` | Whether the commenter is verified |

#### Parent post fields

Every row carries its source post, so you can export comments from many posts into
one file and still split them afterwards.

| Field | Description |
|---|---|
| `post_url` | The post or reel the comment belongs to |
| `post_shortcode` | Instagram shortcode, e.g. `Dbn-XJhk0_-` |
| `post_owner` | Username that published the post |
| `post_comments_total` | Total comment count on that post |

### Why use this Instagram comment extractor

#### No login and no API key

Instagram's official Graph API only returns comments on posts you own, and requires
app review plus a connected Facebook Page. This reads public comments directly — you
supply a URL, nothing else.

#### Export to CSV, Excel or JSON

Results land in a dataset you can download as **CSV, Excel, JSON, XML or JSONL**, or
pull through the Apify API. Straight into Google Sheets, a CRM import, or a pandas
dataframe.

#### You only pay for comments you receive

$0.00099 per comment. A post that turns out to be private, deleted or comment-disabled
costs you nothing.

### How to use it

1. Open the Actor in Apify Console.
2. Paste one or more post or reel URLs into **directUrls**.
3. Set **resultsLimit** — the maximum comments per post, and your budget ceiling.
4. Click **Save & Start**.
5. Download from the **Storage** tab, or fetch via API.

Both `/p/` and `/reel/` URLs work, so you do not have to know which format a shared
link resolves to.

### Input example

```json
{
  "directUrls": [
    "https://www.instagram.com/p/DcOX3hWFiey/",
    "https://www.instagram.com/reel/Dbn-XJhk0_-/"
  ],
  "resultsLimit": 500
}
```

`resultsLimit` applies **per URL**, so two posts at 500 returns up to 1,000 comments.

### Output example

```json
{
  "comment_id": "18112481515984991",
  "text": "please focus on saving earth instead",
  "likes": 6248,
  "created_at": "2026-08-04T16:26:56+00:00",
  "username": "rubenarturopj",
  "user_id": "5724926312",
  "user_full_name": "Rubén Arturo",
  "is_verified": false,
  "post_url": "https://www.instagram.com/p/Dbn-XJhk0_-/",
  "post_shortcode": "Dbn-XJhk0_-",
  "post_owner": "nasa",
  "post_comments_total": 2701
}
```

### Pricing

**$0.00099 per comment scraped** — the same rate on every Apify plan, including the
free one.

| Comments exported | Cost |
|---|---|
| 1,000 | $0.99 |
| 10,000 | $9.90 |
| 100,000 | $99.00 |

Not billed: unreachable URLs, private posts, posts with comments turned off.

### Use cases

#### Sentiment analysis on real audience language

Export a few thousand comments and run them through your own classifier or an LLM.
Comment text is the least filtered feedback a brand gets.

#### Instagram giveaway winner picker

Pull every commenter on a giveaway post, de-duplicate by `user_id`, and draw from a
verifiable list rather than scrolling the app.

#### Find the people who engage with a competitor

Commenters are a sharper prospect list than followers — they are the slice of an
audience actually paying attention.

#### Moderation and brand-safety review

Scan comments on your own posts in bulk instead of reading them in the app.

### FAQ

**Can I scrape Instagram comments without logging in?**
Yes. This Actor reads public comments without any Instagram account, login, cookie or
API key. You provide a post URL and nothing else.

**How do I export all comments from an Instagram post to CSV?**
Paste the post URL into `directUrls`, set `resultsLimit` high enough to cover the
post's comment count, run it, then choose CSV in the Storage tab. Each row is one
comment with author, text, likes and timestamp.

**How much does it cost to export 10,000 Instagram comments?**
$9.90 — a flat $0.00099 per comment on every plan, including the free tier. You are
billed only for comments actually returned.

**Does the Instagram Comments Scraper work on Reels?**
Yes. Both `/p/` (posts and carousels) and `/reel/` URLs are supported, and reel
comments return the same fields as post comments.

**Can I get comments from several Instagram posts in one run?**
Yes. Pass any number of URLs in `directUrls`. `resultsLimit` applies per URL, and
every row carries `post_url` and `post_shortcode` so a combined export still splits
cleanly by post.

**Does it return comment replies as well as top-level comments?**
The comment feed is returned as Instagram serves it, ordered by relevance. Each row
is an individual comment with its own `comment_id` and like count.

**Can I scrape comments from a private Instagram account?**
No. Only public posts are accessible. A private or deleted post returns no comments
and is not billed.

**Can I schedule an Instagram comment export to run daily?**
Yes. Use Apify's scheduler. Each run appends a new dataset, so comparing runs shows
which comments are new since the last export.

**Is it legal to scrape Instagram comments?**
This Actor collects only publicly available data and never accesses private content.
Public data can still be personal data under GDPR and similar regulations, so only
collect what you have a legitimate reason to process. See Apify's guidance on the
legality of web scraping.

### Integrations

Connect to **Make, Zapier, n8n, Slack, Google Sheets, Google Drive, Airbyte** and
GitHub, or use webhooks that fire when a run finishes. Official **Node.js** and
**Python** SDKs are available, and the Apify MCP server lets an AI agent call this
Actor directly.

### Related Instagram scrapers

- [Instagram Scraper](https://apify.com/zaver.api/instagram-scraper) — all-in-one: posts, reels, comments, profiles, hashtags, places and search
- [Instagram Post Scraper](https://apify.com/zaver.api/instagram-post-scraper) — posts and carousels from profiles, hashtags or locations
- [Instagram Reel Scraper](https://apify.com/zaver.api/instagram-reel-scraper) — reels with play counts and video URLs
- [Instagram Profile Scraper](https://apify.com/zaver.api/instagram-profile-scraper) — bio, followers, email and category in bulk
- [Instagram Likers & Commenters Scraper](https://apify.com/zaver.api/instagram-engagers-scraper) — the accounts behind the engagement, as profiles

***

Built and maintained by **Zaver**. For bugs, feature requests or custom data needs,
open an issue on this Actor.

# Actor input Schema

## `directUrls` (type: `array`):

Instagram post or reel URLs to scrape comments from, one per line. Example: <code>https://www.instagram.com/p/CODE/</code> or <code>https://www.instagram.com/reel/CODE/</code>.

## `resultsLimit` (type: `integer`):

Max comments to export per post. Set high for a full export; billed only per comment delivered.

## Actor input object example

```json
{
  "directUrls": [
    "https://www.instagram.com/reel/Dbn-XJhk0_-/"
  ],
  "resultsLimit": 100
}
```

# Actor output Schema

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

One dataset item per comment with text, author, likes and timestamp.

## `resultsCsv` (type: `string`):

The same records as a CSV download.

## `runSummary` (type: `string`):

Counts for the run: comments scraped, requests, errors.

# 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 = {
    "directUrls": [
        "https://www.instagram.com/reel/Dbn-XJhk0_-/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zaver.api/instagram-comment-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 = { "directUrls": ["https://www.instagram.com/reel/Dbn-XJhk0_-/"] }

# Run the Actor and wait for it to finish
run = client.actor("zaver.api/instagram-comment-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 '{
  "directUrls": [
    "https://www.instagram.com/reel/Dbn-XJhk0_-/"
  ]
}' |
apify call zaver.api/instagram-comment-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zaver.api/instagram-comment-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/skEfdkeBfsZfyiTgC/builds/tlHEftN6Z0fKyxXTZ/openapi.json
