# Changelog of Instagram Comments Scraper with Replies — CSV Export, No Login (`afanasenko/instagram-comments-scraper`) Actor

- **URL**: https://apify.com/afanasenko/instagram-comments-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/afanasenko/instagram-comments-scraper.md

## Changelog

All notable changes to this actor are documented here.

### \[0.0.12] - 2026-09-23

#### Fixed

- **A run that restarts on the platform no longer charges again for comments it already delivered.** Comments and likers are billed once, after they reach your results.
- **Comments that could not be saved to your results are no longer charged.**
- **After a restart, "Max comments per post" still holds, each comment arrives once, and each post's summary row describes the whole run.**
- **The run now stops at the maximum cost per run you set** instead of reading on past it.
- **The closing message names the limit that actually stopped reading.** On the free plan with "Max comments per post" below 50, it said raising it would not help; it does, up to the 50 comments a free run reads.

### \[0.0.11] - 2026-09-23

#### Fixed

- **Each comment now carries its own likers, and you pay only for likers in your results.** With replies on, a comment's likers could land on the last reply under it, and a comment could come back with an empty "Comment Likers" list while its likers were charged.
- **The comment count on each row is the one the post shows today.** It could be an older, lower number.
- **Posts with comment likes switched off are now detected before any lookup, as the option describes.** Comments with no likes are no longer looked up, so liker runs are faster.
- **The closing message now says when a liker list came back short** — some likers could not be read this time, the list stopped at "Max likers per comment", or comment likes are switched off on the post. `RUN_SUMMARY` has matching `likerLists` counts. `API_USAGE` counts liker lookups under `fetch`.

### \[0.0.10] - 2026-09-15

- **Unchecking "Start a Fresh Run" now picks up from your previous run.** The form says it resumes the previous run, but for some accounts the run could not find it and read every post again. It now skips the posts your last finished run read to the end. Runs that finished before this update cannot be picked up this way, so the first such run after it reads everything once.
- **The free plan's monthly run count is now kept for this actor on its own.** Free runs of this actor count toward its own allowance of 15 runs a month, separately from any other actor you use, starting from this build.
- **The welcome box on your first paid run now fits inside its border.** Long tips wrap onto the next line instead of running past the right-hand edge.
- **Wording.** When a single post was read to the end and still came back short of the count it shows, the note said "One post were read to the very end". It now reads "One post was read to the very end", and its title speaks of one post too.

### \[0.0.9] - 2026-09-15

Wording only, in the README and the storage record descriptions: the `API_USAGE` record is now described simply as the request count for this run. Nothing changed in how the actor runs, what it returns or what it costs.

### \[0.0.8] - 2026-09-15

Wording only. On the free plan, the note under a capped post no longer suggests raising
**"Max comments per post"** — that setting cannot lift the free plan's ceiling of 50 comments per
run, so a bigger number on the same post returned the same 50 comments. The note now says so
plainly, next to the upgrade link that was already there. Nothing changed for paying customers.

### \[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.
