Instagram Comments Scraper — Top-Level Comments, No Login avatar

Instagram Comments Scraper — Top-Level Comments, No Login

Pricing

$0.50 / 1,000 comments

Go to Apify Store
Instagram Comments Scraper — Top-Level Comments, No Login

Instagram Comments Scraper — Top-Level Comments, No Login

The top-level comments Instagram lists under public posts and reels, newest first, down to the first one: text, exact time, likes, GIF mark. Authors as codes, or with user names on request. Only-new mode for monitoring. No login, no cookies. Replies need a login and are not included.

Pricing

$0.50 / 1,000 comments

Rating

0.0

(0)

Developer

Berkan Kaplan

Berkan Kaplan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

13 days ago

Last modified

Categories

Share

Instagram Comments Scraper — Top-Level Comments, No Login 🚀

foXLabs Instagram series: Bulk Profile · Profile Posts · Post Details · Reels

🎉 Give the addresses of public Instagram posts or reels and get the comments under them — the top-level comments Instagram lists for a signed-out visitor, newest first, down to the post's first comment or your limit: text, time, like count, GIF flag, and the post it stands under. Authors come as a stable code by default, or as user names on request. No login, no cookies, no account of anyone.

Not affiliated with Instagram or Meta.

🔍 What is the Instagram Comments Scraper — and when should you use it?

Give this Actor post/reel URLs and it returns their top-level comments as clean rows — for reading comment sections in bulk: community/brand teams, campaign reports, launch-reaction research.

Use it when you need: the comments under a set of posts (sentiment, topics, volume); privacy-safe comment exports (author codes); or an only-new comment feed.

Use something else when: you want the post's own metrics → Post Details; a whole profile's posts → Profile Posts.

🤖 Use with AI agents

Already on the Apify MCP server? Ask for this Actor by name: foxlabs/instagram-comments-scraper. An agent can discover it, run it and read the dataset over MCP; the Actor is built to run in Standby for on-demand lookups.

Otherwise paste this into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

I want Instagram post comments using the Apify Actor
`foxlabs/instagram-comments-scraper`.
Input: `postUrls` is a list of post/reel URLs; `maxCommentsPerPost` caps per post; `includeAuthorNames`
adds usernames (off = codes). Each row has text, createdAt, likeCount, isGif, postOwnerUsername and
authorCode.
Start with:
{ "postUrls": ["https://www.instagram.com/p/DeJ28eTxo4s/"], "maxCommentsPerPost": 60 }
Ask me which posts to read, run the Actor, then summarise sentiment and top comments.

The machine-readable API, MCP config and OpenAPI definition live at apify.com/foxlabs/instagram-comments-scraper.md.

📋 Overview

Everything you need to turn a post's comment section into clean, structured data — text, time, likes and a privacy-safe author code — in one Actor, with no login, cookies or account.

Why teams pick this Actor:

  • ✅ Top-level comments to the end — newest first, down to the post's first comment or your cap.
  • 🕵️ Privacy by default — authors are a stable per-account code; names only with includeAuthorNames.
  • 🎯 Honest — rows are fewer than Instagram's comment number (it counts replies + unlisted); the README says exactly why.
  • 🔁 Only-new monitoring — schedule a post and get only new comments (oldest first).
  • 💰 Pay only for results — one comment event per delivered row; status rows and remembered comments free.
  • 🤖 Agent-ready — MCP + Standby.

✨ Features

  • 🔍 Comments by post/reel — any address form, short code or id; up to 10,000 lines a run.
  • 💬 Per comment — text, exact time, like count, isGif, position, verified-author flag.
  • 🔐 Author code — HMAC code stable within your account; includeAuthorNames adds username + id.
  • 📊 Post context — postOwnerUsername, postCommentCount (Instagram's number, larger than the rows).
  • 🔁 Only-new lists for monitoring.

🎬 Quick Start

curl -X POST "https://api.apify.com/v2/acts/foxlabs~instagram-comments-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"postUrls": ["https://www.instagram.com/p/DeJ28eTxo4s/"], "maxCommentsPerPost": 60}'

🚀 Getting Started (3 steps)

  1. Paste your posts — one per line: a post/reel URL, short code or id.
  2. Set the cap & authors — maxCommentsPerPost; includeAuthorNames if you need names (else codes).
  3. Run and export — get a clean dataset as JSON, CSV or Excel.

📥 Input

FieldDefaultWhat it does
postUrlsrequiredPost/reel addresses, one per line (up to 10,000); a line that is no post gets a free status row.
maxCommentsPerPost1000Comments per post, newest first (1–1,000,000).
maxComments100000Comments in total.
includeAuthorNamesfalseOff = authorCode only; on = also authorUsername + authorUserId.
onlyNewComments, listNamefalse, defaultDeliver only new comments (oldest first).
proxyConfigurationautoNothing to change for normal use.
{ "postUrls": ["https://www.instagram.com/p/DeMw7vrDPS3/", "https://www.instagram.com/reel/DeCNJEyOkpq/"], "maxCommentsPerPost": 30, "includeAuthorNames": true }

📤 Output

One row per comment (type: "comment"); a free type: "status" row for a line that can't be delivered.

FieldWhat it is
postId, postShortCode, postUrl, postOwnerUsername, postCommentCountthe post (Instagram's count is larger than the rows)
commentId, positionInPostunique id; place in the list (1 = newest)
text, createdAt, likeCount, isGif, isHiddenthe comment
authorCodea stable per-account code for the author
authorUsername, authorUserIdwith includeAuthorNames
authorIsVerified, scrapedAt, input, errorverified flag; when read; your line; reason on status rows
{ "type": "comment", "postShortCode": "DeJ28eTxo4s", "postOwnerUsername": "nasawebb", "postCommentCount": 500, "commentId": "179…", "positionInPost": 12, "text": "…", "createdAt": "2026-10-09T01:21:07.000Z", "likeCount": 3, "isGif": false, "authorCode": "0123456789abcdef", "authorIsVerified": false }

Honest: no replies (neither texts nor counts — Instagram doesn't give them to a signed-out visitor); rows are fewer than postCommentCount (which counts replies + unlisted — the posts we read listed 25–86% of it); newest-first only (sort by likeCount yourself).

💼 Use cases

1. Campaign / launch reaction — read the comment sections of a set of posts. Input: the campaign URLs. Output: comments + likes + time. Use: sentiment and themes in aggregate.

2. Privacy-safe research — study reactions without storing names. Input: posts, authors as codes (default). Output: comments with authorCode. Use: analysis within policy.

3. Comment monitoring — collect only-new comments as they arrive. Input: a post, onlyNewComments, scheduled. Output: new comments each run. Use: a live comment feed.

🔗 Integration

JavaScript / Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('foxlabs/instagram-comments-scraper').call({ postUrls: ['https://www.instagram.com/p/DeJ28eTxo4s/'], maxCommentsPerPost: 60 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('foxlabs/instagram-comments-scraper').call(run_input={'postUrls': ['https://www.instagram.com/p/DeJ28eTxo4s/'], 'maxCommentsPerPost': 60})
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item)

Written for apify-client 3 for Python, where call() returns a run object; with version 1 or 2 it returns a dict — write run['defaultDatasetId'] there.

Automation (n8n / Zapier / Make): schedule → HTTP request to the Actor API with your postUrls → handle the JSON dataset → push to a sheet, CRM or dashboard.

📊 Pricing

Pay per event: one comment per delivered comment row (also a row whose post query Instagram didn't answer). Status rows are free, and so are comments an only-new list still remembers. A run's spending limit is honoured. View current pricing.

❓ FAQ

Do I need an Instagram login or cookies? No — only the top-level comments a signed-out visitor sees.

Why are there fewer rows than the comment count? postCommentCount counts replies (not shown to a visitor) and unlisted comments; the rows are the top-level comments Instagram lists.

Do I get replies? No — neither their texts nor their number reach a signed-out visitor.

Can I keep authors anonymous? By default authors are a stable per-account code (a pseudonym, not anonymisation); turn on includeAuthorNames only when you need names and have a lawful reason.

Can I export to CSV / Excel / JSON? Yes — directly from the Apify dataset.

🐛 Troubleshooting / What it does NOT do

  • No replies, no reply counts — not available to a signed-out visitor.
  • Fewer rows than the comment number — expected (replies + unlisted counted in it).
  • Newest-first only — there's no "most liked" order; sort by likeCount yourself.
  • A list can differ between readings — a comment can be missing from one reading and back in the next; to be sure, read a post whole once more without the list and merge by commentId.
  • A line returns a status row — not a post, no such post, comments off/limited, no comments yet, or unanswered (free, not charged).
  • A changed Instagram query fails the run at its start-up check, before anything is read/charged.

⚠️ Trademark

Independent, third-party tool. Not affiliated with, endorsed by or connected to Instagram or Meta Platforms, Inc. "Instagram" and related marks belong to their owners and are used here for identification only.

The Actor reads only what a signed-out visitor sees. Comment texts are other people's words — they can contain sensitive information, and authors can be minors. By default the author is a per-account code (HMAC, kept in your account; a pseudonym, not anonymisation); includeAuthorNames adds the name/id. You are the controller: collect personal data only with a lawful reason, and prefer aggregate analysis (sentiment, topics, volume) over profiling individuals. The Actor writes only to your own run's storage. See Apify's blog post on the legality of web scraping.

🤝 Support & contact

Changelog

0.1.3 — 2026-10-10

  • After an independent README review: authorCode is a keyed per-account code (same author → same code within your account; another account gets other codes; not reversible without the key); the start-up check asks the comments query itself; an only-new list handed back in circles counts as stopped; listName checked only when onlyNewComments is on; postUrls required; a proxy set in the input is the road of every request.

0.1 — 2026-10-09

  • First version: top-level comments of posts and reels, newest first, to the end; authors as codes unless names are asked for; only-new lists; free status rows; the replyCount column dropped (Instagram sent none); requests leave from the run's own address with Apify Proxy as the second road. Standby mode prepared.