Instagram Comments Scraper — Replies, No Login · $0.8/1K avatar

Instagram Comments Scraper — Replies, No Login · $0.8/1K

Pricing

from $0.80 / 1,000 results

Go to Apify Store
Instagram Comments Scraper — Replies, No Login · $0.8/1K

Instagram Comments Scraper — Replies, No Login · $0.8/1K

Instagram Comments Scraper for posts and reels, no login or cookies, $0.80 per 1,000 comments. Get comment text, timestamps, like and reply counts, nested replies, commenter username, verified badge and profile pic, plus the post caption. Monitoring mode returns only new comments. JSON/CSV.

Pricing

from $0.80 / 1,000 results

Rating

5.0

(4)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

3

Bookmarked

393

Total users

158

Monthly active users

3 hours ago

Last modified

Features

Limited permissions

Share

Instagram Comments Scraper — whole threads, replies, no login

Paste a post or reel URL and get its comments, the replies under them, and who wrote each one. No Instagram account, no cookies, no session to keep alive.

Overview

Instagram publishes only the first stretch of a comment thread to the public: on a post with 360 comments its own pages stop after about 18. This actor does not stop there — it reads the whole thread. Measured on 2026-11-03: 348 of 360, and 209 of 215, where the public pages gave 18 and 16.

Comments, their nested replies, and optionally the people who liked each comment, all without a login. For marketers, community managers and researchers who need the conversation, not a sample of it.

Features

  • No login: comments AND their replies are scraped without an Instagram account or cookies.
  • Whole threads: the run keeps paging where Instagram's public pages stop, so a 360-comment post returns 348 rows rather than 18.
  • Reply Support: nested replies arrive as their own rows, each carrying parent_comment_id, right after the comment they answer.
  • Comment likers (opt-in): includeCommentLikers adds who liked each comment — username, full name, user id, verified and private flags.
  • User Information: Get detailed information about comment authors including verification status and profile data.
  • Engagement Metrics: Track likes, reply counts, and engagement patterns on comments.
  • Flexible Input: Accept Instagram post URLs to scrape comments from.
  • Proxy Support: works out of the box, or bring your own proxies.
  • Concurrent Scraping: Efficiently scrape comments from multiple posts with adjustable concurrency.

Advanced Scraping Capabilities

  • Pagination Handling: Automatically navigates through all comment pages
  • Efficient Processing: Processes only new or updated comments in subsequent runs
  • Change Detection: Identifies new comments, edits, and engagement changes
  • Scheduled Monitoring: Set up automated runs to keep your comment data current
  • Incremental Data Collection: Build comprehensive comment datasets over time

How to Use

  1. Set Up: Ensure you have an Apify account and access to the Apify platform.
  2. Install Cookie-Editor (there is option to Export cookies as JSON) or EditThisCookie chrome extension.
  3. Login to your Instagram account
  4. While you are on Instagram site go to post you want scrape, Click on the extension and export the cookies. Cookies are used to authorize actor with Instagram.com site. Install any (or all) of the following chrome extensions to copy cookies:
  5. Specify the Instagram post URL you want to scrape. Input your search URLs in the format https://www.instagram.com/p/{post-id}. You can add multiple URLs for a broader search scope.
  6. Adjust Settings: Configure options like max items, monitoring mode, and proxy settings as needed.
  7. Run the Scraper: Execute the scraper on the Apify platform.
  8. Data Collection: The scraper will output detailed comment and reply data from the specified Instagram post(s).

Input Configuration

Here's an example of how to set up the input for the Apify Instagram Comments Scraper:

{
"startUrls": [
{
"url": "https://www.instagram.com/p/POST_ID/"
}
],
"monitoringMode": false,
"maxConcurrency": 10,
"minConcurrency": 1,
"maxRequestRetries": 100,
"cookies": [
{
"name": "sessionid",
"value": "your_session_id_here",
"domain": ".instagram.com",
"path": "/",
"expires": -1,
"httpOnly": true,
"secure": true
}...
],
"proxy": {
"useApifyProxy": true,
"apifyProxyGroups": [
"RESIDENTIAL"
]
}
}

Input Fields Explanation

  • startUrls: Array containing Instagram post URLs to scrape comments from (e.g., https://www.instagram.com/p/POST_ID/).
  • maxItems: Maximum number of rows per run (default: 30). Replies and comments share this budget, so raise it when you want whole threads — a busy post can carry several hundred rows.
  • commentCountsOnly: Return one row per post with its comment count instead of the comments themselves (default: false). Ten posts are answered per request, so counting a large batch is fast, and each post costs one row rather than thousands. Rows carry postUrl, shortCode, postId, commentCount, hasMoreComments, commentThreadingEnabled, commentLikesEnabled. Use it to find which posts are worth a full scrape.
  • monitoringMode: When enabled, only scrapes new comments compared to previous runs (default: false).
  • maxConcurrency: Maximum number of pages processed simultaneously (default: 10).
  • minConcurrency: Minimum number of pages processed simultaneously (default: 1).
  • maxRequestRetries: Number of retries for failed requests (default: 100).
  • includeReplies: Pull the nested replies under each comment (default: true). They count toward maxItems like any other row.
  • includeCommentLikers: Add comment_likers to every comment that has at least one like (default: false). One lookup per liked comment, so it costs time on a busy post; comments with no likes are skipped for free. maxCommentLikers caps the list per comment (default: 50) and a trimmed one is marked comment_likers_complete: false.
  • cookies: Optional, and rarely needed. Comments and replies are scraped without any login. A session is used only to continue on the few posts where every public route stops early. One that is expired or refused costs nothing — the run keeps its rows and says so in the status.
  • proxy: Proxy configuration settings. Leave empty to use the default, which works out of the box.

How many comments you actually get

Instagram's own public pages hand out the first stretch of a thread and then stop, whatever the post's own counter says. This actor reads past that, so what you get is the thread rather than a sample. Measured 2026-11-03:

post reportsInstagram's public pagesthis actor
36018348
21516209
1262627 — that post genuinely restricts its comments

Two things still bound a run: maxItems, which you set, and the handful of posts where Instagram serves almost nothing to anyone. When a run does stop early, it says so in the run status rather than finishing quietly — and on those posts a session in cookies is what carries it further.

A run also ends itself before Apify's timeout and keeps everything collected, so a long job delivers rows instead of being killed with nothing.

What changed on 3 November 2026

The source behind the comment rows changed, so two things are different from runs before that date. Both are stated here rather than left to be discovered in a dataset.

You get far more rows per post. The run reads the whole thread instead of the first stretch, so a post that used to return 18 rows now returns around 348. Rows are what this actor bills, so a job over busy posts costs proportionally more than it did. maxItems is the control: set it to what you actually want, and the run stops there.

Six fields are gone and two are back. The rows now arrive in Instagram's own mobile shape. id and parent_comment_id are kept on every row — id is the comment id, and parent_comment_id is null on a top-level comment and set on a reply. These four came from the logged-out web route and are no longer sent at all: __typename, giphy_media_info, has_translation, restricted_status. Everything most jobs rely on is unchanged: pk, text, user, comment_like_count, child_comment_count, created_at, comment_count, is_covered.

In exchange the rows carry more than before, including media_id, user_id, created_at_utc, comment_index, content_type and is_ranked_comment.

Monitoring Mode

When monitoringMode is enabled, the scraper will only collect new comments that haven't been seen in previous runs. This is useful for:

  • Tracking new comments as they are posted
  • Building a historical archive of comment data
  • Monitoring specific posts for new engagement without duplicating data

Output Structure

The scraper provides comprehensive information about Instagram comments and replies. Here's a detailed breakdown of the comment data structure:

{
"pk": "18041440847367566",
"user_id": "30996309",
"type": 0,
"did_report_as_spam": false,
"created_at": 1755710385,
"created_at_utc": 1755710385,
"created_at_for_fb_app": 1755710385,
"content_type": "comment",
"status": "Active",
"bit_flags": 0,
"share_enabled": true,
"is_ranked_comment": true,
"media_id": "3703474826853241387",
"comment_index": 0,
"strong_id__": "18041440847367566",
"preview_child_comments": [],
"child_comment_count": 0,
"other_preview_users": [],
"user": {
"pk": "30996309",
"pk_id": "30996309",
"id": "30996309",
"full_name": "ᴍɪʀᴇʟᴀ ʀᴇᴅᴢɪᴄ",
"strong_id__": "30996309",
"fbid_v2": "17841400609270484",
"username": "mirela_red",
"is_private": false,
"is_verified": true,
"profile_pic_id": "3706544462531056975_30996309",
"profile_pic_url": "https://instagram.fsvq4-2.fna.fbcdn.net/v/t51.2885-19/539026542_18525334540020310_2024530807944729888_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=instagram.fsvq4-2.fna.fbcdn.net&_nc_cat=110&_nc_oc=Q6cZ2QFEBoFBVjmNJ-oCrWUejCFnE8uX5309VzWP8sWcV09O77xWpZP-2vtOCvU1A0TB8UA&_nc_ohc=-3cueLl6fN0Q7kNvwG67aee&_nc_gid=nY7luBHx7yhllT8R8XJY-A&edm=AId3EpQBAAAA&ccb=7-5&oh=00_AffSVashciQRbs2BvVdm_pNqgeBsdsxZdIqDEOg5MNDBiA&oe=68FFC656&_nc_sid=f5838a",
"is_mentionable": true,
"latest_reel_media": 1761168811
},
"inline_composer_display_condition": "never",
"has_liked_comment": false,
"comment_like_count": 15,
"liked_by_media_coauthors": [
{
"fbid_v2": "17841400945485293",
"full_name": "Šejla Ramović Šeko",
"id": "338783516",
"pk": "338783516",
"pk_id": "338783516",
"strong_id__": "338783516",
"is_mentionable": true,
"is_private": false,
"is_verified": true,
"profile_pic_id": "3209658442469135321_338783516",
"profile_pic_url": "https://instagram.fsvq4-2.fna.fbcdn.net/v/t51.2885-19/387266053_163594813472632_4795146350413367507_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=instagram.fsvq4-2.fna.fbcdn.net&_nc_cat=104&_nc_oc=Q6cZ2QFEBoFBVjmNJ-oCrWUejCFnE8uX5309VzWP8sWcV09O77xWpZP-2vtOCvU1A0TB8UA&_nc_ohc=XSXZAV5v78cQ7kNvwEasq1n&_nc_gid=nY7luBHx7yhllT8R8XJY-A&edm=AId3EpQBAAAA&ccb=7-5&oh=00_AfcDys7XQGGPHTFHNLrmdRyFdYgvkcMR4VVl6OW7EHm1hw&oe=68FFD31B&_nc_sid=f5838a",
"username": "ramoviceva"
}
],
"private_reply_status": 0,
"has_disliked_comment": false,
"text": "Kakve ste😍",
"is_covered": false,
"caption": {
"pk": "18059135618094605",
"user_id": "1014212728",
"type": 1,
"did_report_as_spam": false,
"created_at": 1755708776,
"created_at_utc": 1755708776,
"created_at_for_fb_app": 1755708776,
"content_type": "comment",
"status": "Active",
"bit_flags": 0,
"share_enabled": true,
"is_ranked_comment": true,
"media_id": "3703474826853241387",
"is_created_by_media_owner": true,
"strong_id__": "18059135618094605",
"user": {
"pk": "1014212728",
"pk_id": "1014212728",
"id": "1014212728",
"full_name": "LEJLA RAMOVIĆ",
"is_unpublished": false,
"strong_id__": "1014212728",
"fbid_v2": "17841400141855847",
"username": "ramoviclejla",
"is_private": false,
"is_verified": true,
"profile_pic_id": "2341761271189602138_1014212728",
"profile_pic_url": "https://instagram.fsvq4-2.fna.fbcdn.net/v/t51.2885-19/106044521_303921167448484_9203814137983694664_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=instagram.fsvq4-2.fna.fbcdn.net&_nc_cat=104&_nc_oc=Q6cZ2QFEBoFBVjmNJ-oCrWUejCFnE8uX5309VzWP8sWcV09O77xWpZP-2vtOCvU1A0TB8UA&_nc_ohc=ZUzkN9RGAlkQ7kNvwFkzhhR&_nc_gid=nY7luBHx7yhllT8R8XJY-A&edm=AId3EpQBAAAA&ccb=7-5&oh=00_AfdjoXpBWh8VtIn_bZAiANUd8N04iKbVTekQ9eLyDAb4fg&oe=68FFD7D7&_nc_sid=f5838a"
},
"liked_by_media_coauthors": [],
"private_reply_status": 0,
"text": "🤍",
"is_covered": false
},
"comment_count": 1008
}

Detailed Field Explanations

Comment Metadata
  • pk: Primary key - unique identifier for the comment.
  • user_id: ID of the user who posted the comment.
  • type: Comment type indicator (0 for regular comments).
  • did_report_as_spam: Boolean indicating if the comment was reported as spam.
  • created_at: Unix timestamp of when the comment was created.
  • created_at_utc: UTC timestamp of comment creation.
  • created_at_for_fb_app: Timestamp for Facebook app integration.
  • content_type: Type of content (e.g., "comment").
  • status: Current status of the comment (e.g., "Active").
  • bit_flags: Internal flags for comment properties.
  • share_enabled: Boolean indicating if the comment can be shared.
  • is_ranked_comment: Whether the comment is ranked/featured by Instagram's algorithm.
  • media_id: ID of the post this comment belongs to.
  • comment_index: Position index of the comment.
  • strong_id__: Strong identifier for the comment.
Child Comments & Replies
  • preview_child_comments: Array of preview replies to this comment.
  • child_comment_count: Total number of replies to this comment.
  • other_preview_users: Array of other users who have replied.
  • comment_count: Total count of comments (when this is the post caption).
User Information
  • user: Object containing information about the comment author.
    • pk, pk_id, id: Various identifiers for the user.
    • full_name: The user's display name.
    • username: The user's Instagram handle.
    • is_private: Whether the user's account is private.
    • is_verified: Whether the user has a verified badge.
    • profile_pic_id: ID of the user's profile picture.
    • profile_pic_url: URL to the user's profile picture.
    • is_mentionable: Whether the user can be mentioned in comments.
    • latest_reel_media: Timestamp of the user's latest reel.
    • fbid_v2: Facebook ID associated with the account.
    • strong_id__: Strong identifier for the user.
Engagement Metrics
  • has_liked_comment: Boolean indicating if the viewer has liked this comment.
  • comment_like_count: Number of likes on the comment.
  • has_disliked_comment: Boolean indicating if the viewer has disliked this comment.
  • liked_by_media_coauthors: Array of media co-authors who liked the comment.
    • Contains user objects with pk, username, full_name, is_verified, profile_pic_url, etc.
Comment Content
  • text: The actual text content of the comment.
  • is_covered: Boolean indicating if the comment is covered/hidden.
  • inline_composer_display_condition: Display condition for inline reply composer.
  • private_reply_status: Status of private reply (0 for public).
Caption Information
  • caption: Object containing the post's caption (when applicable).
    • Contains similar structure to a comment with pk, user_id, text, created_at, etc.
    • is_created_by_media_owner: Boolean indicating if the caption was created by the post owner.
    • user: Full user object of the post owner.

This comprehensive comment data structure provides detailed information about Instagram comments and replies, including author information, engagement metrics, timestamps, and nested reply structures. It's particularly useful for analyzing comment sentiment, engagement patterns, and community interactions on Instagram posts.

Free Apify plan

On the free Apify plan, the first 3 comments of each run come back in full, so you can check the data. After that, rows keep the comment id, post id, author (username and profile), timestamps and status flags, while the comment text is cut to its first 3 characters, reply previews and comment likers are hidden, and like and comment counts are rounded to their order of magnitude. A freePlanNote field marks those rows. Any paid Apify plan returns every field in full. Comment likers (includeCommentLikers) are available on paid Apify plans only, so on the free plan they are not fetched at all.

Explore More Scrapers

If you found this Apify Instagram Comments Scraper useful, be sure to check out our other powerful scrapers and actors at memo23's Apify profile. We offer a wide range of tools to enhance your web scraping and automation needs across various platforms and use cases.

Support

Additional Services

🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/apify-instagram-comments-scraper).

Purpose: Scrapes comments (and optionally nested replies) from Instagram post/reel URLs — top-level comments are collected cookielessly with full pagination.

Minimal input:

{
"startUrls": [{ "url": "https://www.instagram.com/p/BsOGulcndj-/" }],
"maxItems": 30
}

Output: one row per comment — pk, user_id, text, created_at, comment_like_count, child_comment_count, comment_index, media_id, content_type, status, user {pk, username, full_name, is_verified, is_private, profile_pic_url}, liked_by_media_coauthors, caption {text, user}.

Behaviors an agent should know:

  • Always set maxItems (default 30, per start URL) — a popular post has thousands of comments; an uncapped run can be large.
  • Top-level comments need no login; supply cookies (a logged-in instagram.com array including sessionid and csrftoken) ONLY if you also want nested replies.
  • commentsSortOrder accepts popular (most liked first, default) or recent (newest first).
  • commentCountsOnly replaces the crawl entirely: it returns counts, not comments, and ignores maxItems and commentsSortOrder.
  • monitoringMode: true scrapes only comments new since the previous run (dedup state kept across runs).
  • Leave proxy empty: the default works out of the box at no extra cost.
  • Billing: Pay-per-event billing — see the Pricing tab on the actor page.

⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Meta Platforms, Inc. or any of its subsidiaries, including Instagram. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available Instagram post and reel comment data — no paid features and no content behind the instagram.com login wall. Optional nested-reply retrieval uses cookies you supply from your own logged-in session, at your discretion. Users are responsible for ensuring their use complies with instagram.com's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organization.

SEO Keywords

instagram comments scraper, scrape instagram comments, instagram comments API, instagram.com scraper, Apify instagram, instagram reel comments scraper, instagram post comments scraper, social media comments scraper, comment extraction tool, instagram comment analysis, sentiment analysis data, audience engagement data, comment replies export, influencer marketing data, brand monitoring data, social media intelligence, instagram data extraction

⌂ 换网址