SFOLN

Catalogue / Social media data

Instagram Comments Scraper (No Login)

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.

About

What it does

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

EventPricePer 1,000Charged for
Instagram comment
instagram-comment
$0.0003$0.30 / 1,000Charged 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,000Charged 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,000Charged 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

curl · synchronous run, rows in the response
curl -X POST "https://api.apify.com/v2/actors/sfoln~instagram-post-comments/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"posts":["https://www.instagram.com/reel/DOq6eV6iIgD"],"maxCommentsPerPost":15}'
mcp.json · hosted Apify MCP server
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com?tools=sfoln/instagram-post-comments"
    }
  }
}
asynchronous run · for large batches
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.

FieldTypeDefaultMeaning
posts *arrayrequiredPost 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.
maxCommentsPerPostinteger50Max 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.
includeRepliesbooleanfalseInclude 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.
maxPostsinteger100Max posts
Safety cap on the number of posts processed in this run. Range 1–1000.
concurrencyinteger4Concurrency
How many posts are fetched in parallel (1–8). Range 1–8.
itemTimeoutSecsinteger600Time 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.
includeRawbooleanfalseInclude raw upstream response
Attach the unmodified provider object to each result record.
Example input
{
  "posts": [
    "https://www.instagram.com/reel/DOq6eV6iIgD"
  ],
  "maxCommentsPerPost": 15
}

Output

One record per input item

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.

FieldTypeMeaning
inputstring | objectInput
The post URL or shortcode as provided.
recordTypestringRecord type
comment (one per delivered comment or reply, charged) | post (one summary per post, never charged) e.g. "comment"
positionintegerPosition
1-based position of the comment within its input
shortcodestring | nullPost shortcode
postUrlstring | nullPost URL
includeRepliesbooleanReplies requested
Summary records only.
commentIdstring | nullComment ID
textstring | nullText
createdAtstring | nullCreated at
ISO 8601 UTC
likesnumber | nullLikes
repliesCountnumber | nullReplies
null when Instagram does not expose it
isReplybooleanIs reply
parentCommentIdstring | nullParent comment ID
Set for replies
authorHandlestring | nullAuthor handle
authorIdstring | nullAuthor ID
authorIsVerifiedboolean | nullAuthor verified
authorProfilePicUrlstring | nullAuthor picture
rowsDeliveredintegerComments delivered
Summary records only.
pagesFetchedintegerPages fetched
Summary records only.
pagesChargedintegerPages charged
Summary records only.
reachedEndbooleanReached end
Summary records only: the upstream reported no further pages.
stopReasonstringStop reason
Summary records only: limit | end | budget | max_pages | deadline | empty_pages | error
statusstringStatus
ok | not_found | error | skipped_invalid | skipped_budget | skipped_free_plan e.g. "ok"
chargedbooleanCharged
chargedEventstringCharged event
errorobjectError
warningsarrayWarnings
sourcestringSource
fetchedAtstringFetched at
Example record
{
  "input": "https://www.instagram.com/reel/DOq6eV6iIgD",
  "recordType": "comment",
  "position": 1,
  "shortcode": "DOq6eV6iIgD",
  "postUrl": "https://www.instagram.com/p/DOq6eV6iIgD/",
  "commentId": "18051843701642870",
  "text": "\"...but who wants to know people who don't love animals anyway?\". ❤️",
  "createdAt": "2025-09-16T17:03:04.000Z",
  "likes": 0,
  "repliesCount": 0,
  "isReply": false,
  "parentCommentId": null,
  "authorHandle": "catherina_thijs",
  "authorId": "46773599357",
  "authorIsVerified": false,
  "authorProfilePicUrl": "https://scontent-dfw5-1.cdninstagram.com/v/t51.2885-19/….jpg",
  "status": "ok",
  "charged": true,
  "chargedEvent": "instagram-comment",
  "source": "scrapecreators",
  "fetchedAt": "2026-10-14T10:00:00.000Z"
}

Machine-readable

This page for agents