Instagram Comments Scraper — Replies, No Login · $0.8/1K
Pricing
from $0.80 / 1,000 results
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
Maintained by CommunityActor stats
3
Bookmarked
393
Total users
158
Monthly active users
3 hours ago
Last modified
Categories
Features
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):
includeCommentLikersadds 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
- Set Up: Ensure you have an Apify account and access to the Apify platform.
- Install Cookie-Editor (there is option to Export cookies as JSON) or EditThisCookie chrome extension.
- Login to your Instagram account
- 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:
- 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. - Adjust Settings: Configure options like max items, monitoring mode, and proxy settings as needed.
- Run the Scraper: Execute the scraper on the Apify platform.
- 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 carrypostUrl,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 towardmaxItemslike any other row.includeCommentLikers: Addcomment_likersto 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.maxCommentLikerscaps the list per comment (default: 50) and a trimmed one is markedcomment_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 reports | Instagram's public pages | this actor |
|---|---|---|
| 360 | 18 | 348 |
| 215 | 16 | 209 |
| 126 | 26 | 27 — 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.
- Contains user objects with
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.
- Contains similar structure to a comment with
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
- For issues or feature requests, please use the Issues section of this actor.
- If you need customization or have questions, feel free to contact the author:
- Author's website: https://muhamed-didovic.github.io/
- Email: muhamed.didovic@gmail.com
Additional Services
- Request customization or whole dataset: muhamed.didovic@gmail.com
- If you need anything else scraped, or this actor customized, email: muhamed.didovic@gmail.com
- For API services of this scraper (no Apify fee, just usage fee for the API), contact: muhamed.didovic@gmail.com
- Email: muhamed.didovic@gmail.com
🤖 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 includingsessionidandcsrftoken) ONLY if you also want nested replies. commentsSortOrderacceptspopular(most liked first, default) orrecent(newest first).commentCountsOnlyreplaces the crawl entirely: it returns counts, not comments, and ignoresmaxItemsandcommentsSortOrder.monitoringMode: truescrapes only comments new since the previous run (dedup state kept across runs).- Leave
proxyempty: 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