YouTube Comments Scraper — Text, Likes & Replies, No Names avatar

YouTube Comments Scraper — Text, Likes & Replies, No Names

Pricing

from $0.40 / 1,000 comments

Go to Apify Store
YouTube Comments Scraper — Text, Likes & Replies, No Names

YouTube Comments Scraper — Text, Likes & Replies, No Names

Comments of any public YouTube video: text, likes, reply counts, age, pinned, creator-hearted and from-the-channel flags, plus optional replies. Top or newest order. No commenter names or handles are collected. Run again to see new comments and rank changes since the last run. No login.

Pricing

from $0.40 / 1,000 comments

Rating

0.0

(0)

Developer

Northbell

Northbell

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 hours ago

Last modified

Share

Give it a list of YouTube videos — watch links, youtu.be links, Shorts or plain video IDs — and get one clean row per comment: text, likes, reply count, age, and whether it is pinned, hearted by the channel or written by the channel itself, with the replies too if you want them. Top or newest order, up to 5,000 comments per video. $0.50 per 1,000 comments, no login, no API key — and no commenter names, handles, channel IDs or avatars are collected.

Run it again — or put it on a schedule — and every comment also tells you what changed since the last run: is it new, how far did it move up or down in the top order, how many likes did it gain. Each video also gets a free summary row with the number of new comments, which YouTube does not show you anywhere.

What you get

FieldWhat it is
type, videoId, commentId, urlthe row type (comment), the video, the comment, and a link that opens that comment on YouTube
textthe comment text with email addresses and phone numbers removed and @mentions replaced by @user
likes, likesRoundedlikes as YouTube shows them: exact below 1,000, rounded above ("4.8M" → 4800000, likesRounded true)
replyCount, replyCountRoundedreplies under the comment (0 for a reply itself), rounded the same way above 999
publishedAgo, publishedDaysAgo, isEditedYouTube's own wording ("3 weeks ago"), an approximate day count (month = 30 days, year = 365), and whether it was edited
isPinned, isCreator, isHeartedpinned by the channel, written by the video's own channel, hearted by the channel
isReply, parentCommentIdtrue for a reply and the comment it belongs to (null on top-level comments)
rankposition in the list as read, 1 = first (top-level comments only; null on replies)
isNewSinceLastRun, previousRank, rankChange, likesChangeSinceLastRunthe change since your previous run of the same video and order (null on the first run)
observedAtwhen the row was read

Every video also gets one free summary row (type video): videoId, url, title, channelName, commentCountShown (the total YouTube shows, rounded above 999 and including replies), commentCountRounded, commentsOff, sortUsed, commentsRead, topLevelRead, repliesRead, finished, stopReason (all-read, limit, comments-off, no-comments, stalled or error), newCommentsSinceLastRun and hoursSinceLastRun (both null on the first run), replyPagesFailed, note (set when comments are off or the order you asked for was not offered), input (what you typed) and observedAt.

Use it for

  • Audience research — what people ask, praise and complain about under your videos or a competitor's, in their own words
  • Text analysis and AI pipelines — clean comment text with no personal data to scrub afterwards
  • Tracking a launch or a controversy — schedule it on the newest order and see how many new comments came in since the last run

Input

{ "videos": ["https://www.youtube.com/watch?v=jNQXAC9IVRw"], "maxCommentsPerVideo": 200, "sort": "top", "includeReplies": false, "maxRepliesPerComment": 10 }
  • maxCommentsPerVideo — the most comments read per video (1–5,000, default 200). Replies count toward it, so it is also the most you can be charged for per video.
  • sort — top (YouTube's default order) or newest. Use newest to track new comments.
  • includeReplies / maxRepliesPerComment — also read the replies under each comment (oldest first), up to this many per comment.

What changed is remembered per video and order in a named key-value store in your Apify account, so the second run of the same Actor already shows changes. Schedule it (Apify → Schedules) to follow a video over time.

Pricing

$0.50 per 1,000 comments (replies count as comments), plus $0.01 per run. A default run of 200 comments costs $0.11. The per-video summary rows and error rows (removed, private or mistyped videos) are free. The $0.01 run-start fee is the one charge every run pays, even one that returns nothing.

Notes

  • Public data only, and no people. What anyone sees under a video without signing in. Commenter names, @handles, channel IDs and profile pictures are never returned. The only identity in a row is isCreator: the comment was written by the video's own channel. Email addresses and phone numbers are removed from the text, and a @handle written in a comment becomes @user. A name at the start of a reply that matches a commenter of the same video becomes @user too. A name typed as ordinary words anywhere else in a comment cannot be recognised and stays in the text. Phone-number removal is deliberately greedy: a number written with spaces or dots between digit groups ("10 000 000", "100.000.000") looks like a phone number and is removed too.
  • likes is exact below 1,000 and rounded above (YouTube writes "1.2K", "4.8M"). likesChangeSinceLastRun is only filled when both the previous and the current count are exact.
  • rank, previousRank and rankChange mean something in the top order: rankChange is positive when the comment moved up. In the newest order a new comment pushes every other one down, so rank is just the position and the other two stay empty.
  • isNewSinceLastRun is true for a comment that was not among those the previous run read. It is null where the previous run could not have seen it, for example comments 201 and beyond when the last run stopped at 200. In the top order a comment that climbed into the range you read also counts as new; for strict new-comment tracking use newest. A reply is only called new when the last run read that thread's replies to the end.
  • The total in commentCountShown includes replies, and YouTube holds some comments for review or hides them, so the number you can read is usually lower. finished is true when the whole list was read; stopReason limit means it stopped at your maxCommentsPerVideo.
  • A video with comments turned off (including videos made for kids) and a live stream with only live chat get a free summary row with commentsOff true and a note, and no comment rows. Live chat messages are not comments and are not read.
  • Comment text longer than 10,000 characters is cut. Emoji come through as characters; stickers and images do not.
  • parentCommentId is empty on top-level comments. isHearted is true when the channel gave the comment a heart.
  • If YouTube stops answering part way, you keep the comments already read, get an error row (free) and a summary row with stopReason error. If it keeps refusing across several videos in a row, the Actor stops waiting and returns the remaining videos as free error rows; run it again later.

To follow the video itself — exact views, likes and views per day — see YouTube Video Stats Tracker. To follow a whole channel, see YouTube Channel Stats & Growth Tracker.

For AI agents

{"videos": ["https://www.youtube.com/watch?v=jNQXAC9IVRw"], "maxCommentsPerVideo": 50} returns up to 50 rows of type comment (text, likes, replyCount, publishedAgo) and one video summary row. Rows have type: comment, video or error. Pass several videos in one call to pay the run fee once, and set sort to newest with a schedule to get only what is new.

**Something broke or looks wrong?** Open an issue on this Actor's Issues tab and I'll look at it. **Found it useful?** A short review on the Store page helps other people find it.