sfoln/instagram-post-comments · Social media, Lead generation, Automation On request
Scrape comments from public Instagram posts and reels, no login needed: text, date, likes, reply count and the commenter's handle, with optional replies linked to their parent. $0.30 per 1,000 comments + $0.003 per page of comments.
Instagram Comments Scraper (No Login) gets comments from public Instagram posts and reels, one normalized record per comment: comment ID, text, date, likes, reply count, and the commenter's handle, ID and verification flag. Turn on includeReplies to also get the first page of replies to every comment, linked to their parent. It's built for audience research, sentiment analysis, giveaway draws, community management and AI agents.
Price
Price per delivered record
Event
Price
Per 1,000
Charged for
Instagram comment instagram-comment
$0.0003
$0.30 / 1,000
Charged once per comment or reply delivered as a dataset record. Post summary records are never charged.
Comments page instagram-comments-query
$0.003
$3 / 1,000
Charged once per page of comments that delivered at least one comment (replies not requested). Covers the per-request upstream fee. Also charged for an empty page the upstream billed (when the budget covers it).
Comments page with replies instagram-comments-with-replies-page
$0.075
$75 / 1,000
Charged instead of instagram-comments-query for every page that delivered comments when includeReplies is on (the upstream performs one reply lookup per comment and bills 15 credits per page). Also charged for an empty page the upstream billed (when the budget covers it).
Apify free plan: up to 5 items per run. Paid plans have no per-run cap; set maxTotalChargeUsd to cap spend.
Run
Call it from code, an agent or the Console
This API is private on Apify for now. Email us and we will publish it for you, usually within two working days. The calls below work once it is public. contact@sfoln.com
POST https://api.apify.com/v2/actors/sfoln~instagram-post-comments/runs?maxTotalChargeUsd=1
GET https://api.apify.com/v2/actor-runs/{runId} # until status is SUCCEEDED
GET https://api.apify.com/v2/datasets/{defaultDatasetId}/items?format=json
Authenticate with an Apify API token. MCP clients can instead sign in with OAuth when prompted. Example prompt for an agent: Get the first 100 comments on the Instagram reel https://www.instagram.com/reel/DOq6eV6iIgD and tell me the overall sentiment and the most common questions.
Input
Input fields
Enter Instagram post or reel URLs. Each post produces one dataset record per comment plus one summary record per post.
Field
Type
Default
Meaning
posts *
array
required
Post or reel URLs Public post or reel URLs (https://www.instagram.com/p/… or /reel/…) or bare shortcodes. Duplicates are removed. Accounts on the Apify free plan can process up to 5 posts per run.
maxCommentsPerPost
integer
50
Max comments per post How many comments to return per post (1–500), replies included. Each delivered comment is one charged event, plus one page event per page. Range 1–500.
includeReplies
boolean
false
Include replies Also return the first page of replies to every comment. Much slower, and each page costs the higher instagram-comments-with-replies-page fee instead of instagram-comments-query, because the upstream performs one reply lookup per comment.
maxPosts
integer
100
Max posts Safety cap on the number of posts processed in this run. Range 1–1000.
concurrency
integer
4
Concurrency How many posts are fetched in parallel (1–8). Range 1–8.
itemTimeoutSecs
integer
600
Time limit per input (seconds) Pagination for one post stops cleanly shortly before this limit (60–3600). Raise it for very large per-input limits. Range 60–3600.
includeRaw
boolean
false
Include raw upstream response Attach the unmodified provider object to each result record.
Records land in the run's dataset; a synchronous call returns them directly. Each has a status (ok is charged; everything else is free) and a charged flag. The run's OUTPUT record totals items and charges.
Field
Type
Meaning
input
string | object
Input The post URL or shortcode as provided.
recordType
string
Record type comment (one per delivered comment or reply, charged) | post (one summary per post, never charged) e.g. "comment"
position
integer
Position 1-based position of the comment within its input
shortcode
string | null
Post shortcode
postUrl
string | null
Post URL
includeReplies
boolean
Replies requested Summary records only.
commentId
string | null
Comment ID
text
string | null
Text
createdAt
string | null
Created at ISO 8601 UTC
likes
number | null
Likes
repliesCount
number | null
Replies null when Instagram does not expose it
isReply
boolean
Is reply
parentCommentId
string | null
Parent comment ID Set for replies
authorHandle
string | null
Author handle
authorId
string | null
Author ID
authorIsVerified
boolean | null
Author verified
authorProfilePicUrl
string | null
Author picture
rowsDelivered
integer
Comments delivered Summary records only.
pagesFetched
integer
Pages fetched Summary records only.
pagesCharged
integer
Pages charged Summary records only.
reachedEnd
boolean
Reached end Summary records only: the upstream reported no further pages.
stopReason
string
Stop reason Summary records only: limit | end | budget | max_pages | deadline | empty_pages | error
status
string
Status ok | not_found | error | skipped_invalid | skipped_budget | skipped_free_plan e.g. "ok"