Skip to content

September 23, 2026 · 11 min read

Instagram Comment Scraper: 396 of 441 Runs Succeeded (2026)

By Crawlerbros Engineering Team

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 comment
  • text - 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, sticker
  • isGif - true if the comment is a GIF reaction
  • authorUsername - Instagram handle of the commenter
  • authorId - numeric Instagram user ID of the commenter
  • authorIsVerified - true if the commenter has a blue verification badge
  • authorProfilePic - CDN URL of the commenter's profile picture
  • timestamp - when the comment was posted (ISO 8601)
  • likesCount - number of likes on the comment
  • replyCount - number of replies to this comment
  • isReply - true if this is a reply to another comment
  • isEdited - true if the comment was edited after posting
  • mentions - list of @mentioned usernames extracted from the comment text
  • hashtags - list of #hashtags extracted from the comment text
  • postUrl - URL of the Instagram post being scraped
  • postShortcode - short alphanumeric identifier of the source post
  • commentUrl - direct URL to this specific comment
  • scrapedAt - ISO 8601 timestamp of when the record was collected
  • parentCommentId - ID of the top-level comment this reply belongs to
  • parentCommentAuthor - username of the top-level comment author
  • mediaUrl - 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.

  1. Provide postUrls with target Instagram post or reel links.
  2. Adjust maxCommentsPerPost to limit the item count per URL.
  3. Toggle includeReplies to control whether nested reply threads expand.
  4. Set maxRepliesPerComment to restrict replies per individual thread or leave at zero for all.
  5. Paste cookies into cookies or leave the field blank to rely on the managed session pool.
  6. 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:

Readers running Instagram Comment Scraper commonly pair it with:

Related guides:

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.

  • Instagram Comment Scraper on Apify

● 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 ↗