Instagram Comments Scraper & Post Details
Pricing
$19.99/month + usage
Instagram Comments Scraper & Post Details
Instagram Comments Scraper & Post Details extracts comments from Instagram posts. It collects usernames, comment text, likes, timestamps, and reply data. Ideal for audience sentiment analysis, engagement tracking, influencer research, and social media monitoring.
Pricing
$19.99/month + usage
Rating
5.0
(1)
Developer
ScrapeBase
Maintained by CommunityActor stats
0
Bookmarked
24
Total users
2
Monthly active users
14 days ago
Last modified
Categories
Share
Collect comments from public Instagram posts and reels — and, on the same row as each comment, the post's own record: caption, owner, like/comment totals, when it went up, and its media type. No login required for comments; add a session cookie only if you hit rate limits.
What it does
Give it one or more Instagram post/reel URLs. For every comment on those posts you get:
- the comment text, the commenter's username, profile picture and per-comment like count
- a UTC timestamp
- the post's own details — caption, total likes, total comment count, posted date, media type (photo / carousel / reel), the post owner's username/id/profile picture, and Instagram's own topic labels for the post (e.g. "handmade pottery")
This saves joining two exports when you need "which post triggered this conversation" alongside the comments themselves — useful for content recaps, social listening, and moderation review.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
directUrls | array of strings | ["https://www.instagram.com/p/DN8-GjPkgjS"] | Instagram post/reel URLs |
scrapingOptions.maxComments | integer (1–10000, capped at 500 in practice) | 10 | Max comments per post |
scrapingOptions.maxReplies | integer (0–500, capped at 50 in practice) | 2 | See caveat below — replies need a session and Instagram's logged-out surface does not expose them today |
scrapingOptions.sessionId | string | — | Your Instagram sessionid cookie, for more reliable access |
scrapingOptions.includeNestedComments | boolean | true | Enable/disable reply collection |
scrapingOptions.isNewestComments | boolean | false | Kept for compatibility only — Instagram's logged-out comments endpoint does not accept a sort parameter, so this has no effect |
proxyConfiguration | object | — | Optional proxy fallback (the actor tries no proxy first, then datacenter, then residential, automatically) |
includePostDetails | boolean | true | New. Attach the post's own record (caption, likes, comments, posted date, media type) to every comment row |
includePostOwner | boolean | true | New. Add the post owner's username/id/profile picture |
includePostTopics | boolean | true | New. Add Instagram's own topic labels for the post, when present |
Output
One dataset record per comment:
{"postUrl": "https://www.instagram.com/p/DN8-GjPkgjS","commentUrl": "https://www.instagram.com/p/DN8-GjPkgjS/c/17878685814505076","id": "17878685814505076","text": "❤️","ownerUsername": "rifayil_ahmmed","ownerProfilePicUrl": "https://instagram.f…/…jpg","timestamp": "2026-07-31T09:39:59.000Z","repliesCount": 0,"replies": [],"likesCount": 0,"owner": {"fbid_v2": "", "full_name": "", "id": "78425128684","is_mentionable": true, "is_private": false, "is_verified": false,"latest_reel_media": 0, "profile_pic_id": "","profile_pic_url": "https://instagram.f…/…jpg","username": "rifayil_ahmmed"},"post": {"id": "3710113322089187538","shortcode": "DN8-GjPkgjS","caption": "Which one is your new hangout spot? 🤔\n\nMade with @meta.ai","captionIsEdited": false,"likesCount": 179266,"commentsCount": 9992,"likeAndViewCountsDisabled": false,"takenAt": "2025-08-29T20:39:55.000Z","mediaType": 8,"productType": "carousel_container","accessibilityCaption": "Photo by Instagram on August 29, 2025.","location": null,"coauthorUsernames": [],"owner": { "id": "25025320", "username": "instagram", "profilePicUrl": "https://…" },"topics": [{ "topicId": "handmade-pottery", "topicName": "handmade pottery" }]}}
replies[] entries carry the same shape minus postUrl, with commentUrl moved to the end and
built as <postUrl>/c/<parentCommentId>/r/<replyId>.
post is null when includePostDetails is false, or when the post is gated (rare, logged
out). post.owner is null when includePostOwner is false; post.topics is [] when
includePostTopics is false or when Instagram has no topic labels for that post.
The full run is also mirrored to the key-value store under key OUTPUT as one JSON array.
Honest limitations (read before you rely on this)
- Replies are not available logged out. Instagram's current logged-out surface has no
working "child comments" endpoint at all (
child_comment_countis always reported asnull, and the in-app "View all replies" button opens a login prompt).maxReplies/includeNestedCommentsstay in the input for compatibility, butreplieswill be[]andrepliesCountwill be0on every row until Instagram changes this. A logged-out actor cannot honestly claim reply data — this variant does not fabricate any. - Comments are not sortable.
isNewestCommentsis kept for input compatibility only. Instagram's logged-out comments query does not accept a sort argument; whatever order the API returns is what you get (in practice: recency order, not user-selectable). - 500 real comments per post per run. The 10000 shown as the input maximum is not honoured — actual throughput is capped by Instagram's own soft rate limiting (roughly 10–12 requests per IP per two minutes logged out), which is why a proxy fallback exists.
- The commenter's full name, private/mentionable flags, and profile-picture id are not real
data. Instagram's logged-out comment payload doesn't return them; these fields stay in the
output (unchanged from the base actor) but are fixed placeholder values (
"",true,false,0), exactly as Instagram's own logged-out API omits them. post.locationandpost.coauthorUsernamesare pass-through fields — on every post measured so far Instagram returnsnull/[]for them logged out, so expect that in practice; the field is preserved as-is in case a future post carries a real value.