Instagram Comments Scraper - Post & Reel Comments avatar

Instagram Comments Scraper - Post & Reel Comments

Under maintenance

Pricing

Pay per event

Go to Apify Store
Instagram Comments Scraper - Post & Reel Comments

Instagram Comments Scraper - Post & Reel Comments

Under maintenance

Instagram nests replies under a comment, and both levels come back marked: who wrote it, what they said, when, likes and reply count. Nothing for you to log in to and no cookie to paste. $0.40 per 1,000 rows, plus a $0.001 run start.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

17

Total users

2

Monthly active users

2 days ago

Last modified

Share

Instagram Comments Scraper β€” Post & Reel Comments

Give it an Instagram post or reel and it returns the comment thread as flat rows: who wrote each comment, what it says, when it was posted, how many likes it has, how many replies hang off it, and whether the author is verified. Export as JSON, CSV or Excel, or have each run delivered into a Notion data source.

There is nothing for you to log in to and no cookie to paste.

What a row looks like

{
"type": "comment",
"id": "18133156861661238",
"mediaId": "3968217932266054373",
"text": "this is unreal πŸ”₯",
"likeCount": 42,
"replyCount": 3,
"createdAt": "2026-08-19T17:35:58.000Z",
"ownerUsername": "real_user",
"ownerId": "9876543210",
"ownerVerified": false,
"isReply": false,
"parentCommentId": null
}

Replies come back too, as their own rows. A reply has isReply: true and parentCommentId set to the comment it answers, so you can rebuild the thread or filter replies out with one condition. Replies count towards maxComments and are charged like any other row.

How much of a thread you get

A run reads a fixed number of pages from the top of the thread. Instagram serves 15 comments per page, and any replies it inlines with them come along at no extra cost, so a run returns about 75 rows on a plain thread and up to 150 when the thread is reply-heavy. On a 4,487-comment NASA post it returned 76.

That is the whole story: this is not a tool for draining a 100,000-comment post, and running it again does not reach further in β€” it reads from the top each time. If a run stops before your limit it writes one free PARTIAL row saying so, instead of finishing quietly and letting you think you have the whole thread.

Instagram serves comments ranked, not strictly newest-first, so what you get is the top of the thread as Instagram orders it.

Input

FieldTypeDescription
postUrlsarrayPost, reel or TV URLs (/p/…, /reel/…, /tv/…). As many as you like.
shortcodesarrayOr bare shortcodes β€” the part of the URL after /p/ or /reel/.
maxCommentsintegerTotal rows to return, split evenly across the posts you gave. 1–150, default 100. See "How much of a thread you get".
sessionCookiesarrayOptional, and normally left empty. Supply your own Instagram sessionid if you would rather the run read through your own account; it is then used on its own.
proxyConfigurationobjectOptional. Set proxyUrls only if you want your own proxy servers used.
notionConnectorstringOptional Notion connector ID.
notionParentIdstringOptional Notion data-source ID.

When there is nothing to return

An empty dataset with a green tick is the worst possible answer, so this actor does not give one. Every run that comes back without comments writes a free row naming the reason, and the run itself fails unless the honest answer really is "this post has no comments":

What happenederrorCodeRun result
Instagram says comments are switched off on this postCOMMENTS_DISABLEDfails
The post is deleted, private or the URL is wrongNOT_FOUNDfails
Instagram says the post has comments but would not open the threadBLOCKEDfails
Instagram reports zero comments on the postNO_RESULTSsucceeds
The run hit its page budget part-way throughPARTIALsucceeds, keeps what it read

Those rows carry ok: false and are never charged the per-comment fee.

Try it for free

Run it with no post URLs at all and you get five clearly-labelled example rows showing the exact output shape β€” each one carries sampleData: true and a _notice saying it is not real data. They are never charged the per-comment fee. Sample rows appear only when you asked for no posts; a run that names a real post never answers with invented data.

Pricing

$0.0004 per comment row returned β€” $0.40 per 1,000 β€” plus the $0.001 Apify run-start fee that applies to every run. One flat rate at every volume.

You are charged for comment rows that are actually delivered. Diagnostic rows, sample rows and duplicates are not charged. A run that returns no comments pays the run-start fee and nothing else, whether it succeeded or failed β€” the start fee is charged by Apify the moment a run begins, so no run is completely free.

FAQ

Do I need an Instagram account or a cookie? No. Leave sessionCookies empty.

Then why is sessionCookies still there? Because some people would rather the run read through their own account. If you paste a sessionid it is used on its own and takes priority over everything else. Use a throwaway account if you do β€” automated reading gets accounts rate-limited.

Posts or reels? Both, plus IGTV. /p/, /reel/ and /tv/ all work.

Why did I get fewer comments than maxComments? Either the thread ran out, or the run hit its page budget. Check the PARTIAL or NO_RESULTS row in the dataset β€” it says which.

Can I get every comment on a huge post? No. See "How much of a thread you get" above.

Will I be charged for a post that returns nothing? Not the per-comment fee. Only the $0.001 run-start fee, which Apify charges on every run.

How do I get results into Notion? Set notionConnector and notionParentId and each run is delivered automatically.


Want the posts themselves, profiles, hashtags or locations? There are companion actors for each.