Instagram Comments (0.5$/1K 🤑)
Pricing
$0.50 / 1,000 results
Instagram Comments (0.5$/1K 🤑)
Extract comments, replies, commenter profiles, timestamps, and engagement metrics from Instagram posts and reels without login. Cost-efficient (0.5$/1K 🤑)
Pricing
$0.50 / 1,000 results
Rating
0.0
(0)
Developer
karamelo
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Instagram Comments Scraper extracts public comments, nested comment replies, commenter profile details, timestamps, and engagement metrics from Instagram posts and reels. Designed for social listening, community management, competitive research, influencer auditing, and sentiment analysis, this Actor collects structured comment data directly into datasets ready for export in JSON, CSV, Excel, or integration with external automation tools.
Operating in high-throughput batch mode, the Actor processes both single post URLs and large lists of target links or shortcodes. Whether analyzing audience reactions to a viral reel, tracking customer feedback under promotional announcements, or feeding large language models with conversational social data, it delivers clean, normalized, flat records without requiring user account credentials or session cookies.
Why use Instagram Comments Scraper?
- Zero login requirement — Extract public comments and replies without providing personal Instagram account credentials, session tokens, or private browser cookies.
- Deep conversation coverage — Supports optional extraction of nested child replies under top-level parent comments, preserving the complete conversation hierarchy.
- Rich commenter metadata — Collects author username, unique user ID, full name, profile picture link, verification status, and account privacy indicators alongside every message.
- Granular engagement metrics — Captures individual comment like counts, reply counts, exact publication timestamps in ISO 8601 UTC format, and unique comment identifiers.
- Multi-format target input — Accepts standard post links, reel links, video links, direct shortcodes, or raw numeric media identifiers with automatic format detection.
- Configurable extraction limits — Set overall comment limits and per-post limits to maintain precise budget control and predictable run times.
- Post caption context capture — Automatically extracts the original post caption alongside every comment record, giving full context to audience discussions without separate queries.
- Export-ready flat schema — Outputs fully flat records optimized for immediate spreadsheet analysis, database ingestion, and business intelligence dashboards.
Who needs this Actor?
- Social Media Managers & Community Teams: Monitor audience feedback, measure audience sentiment on brand campaigns, identify frequent commenters, and detect customer support inquiries or product questions hidden inside high-volume comment sections.
- Brand Protection & PR Specialists: Detect negative brand discourse, spot emerging public relations crises, track coordinated spam campaigns, and flag policy violations or impersonation across brand social channels.
- Market Researchers & Consumer Analysts: Conduct qualitative and quantitative consumer research by gathering real opinions, objections, and spontaneous feedback regarding products, competitors, or industry events.
- Data Scientists & Machine Learning Engineers: Collect diverse, human-written conversational text for training NLP classifiers, fine-tuning language models, evaluating aspect-based sentiment, and building topic clustering pipelines.
- Influencer Marketing & Talent Agencies: Audit influencer post authenticity, analyze follower engagement quality, evaluate audience tone, and identify true brand advocates versus generic bot engagement.
- E-Commerce & DTC Brands: Discover product feature requests, monitor unboxing reactions, identify common sizing or shipping concerns, and extract authentic testimonials for marketing optimization.
Getting started
Running the Instagram Comments Scraper takes only a few simple steps from the Apify Console or via API.
Quick start through the Console
- Open the Actor page in the Apify Console.
- In the Post or Reel URLs field, paste one or more public Instagram post or reel URLs.
- Set a conservative limit in Max comments (total), such as 50 or 100, for your initial test run.
- Keep the default Apify residential proxy configuration enabled to ensure seamless network routing.
- Click the Save & Start button at the bottom of the page.
- Once the run completes, navigate to the Storage tab to inspect the extracted comments in the dataset overview or download them as CSV, JSON, or Excel.
Configuration examples
Example 1: Basic run with post URLs
The simplest run takes one or more post URLs and extracts top-level comments up to the configured limit.
{"startUrls": ["https://www.instagram.com/p/DdFFajKABI4/"],"maxComments": 100,"maxCommentsPerPost": 100,"includeReplies": false,"proxyConfiguration": {"useApifyProxy": true}}
Example 2: Multi-post collection with nested replies
To collect a comprehensive view of conversations including threaded replies across multiple posts or reels, enable the includeReplies option and supply multiple URLs.
{"startUrls": ["https://www.instagram.com/p/DdFFajKABI4/","https://www.instagram.com/reel/DCKDRSpiy3b/"],"maxComments": 500,"maxCommentsPerPost": 250,"includeReplies": true,"proxyConfiguration": {"useApifyProxy": true}}
Example 3: Extraction by post shortcodes or media IDs
When integrating with databases or content management systems where post shortcodes or numeric media identifiers are already cataloged, you can pass them directly via postIds.
{"postIds": ["DdFFajKABI4","3982613260166763064"],"maxComments": 200,"maxCommentsPerPost": 100,"includeReplies": false,"proxyConfiguration": {"useApifyProxy": true}}
Example 4: Focused extraction with full replies and high volume
Extract comprehensive discussions from high-engagement posts with threaded replies enabled.
{"startUrls": ["https://www.instagram.com/p/DdFFajKABI4/"],"maxComments": 150,"maxCommentsPerPost": 150,"includeReplies": true,"proxyConfiguration": {"useApifyProxy": true}}
Input parameters reference
The table below outlines all available input options, their data types, default values, and operational behaviors.
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
startUrls | Array of strings | [] | No | List of public Instagram post or reel URLs (e.g., https://www.instagram.com/p/... or https://www.instagram.com/reel/...). Query parameters and trailing slashes are handled automatically. |
postIds | Array of strings | [] | No | List of Instagram post shortcodes (e.g., DdFFajKABI4) or numeric media IDs (e.g., 3982613260166763064). May be combined with startUrls. |
maxComments | Integer | 100 | No | Total maximum number of comments to extract across the entire run. Extraction terminates as soon as this limit is reached. |
maxCommentsPerPost | Integer | 100 | No | Maximum number of comments to collect per individual post or reel. Enables balanced sampling across multi-post runs. |
includeReplies | Boolean | false | No | When set to true, extracts nested child replies under parent comments in addition to top-level comments. |
proxyConfiguration | Object | {"useApifyProxy": true} | No | Proxy settings for network requests. Apify residential proxies are strongly recommended for high reliability on Instagram. |
Output data structure
Each extracted comment is pushed to the run's default dataset as an independent, structured record. Top-level comments and nested replies share the same uniform schema, allowing immediate export to tabular formats like CSV or relational database tables without nested unnesting operations.
Output record example
{"id": "18068674361751476","postId": "DdFFajKABI4","postUrl": "https://www.instagram.com/p/DdFFajKABI4/","postText": "Hard work pays off 🟡🔵","commentText": "The greatest of all time! 🐐⚽","type": "comment","createdAt": "2024-09-09T18:22:10.000Z","likesCount": 42,"replyCount": 3,"ownerId": "2309546356","ownerUsername": "football_fan_official","ownerFullName": "Football Central","ownerProfilePicUrl": "https://instagram.falg6-1.fna.fbcdn.net/sample.jpg","ownerIsVerified": false,"ownerIsPrivate": false,"isReply": false,"parentCommentId": null,"scrapedAt": "2026-09-12T12:15:10.000Z","user": {"id": "2309546356","username": "football_fan_official","fullName": "Football Central","isVerified": false,"isPrivate": false,"profilePicUrl": "https://instagram.falg6-1.fna.fbcdn.net/sample.jpg"}}
Dataset field descriptions
| Field | Type | Description |
|---|---|---|
id | String | Unique numerical identifier of the comment on Instagram. |
postId | String | Shortcode identifying the parent Instagram post or reel. |
postUrl | String | Canonical URL of the parent Instagram post or reel. |
postText | String or null | Original caption or text of the Instagram post or reel, giving context to comments. |
commentText | String | Full text message content of the comment or reply. |
type | String | Record classification indicator: "comment" for top-level comments, "reply" for nested child replies. |
createdAt | String | ISO 8601 UTC timestamp of when the comment was published on Instagram. |
likesCount | Integer | Total count of likes received by this comment. |
replyCount | Integer | Total number of child replies posted under this comment. |
ownerId | String | Unique Instagram user ID of the comment author. |
ownerUsername | String | Public Instagram handle (username) of the comment author. |
ownerFullName | String or null | Public display name of the commenter, or null if not configured. |
ownerProfilePicUrl | String or null | Direct URL to the commenter's profile avatar picture. |
ownerIsVerified | Boolean | true if the comment author possesses a verified badge; otherwise false. |
ownerIsPrivate | Boolean | true if the commenter's account is private; otherwise false. |
isReply | Boolean | false for top-level parent comments; true for nested child replies. |
parentCommentId | String or null | Unique ID of the parent comment when isReply is true; null for top-level comments. |
scrapedAt | String | ISO 8601 UTC timestamp recording when this record was extracted by the Actor. |
user | Object | Nested commenter profile summary object containing id, username, fullName, isVerified, isPrivate, and profilePicUrl. |
Practical workflow tutorials
Workflow 1: Sentiment analysis on product launch announcements
Brands launching new merchandise or feature updates often receive hundreds of comments within minutes. Understanding the sentiment distribution enables rapid product adjustments and proactive support.
- Collect post links: Identify the Instagram posts announcing the new product.
- Configure inputs: Enter the post URLs in
startUrls, setmaxCommentsto1000, setincludeRepliestotrue, and run the Actor. - Retrieve the dataset: Export the resulting dataset as JSON or CSV.
- Process sentiment: In Python or an NLP pipeline, pass the
commentTextfield through a sentiment classifier (such as VADER, RoBERTa, or an LLM prompt) to score positivity, neutrality, and negativity. - Segment by commenter verification: Cross-reference sentiment against
ownerIsVerifiedandlikesCountto spotlight feedback from industry figures or high-impact community members. - Actionable deliverable: Generate a launch sentiment summary report highlighting top praise themes and recurring customer questions.
Workflow 2: Identifying organic brand advocates and micro-influencers
Audiences who regularly leave thoughtful, high-engagement comments on brand channels represent prime candidates for ambassador and influencer partnership programs.
- Select target posts: Identify the top 10 most popular posts on your brand's profile over the past quarter.
- Execute extraction: Run the Actor with the list of post URLs, setting
maxCommentsPerPostto200. - Aggregate author data: Group records by
ownerUsernameandownerIdto calculate comment frequency per user. - Evaluate engagement: Sum
likesCountreceived across all comments by each author to measure how resonated their commentary was with other followers. - Filter criteria: Filter for authors with
ownerIsVerified == false(identifying genuine organic users rather than established public figures) and non-private profiles (ownerIsPrivate == false). - Outreach pipeline: Export candidate profiles into your influencer relationship management tool or CRM for personalized partnership outreach.
Workflow 3: Competitor post benchmarking and customer question mining
Analyzing the comment sections of major competitors reveals customer pain points, feature desires, and service gaps that your product can address.
- Curate competitor URLs: Identify key promotional or educational posts published by leading competitors in your niche.
- Configure inputs: Supply the list of target post URLs and set
maxCommentsPerPostto a representative sample size such as250or500. - Execute collection: Start the Actor run to harvest all public comments and optional nested discussion threads.
- Analyze opportunities: Filter or search the resulting dataset for recurring inquiry patterns (such as pricing, shipping, sizing, product compatibility, or recurring complaints).
- Strategy implementation: Use the extracted inquiries to refine your own product messaging, FAQ documentation, and competitive ad campaigns.
Programmatic API usage
The Actor can be integrated into existing backends, microservices, and automated pipelines using the Apify API and official SDKs.
JavaScript and Node.js
Install the official JavaScript client using npm install apify-client.
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const runInput = {startUrls: ['https://www.instagram.com/p/DdFFajKABI4/'],maxComments: 100,includeReplies: false,proxyConfiguration: {useApifyProxy: true}};// Start the Actor run and wait for it to finishconst run = await client.actor('karamelo/instagram-comments-scraper').call(runInput);// Fetch items from the default datasetconst { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Retrieved ${items.length} comments:`);items.forEach((item) => {console.log(`[${item.ownerUsername}]: ${item.commentText} (${item.likesCount} likes)`);});
Python
Install the official Python client using pip install apify-client.
import osfrom apify_client import ApifyClientclient = ApifyClient(os.getenv("APIFY_TOKEN"))run_input = {"startUrls": ["https://www.instagram.com/p/DdFFajKABI4/"],"maxComments": 100,"includeReplies": False,"proxyConfiguration": {"useApifyProxy": True}}run = client.actor("karamelo/instagram-comments-scraper").call(run_input=run_input)dataset_items = client.dataset(run["defaultDatasetId"]).iterate_items()for comment in dataset_items:print(f"[{comment['ownerUsername']}]: {comment['commentText']} (Likes: {comment['likesCount']})")
cURL (REST API)
You can trigger a synchronous run directly using cURL:
curl --request POST \--url "https://api.apify.com/v2/acts/karamelo~instagram-comments-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \--header "Content-Type: application/json" \--data '{"startUrls": ["https://www.instagram.com/p/DdFFajKABI4/"],"maxComments": 50,"includeReplies": false,"proxyConfiguration": {"useApifyProxy": true}}'
Platform integrations and data export
Data collected by the Actor can be exported directly or synchronized with third-party systems through built-in Apify platform capabilities:
- Direct file exports: Download dataset items in JSON, CSV, XML, Excel (.xlsx), or HTML table format directly from the Apify Console or through API download endpoints.
- Google Sheets & Airtable: Automatically push newly scraped comments into live spreadsheets using Apify integration connectors or Zapier/Make webhooks.
- Webhooks & alerting: Set up webhooks triggered on run completion to dispatch notifications to Slack channels, Discord webhooks, or internal notification services.
- Cloud storage & databases: Stream dataset exports into Amazon S3 buckets, Google Cloud Storage, BigQuery, Snowflake, or PostgreSQL using automated Apify integrations.
Pricing model
The Instagram Comments Scraper operates on a Pay-Per-Event pricing model, charging solely for the actual comment records delivered into the default dataset:
- Rate: $0.50 per 1,000 comments ($0.0005 per comment item).
- No charge for empty runs: If a post has no comments or cannot be accessed, you are not charged event fees for missing results.
- Transparent scale: Pay only for what you extract, with linear predictability regardless of post count.
| Extracted comments | Estimated Actor event cost |
|---|---|
| 100 comments | $0.05 |
| 500 comments | $0.25 |
| 1,000 comments | $0.50 |
| 5,000 comments | $2.50 |
| 10,000 comments | $5.00 |
| 50,000 comments | $25.00 |
Note: Standard Apify platform resource consumption (compute units and proxy bandwidth) applies according to your Apify subscription tier.
Limitations and operational boundaries
- Public posts only: The Actor can only collect comments from public Instagram posts and reels. Posts belonging to private accounts cannot be accessed without authorization and are not supported.
- Post-level comment disabled: If a post author has completely disabled comments on their publication, the Actor will detect that no comments are available and conclude without error.
- Filtered or hidden comments: Comments automatically filtered or flagged as offensive by Instagram's native anti-spam moderation algorithms or the creator's blocked word lists are not served in public web responses.
- Proxy dependency: Instagram employs strict network rate limits on web endpoints. It is essential to keep Apify residential proxies enabled (
"useApifyProxy": true) to prevent requests from being throttled. - Real-time freshness: Comment counts and likes update continuously on Instagram. Extracted values represent the exact state observed at the moment of the request.
Troubleshooting guide
| Symptom | Probable cause | Recommended solution |
|---|---|---|
| Actor finishes with 0 comments | Post is private or has comments disabled | Verify that the target post URL is viewable in an incognito browser window without logging into Instagram. |
Actor extracts fewer comments than maxComments | Post has fewer total comments than the limit | Check the actual public comment count on the post. Extraction stops naturally when all available comments are collected. |
| Rate limit or throttling error | Proxy settings disabled or misconfigured | Ensure proxyConfiguration has "useApifyProxy": true and default residential proxy groups enabled. |
| Invalid target URL error | Malformed URL or non-post link provided | Ensure target links match https://www.instagram.com/p/... or https://www.instagram.com/reel/..., or provide raw shortcodes. |
Frequently asked questions
Does this Actor require an Instagram account or login cookies?
No. The Actor operates entirely on public web data and does not require account credentials, passwords, session tokens, or browser cookies.
Can I extract comments from Instagram Reels?
Yes. Reels URLs (such as https://www.instagram.com/reel/SHORTCODE/) are fully supported alongside standard photo and carousel post links.
How do nested replies work?
By default, includeReplies is set to false to optimize speed and collect primary feedback. Setting includeReplies to true instructs the Actor to collect child comments posted under parent comments, marking them with isReply: true and attaching their parentCommentId.
Can I scrape comments from multiple posts in a single run?
Yes. You can supply multiple links in startUrls and multiple shortcodes in postIds. The Actor processes each target sequentially and aggregates all comments into a single dataset.
What happens if a comment contains emojis or non-Latin characters?
All comment text is preserved in complete UTF-8 encoding, accurately retaining emojis, international scripts, punctuation, and formatting.
How do I control my run expenses?
Set conservative boundaries for both maxComments (overall run ceiling) and maxCommentsPerPost (per-post ceiling). This prevents unintended large collections on viral posts with tens of thousands of comments.
Responsible use and compliance
When collecting public social media data, users are responsible for ensuring that their data harvesting practices and downstream use cases comply with applicable data protection legislation (including GDPR, CCPA, and regional equivalents) and relevant platform terms of service. Avoid scraping private personal data, respect user deletion and privacy choices, and implement appropriate data retention and security safeguards for all extracted content.