Instagram Comments Scraper — Posts & Reels
Pricing
from $0.40 / 1,000 results
Instagram Comments Scraper — Posts & Reels
Instagram comments scraper: export top-level comments of public posts and reels without login. Returns text, date, likes, author, mentions and hashtags as JSON, CSV or Excel. From $0.40 per 1,000.
Pricing
from $0.40 / 1,000 results
Rating
0.0
(0)
Developer
Alexandre Manguis
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
Instagram Comments Scraper — Export Post & Reel Comments
What does it do?
This Instagram comments scraper exports the top-level comments of public Instagram posts and reels without any login. Paste post or reel URLs and get one row per comment: text, date, likes, author username, author ID, verified flag, profile link, mentions and hashtags. Download the data as JSON, CSV, Excel, XML or HTML, or pull it through the Apify API.
It reuses Instagram's own public web data over plain HTTP (no browser launched for the extraction), starts on Apify datacenter proxy and automatically switches to the residential pool if Instagram refuses it.
Not included: nested replies to comments are not collected (they are not exposed to logged-out visitors). Only top-level comments are returned.
Who is it for / use cases
- Social media & community managers – export audience feedback on your own or competitors' posts.
- Brand and market researchers – analyse sentiment and topics in comments on campaigns or product launches.
- Giveaway organisers – list commenters and mentions for contest checks.
- Lead generation / influencer vetting – see who engages with a post and how many likes their comments get.
- Data and NLP teams – build comment datasets (multilingual text, emojis kept as-is).
Features
- No login, cookies or Instagram account required – public posts and reels only.
- Accepts
/p/,/reel/,/tv/URLs or bare shortcodes; duplicates removed. - Limits per post (
maxCommentsPerPost, up to 10,000) and per run (maxResults, up to 100,000) to control spend. - Automatic datacenter → residential proxy fallback.
- Bad input never fails the run: invalid or private/login-only URLs produce an unbilled error row (
INVALID_URL,PRIVATE_OR_LOGIN_REQUIRED). - Clean, flat output with a ready dataset view.
Input
Input fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
postUrls | array of strings | yes | – | Public post/reel URLs (/p/, /reel/, /tv/) or shortcodes. |
maxCommentsPerPost | integer | no | 50 | Max top-level comments per post (1–10,000). |
maxResults | integer | no | 100 | Hard cap on total comment rows in the run (1–100,000). |
proxyConfiguration | object | no | Apify proxy | Default datacenter with automatic residential fallback; pick a group explicitly to disable the switch. |
Example input
{"postUrls": ["https://www.instagram.com/p/DdWyDLcGiqo/"],"maxCommentsPerPost": 20,"maxResults": 20}
Output
Example output
One dataset item per comment. Sample with anonymised values (profile picture URL shortened):
{"postUrl": "https://www.instagram.com/p/DdWyDLcGiqo/","postShortcode": "DdWyDLcGiqo","commentId": "18000000000000000","text": "Great post, thanks for sharing!","createdAt": "2026-10-03T08:15:39.000Z","likesCount": 0,"postCommentsTotal": 1783,"ownerUsername": "example_user","ownerId": "1000000000","ownerIsVerified": false,"ownerProfilePicUrl": "https://scontent-lga3-3.cdninstagram.com/…","ownerProfileUrl": "https://www.instagram.com/example_user/","mentions": [],"hashtags": [],"scrapedAt": "2026-10-03T17:36:31.657Z"}
Error rows
Invalid input example (error row, not billed): {"input": "https://www.instagram.com/nasa/", "error": "INVALID_URL", "message": "Not a public post/reel URL or shortcode.", "scrapedAt": "…"}.
Output fields & fill rates
Measured on a 50-comment production run:
| Field | Fill rate | Note |
|---|---|---|
postUrl, postShortcode, postCommentsTotal | 100% | Post identifiers and total comment count |
commentId, createdAt, likesCount | 100% | |
ownerUsername, ownerId, ownerIsVerified, ownerProfileUrl, ownerProfilePicUrl | 100% | |
text | 98% | Empty for the rare comment without text |
mentions | 6% | Filled only when a comment contains @mentions |
hashtags | 0% in this run | Filled only when a comment contains #hashtags (empty array otherwise) |
scrapedAt | 100% |
Configuration
- Limits:
maxCommentsPerPostcaps comments per post;maxResultscaps the whole run (and your spend). Both are applied, whichever is reached first. - Proxy: by default the Actor uses Apify datacenter proxy and switches automatically to the residential pool if Instagram refuses it. Select a proxy group explicitly in
proxyConfigurationto disable the automatic switch. - Memory/timeout: default run options are 4096 MB and a 3600 s timeout; small runs finish in well under that.
How to use via API
curl
curl -X POST "https://api.apify.com/v2/acts/YOUR_USERNAME~instagram-comments-scraper-pro/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"postUrls":["https://www.instagram.com/p/DdWyDLcGiqo/"],"maxCommentsPerPost":50}'
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('YOUR_USERNAME/instagram-comments-scraper-pro').call({postUrls: ['https://www.instagram.com/p/DdWyDLcGiqo/'],maxCommentsPerPost: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.length);
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("YOUR_USERNAME/instagram-comments-scraper-pro").call(run_input={"postUrls": ["https://www.instagram.com/p/DdWyDLcGiqo/"],"maxCommentsPerPost": 50,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(len(items))
Pricing
Pay per result: you are charged per comment row returned (error rows are not billed). Price per 1,000 comments depends on your Apify plan:
| Plan | Per 1,000 results |
|---|---|
| FREE | $0.60 |
| BRONZE | $0.52 |
| SILVER | $0.46 |
| GOLD and above | $0.40 |
You also pay Apify platform usage (compute and proxy). The Actor starts on datacenter proxy; if Instagram refuses it, residential proxy traffic is billed by Apify at its own rate (our feasibility test measured roughly 1 GB per 1,000 entries on residential). Use maxResults to cap spend.
Troubleshooting
PRIVATE_OR_LOGIN_REQUIREDrow: the post is private, deleted, age-restricted or requires login. Only public content is supported.INVALID_URLrow: the input is a profile, story or other non-post URL. Use/p/,/reel/or/tv/links.- Fewer comments than
postCommentsTotal: that total includes replies and hidden/filtered comments; only top-level comments visible to logged-out visitors are returned. - Slow or retried requests: Instagram may refuse datacenter IPs; the Actor then switches to residential proxy automatically.
FAQ
Does it need my Instagram login? No. It never logs in and cannot access private accounts.
Does it scrape replies? No, only top-level comments.
Is it legal? It collects publicly visible data. Comments contain personal data (usernames, text): handle it according to GDPR and local law, and check Instagram's terms for your use.
Which formats can I export? JSON, CSV, Excel, XML, HTML and RSS from the Apify dataset.
Keywords
instagram comments scraper, instagram comment exporter, scrape instagram comments, instagram reel comments, instagram post comments, export instagram comments to csv, instagram comments no login, instagram comment extractor, instagram engagement data
Hashtags
#instagram #instagramcomments #commentsscraper #socialmedia #webscraping #datascraping #socialmediaanalytics #apify