Export Instagram comments from any public post or reel to CSV, JSON or Excel: comment text, author, likes, time, reply threads, @mentions and #hashtags as columns, optional comment likers, no duplicates, no login. Each post gets a summary row with how many comments Instagram served.
All notable changes to this actor are documented here.
[0.0.7] - 2026-09-04
Wording only, from the first run on a real free account. When several links are pasted, the
run reads them in turn and can spend its allowance before the last one gets a turn — that post
now says "not reached — the run ran out of comments before its turn" instead of "stopped
early — 0 comments read", which described it as a failure of the post. Its share now reads
0%; a rounding floor meant to stop a real-but-tiny share showing as 0% was printing 1% for
a post that returned nothing.
[0.0.6] - 2026-09-04
Changed
The free plan is now 50 comments per run, from up to 3 post links (was 500 comments from
up to 50 links). The monthly allowance of 15 runs is unchanged, and it is now the limit you
will actually meet: all fifteen runs together cost $1.95 of the $5 monthly credit Apify gives
a free account, where three of the old runs used $3.90 of it. Links past the third come back
as their own free rows and cost nothing.
When a free run stops at the ceiling it now says what it held back and where to lift it —
how many of your posts were still being read, how many links were not opened, and a link to
your plan page. It never guesses a number of missing comments: a post's counter includes
replies, hidden and deleted comments, so that subtraction would not mean what it looks like.
The demo run on empty input quotes the cap that will actually apply to your account, and its
cost estimate matches it.
Fixed
The monthly-limit message offered "unlimited profiles per run" — this actor reads comments.
The completed-run panel had a "Skipped (free limit)" line that could never appear. It now
reports how many posts were cut short, which is a number a run can produce.
A paid run no longer sees "the free plan still applies" on a demo run.
Nothing changed for paying customers: prices, columns, both views, replies, likers, the 50-link
ceiling and resume all behave exactly as before.
[0.0.5] - 2026-09-04
README wording only, no code change. Two lines now say exactly what the actor does: a run you
abort still uses up a free-plan slot, and replies count toward the per-post cap, so a post with
200 top-level comments and busy threads is closer to 400 rows. Five long sentences shortened.
[0.0.4] - 2026-09-04
Changed
Prices. Comments now cost $2.60 per 1,000 on the Free plan (was $3.00), $2.34 on Bronze,
$2.08 on Silver and $1.82 on Gold, Platinum and Diamond. Comment likers $0.43 per 1,000 (was
$0.50), stepping down the same way. The plan-tier text on each event now says exactly what is
charged.
Name. The actor is now called Instagram Comments Scraper with Replies — CSV Export, No Login.
Same actor, same link.
README rewritten in plain language: what you give, what you get, what you won't get. The
output section lists the columns by group and shows both dataset views.
The Commenters view is described truthfully. It shows the same rows trimmed to the person and
who they tagged; someone who commented twice appears twice — dedupe by handle in your sheet.
Earlier text described it as a list with a single line for each author, which a view cannot
produce.
Sample row corrected. The coverage columns (Delivered Top-Level, Delivered Replies,
Stop Reason) are null on comment rows and filled on the post's post_summary row; the
README sample now shows that.
Input-form help shortened; the run's Output tab now links to COMMENT_COVERAGE.
No change to defaults, columns or limits.
[0.0.3] - 2026-09-03
A post read to its last page is now marked end, not reported as an error.
Per-post totals moved to one free post_summary row per post.
[0.0.2] - 2026-09-03
Prices recorded on the platform. Gold, Platinum and Diamond share one rate.
[0.0.1] - 2026-09-03
First release.
What it does
Paste an Instagram post or reel link and get its comments as rows — text, author, timestamp,
like count — with reply threads returned as their own rows, and optionally the accounts that
liked each individual comment. @mentions and #hashtags are pulled out of the text into their
own columns, so a tag-a-friend giveaway reads as an entrant list without any parsing on your
side. A second output view, Commenters, shows the same rows trimmed to the person and who
they tagged.
Two things worth knowing before your first run
Instagram serves fewer comments than a post says it has. The number on the post counts
replies, hidden comments and deleted comments, so it is normally higher than anything that can
be read back. Across eight posts read to the very end of Instagram's cursor, the share
delivered ranged from 39% to 75%, median 44% — with nothing capping those runs.
Rather than promise a total that cannot be met, every comment row carries the count its post
declares, and each post gets one extra free row with what was actually delivered and why reading
stopped: the list ran out, a cap was reached, the source stopped answering, or comments are
switched off on that post. The run says the same thing in plain words when it finishes, and
writes it to COMMENT_COVERAGE for anything reading programmatically.
Duplicates are removed before you are charged. Instagram occasionally serves the same
comment on two different pages. This actor recognises the repeat by Instagram's own comment id
and drops it, so you are billed once per comment and never receive one twice — including
across a restart, where the ids already delivered are read back from your own results rather
than assumed.
Included
Comments from any public post or reel, up to 50 links per run.
Reply threads, on by default; each reply carries the comment it answers.
Comment likers, off by default and priced as a separate, cheaper event.
Private accounts are included. Roughly six commenters in ten on a busy post have a
private profile; their comment is public and it is in your results.
A per-post cost ceiling, counted in comments — a reply is a comment and spends from the same
allowance, so the cap bounds what you pay either way.
Posts read in turn, a page at a time, so one viral link cannot consume a whole run and leave
the others empty.
Every link that could not be read comes back as its own free row naming the link and the
reason — a mistyped address, a deleted post, or a post inside a private account are told
apart, because only two of the three are worth retrying.
Resume: uncheck Start a Fresh Run to continue from where the last finished run stopped.
Not included, on purpose
There is no sort order. Instagram exposes no ordering control on this data, so no tool can
offer one honestly. Comments arrive in the order Instagram serves them, with each reply
directly behind the comment it answers — which is the only order a thread reads correctly in.