Instagram Comments Scraper
Pricing
from $2.00 / 1,000 comment scrapeds
Instagram Comments Scraper
Scrape the full comment thread of any public Instagram post or reel without a login. Give a list of post links and get back every comment as a clean row: text, author (username, name, verified), like and reply counts, and comment date. Paginated automatically to your chosen limit.
Pricing
from $2.00 / 1,000 comment scrapeds
Rating
0.0
(0)
Developer
Goutam Soni
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Instagram Comments Scraper - Export All Comments From Posts & Reels
Scrape every comment on any public Instagram post or reel. Get the comment text, the author (username, display name, numeric ID, verified badge), like and reply counts, and the exact date it was posted, without an Instagram API key, login, or cookies.
What this Instagram comments scraper does
Pass a list of post links, reel links, or bare shortcodes (mixed freely) and the actor returns one clean JSON row per comment. Pagination is walked automatically page after page until it hits the cap you set or the thread runs out, so a request for 2,000 comments really does walk the whole thread rather than stopping at the first page Instagram shows.
Perfect for sentiment research, giveaway entry collection, audience discovery, moderation and brand-safety checks, and content analysis on Instagram at scale.
Why use this Instagram comments scraper
- No API key, no login, no cookies. Works on any public Instagram post or reel. You never hand over an Instagram account or a password.
- Deep pagination. Ask for 50 comments or 50,000 and the scraper keeps fetching until your cap is reached.
- Flexible input. Post links, reel links, and bare shortcodes all work in the same list, so you can paste whatever you already have.
- Author details on every row, including the numeric user ID and verified badge, so a comment thread doubles as a list of genuinely engaged accounts.
- Reply counts included, which makes it easy to find the comments that actually started a conversation.
- Several posts at once, processed in parallel, each row tagged with its post shortcode.
- Residential proxies built in with rotating IPs.
- Clean, flat JSON. Every field is always present, with
nullwhere a value genuinely does not exist, so CSV exports never shift columns.
What data you get per comment
| Field | Type | Description |
|---|---|---|
type | string | Record type, always "comment" |
postShortcode | string | Shortcode of the post the comment belongs to |
commentId | string | The comment's numeric ID |
text | string | Full comment text, with mentions and emojis |
ownerUsername | string | The comment author's handle |
ownerFullName | string | The comment author's display name |
ownerId | string | The comment author's numeric Instagram user ID |
ownerIsVerified | boolean | Whether the author has a verified badge |
likeCount | integer | Number of likes on the comment |
replyCount | integer | Number of replies to the comment |
createdAt | string | When the comment was posted (ISO 8601 UTC) |
scrapedAt | string | When the row was scraped (ISO 8601 UTC) |
How to use the Instagram Comments Scraper
- Click Try for free on the actor page.
- Enter post or reel links in the
postsinput. Bare shortcodes work too, and entries are deduplicated. - Set
maxCommentsPerPost(default 500, up to 50,000) to cap how many comments come back per post. - Tune
concurrency(default 5, up to 15) if you are scraping many posts at once. - Click Save & start. Download in JSON, CSV, Excel, XML or HTML, or stream via API.
Example input
{"posts": ["https://www.instagram.com/p/CabcdEFghij/","https://www.instagram.com/reel/CklmnOPqrst/","CuvwxYZabcd"],"maxCommentsPerPost": 2000,"concurrency": 5}
Example output
{"type": "comment","postShortcode": "CabcdEFghij","commentId": "17900000000000001","text": "This is exactly what I needed, thank you!","ownerUsername": "example_user","ownerFullName": "Jane Doe","ownerId": "100000001","ownerIsVerified": false,"likeCount": 4,"replyCount": 1,"createdAt": "2026-07-20T18:00:00.000Z","scrapedAt": "2026-07-21T09:00:00.000Z"}
Top use cases
- Sentiment and audience research. Read what people actually say under a post instead of inferring it from a like count.
- Giveaway and contest entry collection. Export every comment on an entry post, complete with author handles and timestamps.
- Audience discovery. People who comment are far more engaged than people who scroll past. Their handles make a strong prospect list.
- Moderation and brand-safety checks. Sweep the comments on your own posts for spam, abuse, or impersonation attempts.
- Competitor research. Read the objections and questions in a competitor's comment section to find gaps in your own messaging.
- Content analysis. Rank comments by
likeCountandreplyCountto see which reactions drove the conversation. - Customer feedback mining. Product complaints and feature requests routinely land in comments before they reach support.
Integrations
Apify API
$curl "https://api.apify.com/v2/datasets/{DATASET_ID}/items?format=json"
Python
from apify_client import ApifyClientfrom collections import Counterclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("goat255/instagram-comments-scraper").call(run_input={"posts": ["https://www.instagram.com/p/CabcdEFghij/"],"maxCommentsPerPost": 2000,})comments = list(client.dataset(run["defaultDatasetId"]).iterate_items())# Most engaged commenters and the top comment by likestop_voices = Counter(c["ownerUsername"] for c in comments if c.get("ownerUsername"))print(top_voices.most_common(10))best = max(comments, key=lambda c: c.get("likeCount") or 0)print(f"Top comment ({best['likeCount']} likes): {best['text']}")
JavaScript / Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('goat255/instagram-comments-scraper').call({posts: ['https://www.instagram.com/p/CabcdEFghij/'],maxCommentsPerPost: 2000,});const { items } = await client.dataset(run.defaultDatasetId).listItems();const questions = items.filter((c) => (c.text || '').includes('?'));console.log(`${questions.length} of ${items.length} comments asked a question`);
No-code integrations
Stream results to Google Sheets, Slack, Zapier, Make, Amazon S3, HubSpot, or any webhook via Apify Integrations.
Pricing
Pay per result. No subscription. No per-run start fee. You only pay for the comments you actually receive.
| Event | Price |
|---|---|
| Comment scraped (primary) | $0.002 |
Apify's $5 platform free credit applies on first use, which is roughly 2,500 free comments to start.
FAQ
Do I need an Instagram account or API key?
No. The scraper works on any public Instagram post or reel without a login, cookies, or the Instagram Graph API.
What input formats does it accept?
Post links, reel links, and bare shortcodes, all in the same list. https://www.instagram.com/p/CabcdEFghij/, https://www.instagram.com/reel/CabcdEFghij/, and CabcdEFghij are all valid and refer to the same post.
Can it scrape comments on posts from private accounts?
No. Only public posts and reels are accessible. A post that cannot be reached returns a row with ok: false and a generic reason such as not_found.
How many comments can I get per post?
Up to 50,000 per post per run. Pagination is walked automatically, so setting maxCommentsPerPost to 2,000 returns 2,000 comments if the thread has them, not just the first page.
Does it include replies to comments?
Each row is a top-level comment and carries a replyCount telling you how many replies it received. Use that to find the threads worth reading, then rank by likeCount to find the comments the audience endorsed.
Why did I get fewer comments than I asked for?
The thread ran out. Ask for 2,000 on a post with 140 comments and you get 140 real rows rather than 2,000 padded ones. The run log states the count per post.
Can I export to CSV, Google Sheets or Excel?
Yes. JSON, CSV, Excel, XML and HTML are all supported, plus direct integrations to Google Sheets, Zapier, Make, Slack and S3.
What happens if one post in my list fails?
The run does not fail. The actor emits a row with ok: false and a generic reason for that post, then carries on with the rest of your list.
Related Apify actors
- ๐ Instagram Posts Scraper - bulk export posts, captions, likes, comments, media.
- ๐ฌ Instagram Reels Scraper - reels with play counts, duration and direct video URLs.
- ๐ค Instagram Profile Scraper - bios, follower counts, public emails, phone numbers, business info.
- ๐ Instagram Hashtag Scraper - top and recent posts for any tag.
Support
Found a bug or a missing field? Open an issue on the actor page. Reviews are read and replied to.
Privacy
To improve our actors we collect anonymized usage telemetry (run stats and input patterns). No personal account data is collected.