Instagram Comments Scraper — Posts & Reels avatar

Instagram Comments Scraper — Posts & Reels

Pricing

from $0.40 / 1,000 results

Go to Apify Store
Instagram Comments Scraper — Posts & Reels

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

Alexandre Manguis

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

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

FieldTypeRequiredDefaultDescription
postUrlsarray of stringsyes–Public post/reel URLs (/p/, /reel/, /tv/) or shortcodes.
maxCommentsPerPostintegerno50Max top-level comments per post (1–10,000).
maxResultsintegerno100Hard cap on total comment rows in the run (1–100,000).
proxyConfigurationobjectnoApify proxyDefault 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:

FieldFill rateNote
postUrl, postShortcode, postCommentsTotal100%Post identifiers and total comment count
commentId, createdAt, likesCount100%
ownerUsername, ownerId, ownerIsVerified, ownerProfileUrl, ownerProfilePicUrl100%
text98%Empty for the rare comment without text
mentions6%Filled only when a comment contains @mentions
hashtags0% in this runFilled only when a comment contains #hashtags (empty array otherwise)
scrapedAt100%

Configuration

  • Limits: maxCommentsPerPost caps comments per post; maxResults caps 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 proxyConfiguration to 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 ApifyClient
client = 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().items
print(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:

PlanPer 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_REQUIRED row: the post is private, deleted, age-restricted or requires login. Only public content is supported.
  • INVALID_URL row: 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