All notable, user-facing capabilities of the YouTube Comment Scraper. This is a
feature log rather than a strict per-release history; it summarizes what the
actor can do.
-
Playlist links work again. YouTube changed the shape of a playlist's
contents; a playlist target returned no videos at all while the run reported
success. Verified after the fix on a live playlist.
-
A run that could not read a page no longer looks like an empty result. If
some videos could not be read and the rest had nothing new, the run now fails
so you can retry it, instead of telling you to check links that were fine. The
same goes for a run whose results could not be saved.
-
An incremental run with nothing new says so, instead of printing the
troubleshooting advice meant for a run that found nothing at all.
-
A stalled connection is retried on a fresh IP before a target is given up
on - two of six test runs used to fail on a single stalled request.
-
New and edited replies are noticed. With replies switched on, a reply added
or edited under a comment you already received now counts as a change to it;
before, only the comment's own text did. A reply thread that could not be read
no longer counts as "the replies are gone", which used to charge you twice.
-
Filters and limits no longer cancel each other out. With a keyword, date or
custom filter set, the total limit is applied to what survives the filter, so a
match further down the list is still reached.
-
The competitor-compatible input names work. orderBy, maxCommentsPerVideo
and their siblings were being overridden by defaults you never set - in one
case turning a request for 5 comments per video into 100.
-
One video is one source. The same video pasted twice, or reached through a
channel and a search, now takes one slot of your video budget instead of two.
-
A competitor-compatible alias is no longer beaten by a default you never
set. sortBy and maxComments are declared with defaults, so the platform
writes them into every run — and both sorted ahead of their siblings, which
made orderBy: "newest" lose to "top" and a per-video cap of 5 lose to 100,
twenty times the rows and cost asked for. An alias sitting at exactly its own
default is no longer treated as something you typed.
-
Video links you paste are always processed. The result limit reserves a
slot per pasted video, but nothing enforced it: a channel earlier in the list
could spend the whole budget and the videos you named were skipped. They now
go first.
-
A keyword or date filter no longer returns zero on a video that had
matches. The total limit was spent on comments the filter then discarded, so
a run whose first matches sat further down stopped before reaching them. The
limit now applies to what survives the filter.
-
Turning replies on delivers them. Replies and the comment sort are part of
the incremental identity now; before, a run with replies switched on shared
state with one that had them off, found every parent unchanged, and returned
nothing. The interface language is no longer part of that identity, because
every request is English regardless — setting it used to reset your state and
re-deliver everything.
-
A run that could not save its results now fails instead of reporting "no
results". Same for a run where every video timed out: that is a run to
retry, not an empty result and advice to check your links.
-
Pasted video URLs no longer eat the channel/search budget. With ten pasted
videos and maxVideos: 5, the channel in the same run contributed nothing —
the two budgets were being compared instead of added, which broke both halves
of what the field promises. They now add: every pasted URL is processed, and
channels and searches still get their own maxVideos.
-
A run that hits its charge limit no longer forgets the comments it never
delivered. When the run's maximum charge is reached the platform writes only
part of the batch and reports success; those unwritten comments were counted as
delivered and recorded as seen, so a later run would skip them. Only what the
platform accepted now counts.
-
A run that hits its time limit now delivers what it collected. The
graceful stop read one environment variable while the platform supplies
another, so it never engaged: the wall-clock guard ended the process with
everything still in memory. Measured on a 60-second run — killed at 40 seconds
having delivered zero comments, all of them paid for. Both variable names
and both timestamp formats are now understood.
-
Aliases now win over the canonical field. The platform writes every
declared default into the input, so maxComments/limit/query and friends
were dead whenever the canonical field had a default — asking for limit: 1
could still collect and charge the default. An alias is only ever typed on
purpose, so it is the explicit signal; a value that cannot be used for the
field (a typo in a number) is ignored rather than allowed to shadow yours.
-
An incremental feed no longer stalls at its own head. Bounding the
per-video fetch by the total cap meant a monitor with maxComments: 40 and
maxItems: 5 re-read the same five already-seen comments every run and
delivered nothing, forever. Under incremental the per-video request now stands
on its own; the total cap still applies to what is delivered.
-
Comments the total cap dropped are no longer remembered as delivered. When
the cap moved to after the incremental filter, the state write kept reading the
pre-cap set — so a comment that was scanned but not delivered was banked as
seen and would have been suppressed on every later run. The same slip made the
run counts and the run metadata report more comments than were pushed.
Comments