September 23, 2026 · 11 min read
Instagram Comment Scraper: 396 of 441 Runs Succeeded (2026)
Each comment record carries 22 output fields, including author details, likes, reply threading, timestamps, mentions, and hashtags. You can collect data from both post and reel URL formats while utilizing automatic managed session rotation or your own cookies. In the last 30 days, 396 of 441 public runs finished successfully. This tool is built for developers, analysts, and marketers who need reliable comment extraction at scale, though it is not for anyone who requires raw media file URLs for every attachment type.
Try it before you read further. You can run it on Apify's free plan without a credit card. Open Instagram Comment Scraper on Apify and run the prefilled example.
How reliable is Instagram Comment Scraper in production?
Across the last 30 days of public runs on the Apify platform, Instagram Comment Scraper recorded 441 runs with the following outcomes.
| Outcome | Runs | Share |
|---|---|---|
| Succeeded | 396 | 89.8% |
| Failed | 0 | 0.0% |
| Aborted by the user | 43 | 9.8% |
| Timed out | 2 | 0.5% |
| Total | 441 | 100.0% |
Out of 441 public runs in the last 30 days, exactly 0 failed and 2 timed out. Expect about 0.5 in a hundred runs to encounter a timeout when scraping massive threads. Plan your schedules around occasional timeouts by keeping input batches manageable.
How do you run Instagram Comment Scraper from the API?
The schema marks 1 of its 6 controls as required: postUrls. Nothing in the payload below is illustrative. Those are the schema's prefilled defaults for Instagram Comment Scraper, so the request works once your token is in place.
Call the synchronous endpoint to start a run and receive dataset items in one request:
curl -X POST "https://api.apify.com/v2/acts/crawlerbros~instagram-comment-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"postUrls":["https://www.instagram.com/p/DRaAMuaiTZR/"],"maxCommentsPerPost":100,"includeReplies":true,"maxRepliesPerComment":0}'
The same run from Python, using the official client:
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"postUrls": [
"https://www.instagram.com/p/DRaAMuaiTZR/"
],
"maxCommentsPerPost": 100,
"includeReplies": True,
"maxRepliesPerComment": 0
}
run = client.actor("crawlerbros~instagram-comment-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
And from Node.js:
import { ApifyClient } from 'apify-client'
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
const input = {
"postUrls": [
"https://www.instagram.com/p/DRaAMuaiTZR/"
],
"maxCommentsPerPost": 100,
"includeReplies": true,
"maxRepliesPerComment": 0
}
const run = await client.actor('crawlerbros~instagram-comment-scraper').call(input)
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)
Because the call is synchronous, your client waits for the whole run. Keep it for exploration. For scheduled work, start the run without waiting and collect the dataset afterwards, so network trouble costs you a retry rather than the results.
Which Instagram Comment Scraper inputs matter, and which can you skip?
The postUrls array is the only required control, specifying the target Instagram posts or reels to scrape. Most users should leave cookies blank to leverage the managed session pool on a first run.
postUrls(array): List of Instagram post or reel URLs to scrape comments from. Supports formats: /p/, /reel/, /tv/, /share/, or direct shortcodes.maxCommentsPerPost(integer): Maximum number of comments to scrape per post, up to 10000. Higher values may take longer. Default:100.includeReplies(boolean): Include comment replies (nested comments). Enabling this will expand reply threads. Default:true.maxRepliesPerComment(integer): Maximum number of replies to fetch per individual comment thread (when Include Replies is enabled). For example, 5 means at most 5 replies are returned per parent comment. Set to 0 for unlimited replies per thread. Default:0.cookies(string): Instagram authentication cookies in JSON format. Optional - if not provided, authentication is handled automatically. Format: [{"name":"sessionid","value":"...","domain":".instagram.com"}, ...]sessionName(string): If you've saved cookies to key-value storage, enter the session name here instead of pasting cookies.
What does Instagram Comment Scraper return?
Returned records provide clean text, author data, and engagement counts suitable for sentiment tracking and community analysis. They conspicuously lack direct CDN media links for most image and video comments, returning readable placeholders instead.
commentId- unique numeric identifier for the commenttext- comment text; media-only comments show a readable placeholder such as[Image],[GIF:id],[Reel: url], or[Photo unavailable]commentType- content type:text,image,video,reel,photo_share,album_share,gif,stickerisGif-trueif the comment is a GIF reactionauthorUsername- Instagram handle of the commenterauthorId- numeric Instagram user ID of the commenterauthorIsVerified-trueif the commenter has a blue verification badgeauthorProfilePic- CDN URL of the commenter's profile picturetimestamp- when the comment was posted (ISO 8601)likesCount- number of likes on the commentreplyCount- number of replies to this commentisReply-trueif this is a reply to another commentisEdited-trueif the comment was edited after postingmentions- list of @mentioned usernames extracted from the comment texthashtags- list of #hashtags extracted from the comment textpostUrl- URL of the Instagram post being scrapedpostShortcode- short alphanumeric identifier of the source postcommentUrl- direct URL to this specific commentscrapedAt- ISO 8601 timestamp of when the record was collectedparentCommentId- ID of the top-level comment this reply belongs toparentCommentAuthor- username of the top-level comment authormediaUrl- CDN URL of the attached media file; currently only populated for GIF comments, where Instagram's API returns a direct link
These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.
How do you build the workflow end to end?
Open Instagram Comment Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.
- Provide postUrls with target Instagram post or reel links.
- Adjust maxCommentsPerPost to limit the item count per URL.
- Toggle includeReplies to control whether nested reply threads expand.
- Set maxRepliesPerComment to restrict replies per individual thread or leave at zero for all.
- Paste cookies into cookies or leave the field blank to rely on the managed session pool.
- Execute the run and review the output dataset for expected comment fields.
How do you apply it? Three worked playbooks
These are Instagram Comment Scraper's own documented use cases, each worked through as an operating pattern rather than a description.
Use case 1: Sentiment analysis
Outcome: Collect comment text at scale to understand audience reaction to a post or campaign
Configure: Set postUrls to target post links and keep includeReplies enabled to capture full conversational context.
Working method: Run the Actor against a single post first, export the dataset, and verify that text fields contain substantive comments before scaling up to batch URLs.
Deliverable: A structured dataset of comment text, author usernames, likesCount, and timestamps.
Stop condition: Zero comments returned despite a valid post URL and active session cookies.
Use case 2: Community moderation
Outcome: Monitor comments on your own posts to identify spam, toxicity, or rule violations
Configure: Provide your own post URLs in postUrls, enable includeReplies, and set maxCommentsPerPost to cover recent activity.
Working method: Filter the resulting dataset by authorUsername and mentions to spot recurring problematic accounts or policy violations.
Deliverable: A list of flagged comments complete with commentUrl for direct moderation actions.
Stop condition: Repeated authorization failures indicating expired cookies.
Use case 3: Influencer research
Outcome: Analyse engagement quality on an influencer's posts before signing a collaboration
Configure: Input multiple reel or post URLs from the influencer into postUrls with maxCommentsPerPost set to a higher threshold like 1000.
Working method: Compare likesCount and replyCount distributions across multiple posts to detect artificial engagement patterns.
Deliverable: An aggregate metrics dataset detailing author verification status and engagement depth.
Stop condition: Runs timing out repeatedly due to oversized comment threads on viral posts.
What breaks, and how do you design around it?
- Over the last 30 days, 0.0% of public runs failed and 0.5% timed out. Build retries and alerting around those rates rather than assuming every run completes.
When hitting pagination ceilings on viral posts, cap maxCommentsPerPost to prevent long execution times. For restricted media URLs where Instagram withholds direct links, rely on commentType and text placeholders to categorize attachments.
When should you not use Instagram Comment Scraper?
Do not use this Actor if you need to download raw media binaries or if your workflow depends on private account comment access without a following session. If your primary goal is collecting grid posts or feed metadata rather than conversation threads, use the Instagram Post Scraper instead. Similarly, if you only need high-level profile statistics without comment text, skip this tool entirely and query profile-specific endpoints directly.
What should you check before trusting the output?
- Verify that commentId values are non-null and unique across all collected items.
- Check that authorUsername and authorId populate for every comment record.
- Confirm that timestamp entries conform to ISO 8601 formatting.
- Stop and adjust session authentication if comment collection drops to zero unexpectedly on public posts.
None of this proves a record is correct. It gives a scheduled Instagram Comment Scraper run defined points where it should stop instead of quietly passing bad data downstream.
Frequently asked questions
Do I need an Instagram account to use this actor?
The actor accesses Instagram as a logged-in user because comment data is not fully accessible to logged-out visitors. You can either provide your own cookies or leave the field blank and use the built-in managed session pool.
Will this work on private accounts?
Comments on private posts are only accessible if the session used belongs to an account that follows the private profile. If the session does not follow the account, the actor will return zero comments for that post.
How many comments can I scrape per run?
Up to 10000 comments per post, which is configured via maxCommentsPerPost. Unlimited scraping is not supported, so posts with more comments than that will be capped at the first 10000 items.
What does maxRepliesPerComment control?
When includeReplies is enabled, replies are fetched for comment threads that have them. maxRepliesPerComment caps how many replies return per individual thread, while setting it to 0 fetches all available replies for every thread.
Why do some comments show Photo unavailable instead of an image?
Instagram's web API withholds media file URLs for certain comment types and only returns a placeholder string. The commentType field will still show image so you know a media comment was present.
Where to go next
When you are ready to run it, open Instagram Comment Scraper on Apify.
Start with the Instagram Comment Scraper Actor page for the current input schema, pricing tier, and run history.
It is part of the Instagram Scraping Suite, which puts every related Actor on one page with its price and run history.
If you are comparing approaches rather than committing to one Actor, these category pages list every option we publish:
- Comment scrapers covers 37 Actors in this family.
Readers running Instagram Comment Scraper commonly pair it with:
- Instagram Hashtag Scraper: Extract posts from Instagram hashtags with complete metadata including engagement metrics, captions, media info, and author details.
- Instagram Post Scraper: Scrape public Instagram posts, reels, IGTV and carousel posts from direct URLs with no login, no cookies, no browser required.
- Instagram Tagged Posts Scraper: Extracts posts where a specific Instagram user is tagged by others.
- Instagram Downloader API: Download photos, videos, reels, and carousels from Instagram posts.
- Instagram Followers & Following Scraper: Scrape Instagram followers and following lists.
- Instagram Profile Scraper: Extract comprehensive data from Instagram profiles including posts, reels, photos, and engagement metrics.
- Instagram Keyword Search Scraper: Extract posts from Instagram keyword search results.
- Instagram Transcript Scraper: Extract transcripts from Instagram videos and reels using auto-generated captions or AI-powered speech-to-text.
Related guides:
- Automating Instagram Post Extraction: Custom Workflows and Playbooks
- Instagram Downloader API: 773 of 815 Runs Succeeded (2026)
- Automating Influencer Vetting on Instagram and TikTok: Full Guide
- Instagram Data Extraction Guide: Profiles, Hashtags, and Comments
Resources
Actor documentation, input schema, and pricing: verified against the published Actor on 2026-09-23.
Actor last updated by its maintainers on 2026-08-14.
Run outcome figures cover the 30 day public window ending 2026-09-23.
● Featured actors
Instagram Comment Scraper
Extract comments from Instagram posts and reels with complete metadata including replies, likes, and author details. Features smart pagination, reply threading, and safe browser automation.
Run on Apify ↗