YouTube Comments Scraper — Comments, Replies & Likes avatar

YouTube Comments Scraper — Comments, Replies & Likes

Pricing

from $1.50 / 1,000 comments

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

YouTube Comments Scraper — Comments, Replies & Likes

Scrape YouTube comments and replies from videos, Shorts, playlists and channels: text, author, likes, reply count, date, pinned and creator-heart flags.

Pricing

from $1.50 / 1,000 comments

Rating

0.0

(0)

Developer

Trevor Ortega

Trevor Ortega

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Scrape the comments of any YouTube video, Short, playlist or channel: the comment text, the author's handle, channel ID and channel URL, like count, reply count, when it was posted (YouTube's "3 days ago" plus an estimated date), and whether it was edited, pinned, hearted by the creator or written by the video's creator. Replies are optional and come right after their parent comment, each linked to it with parentCommentId.

Sort by Top comments or Newest first, cap each video with Max comments per video, or keep only comments from the last few days. Turn on monitoring to get only the new comments on every scheduled run.

No login, no cookies, no YouTube Data API key and no API quota. The Actor reads the same public comment data the YouTube website loads when you scroll down under a video.

What data does YouTube Comments Scraper extract?

FieldDescription
commentId, commentUrlComment ID (replies: <parentId>.<replyId>) and a direct link that opens the video at that comment
textFull comment text (emoji as characters, line breaks kept)
author, authorHandleAuthor as shown on YouTube (the @handle)
authorChannelId, authorChannelUrl, authorAvatarUrlAuthor's channel ID (UC…), channel URL and avatar image
authorIsVerified, authorIsArtist, authorIsChannelOwnerVerified badge, Official Artist Channel, and whether the author is the video's creator
authorBadgesOther badges YouTube shows next to the name (for example "Moderator")
likeCount, likeCountTextLikes as a number and as shown ("325K"; YouTube rounds counts above 1,000)
replyCountNumber of replies under the comment (0 for replies)
publishedTimeText, publishedAtPosting time as shown ("2 weeks ago") and the date computed from it (estimate: YouTube only shows relative times)
isEdited, isPinned, isHeartedByCreator, heartedByEdited flag, pinned comment, creator heart and who gave it
paidAmountSuper Thanks amount as shown (for example "$5.00") when the comment carries YouTube's paid-comment chip; null otherwise (paid comments are rare)
isReply, parentCommentIdReply flag and the ID of the comment it answers
positionPosition in the video's comment list for the chosen sort (replies: position in the thread)
videoId, videoTitle, videoUrl, videoChannelName, videoChannelId, videoCommentCountThe video the comment belongs to and its total comment count
scrapedAtWhen the comment was scraped (UTC)
changeTypeOnly in monitoring mode: "new"

How to scrape YouTube comments

  1. Paste video URLs or IDs, Shorts URLs, playlist URLs or channel URLs into YouTube URLs or video IDs, one per line. All usual forms work: watch?v=, youtu.be/, /shorts/, /live/, /embed/, /playlist?list=, /@handle, /channel/UC…, /c/…, /user/….
  2. Set Max comments per video. Replies count toward it when Include replies is on.
  3. Pick Sort comments by: Top comments (YouTube's default) or Newest first.
  4. For channels and playlists, set Max videos per playlist / channel (newest videos first for channels). Use Channel tab to pick Videos, Shorts or past Live streams.
  5. Click Start. Comments appear in the Dataset tab while the run is going. Download them as JSON, CSV or Excel, or fetch them through the API.

Input example

{
"urls": [
"https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"https://www.youtube.com/shorts/IHkp5Kq72ro",
"https://www.youtube.com/@veritasium"
],
"maxComments": 500,
"sortBy": "top",
"includeReplies": true,
"maxRepliesPerComment": 20,
"maxVideosPerSource": 5,
"maxItems": 5000,
"proxyConfiguration": { "useApifyProxy": true }
}

Output example

{
"commentId": "Ugzge340dBgB75hWBm54AaABAg",
"videoId": "dQw4w9WgXcQ",
"videoTitle": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
"videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"commentUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ&lc=Ugzge340dBgB75hWBm54AaABAg",
"text": "can confirm: he never gave us up",
"author": "@YouTube",
"authorHandle": "@YouTube",
"authorChannelId": "UCBR8-60-B28hp2BmDPdntcQ",
"authorChannelUrl": "https://www.youtube.com/@YouTube",
"authorAvatarUrl": "https://yt3.ggpht.com/3s6evpqAiDU9tQR4sC2siJippbH2RWVPnwHgyl4V0th2iuQz0VDQZbUhQBGmsxLYo-mjG6TqZQ=s88-c-k-c0x00ffffff-no-rj",
"authorIsVerified": true,
"authorIsArtist": false,
"authorIsChannelOwner": false,
"authorBadges": [],
"likeCount": 325000,
"likeCountText": "325K",
"replyCount": 962,
"publishedTimeText": "1 year ago",
"publishedAt": "2025-10-09T12:00:00Z",
"isEdited": false,
"isPinned": true,
"isHeartedByCreator": true,
"heartedBy": "@RickAstleyYT",
"paidAmount": null,
"isReply": false,
"parentCommentId": null,
"position": 1,
"videoChannelName": "Rick Astley",
"videoChannelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
"videoCommentCount": 2458616,
"scrapedAt": "2026-10-09T12:00:00Z"
}

How to scrape YouTube comment replies

Turn on Include replies. Each reply is saved as its own row right after its parent comment, with isReply: true and parentCommentId set to the parent's commentId. Use Max replies per comment to keep only the first replies of very long threads, in the order YouTube shows them. Replies count toward Max comments per video and are charged like comments.

Can I get only recent comments?

Yes, in two ways. Only comments newer than takes a date (2026-10-01) or a period (7 days, 24 hours): the Actor reads newest first and stops paging once a whole page is older. YouTube shows relative times only ("2 weeks ago", "1 year ago"), so publishedAt and the cut are estimates, accurate to the unit YouTube shows. For a reliable "only what is new since last time", use monitoring (next section), which compares comment IDs instead of dates.

Monitor changes on a schedule

Turn on Only new or changed items to get only new comments on each run. The Actor remembers the comment IDs that earlier runs of the same input returned, reads comments newest first, and stops paging as soon as it reaches a comment an earlier run already saw, so a quiet video costs one small request and nothing is charged for comments you already have. On channels and playlists, the newest videos are checked each run, so comments on new uploads are picked up too. Save the input as a task and add a Schedule in Apify (for example hourly or daily); give each watch its own Monitoring key if several schedules use the same videos. Every output item then has changeType: "new". Replies are fetched for new comments only; new replies under older comments are not tracked.

Does it work without login or an API key?

Yes. No Google account, no cookies and no YouTube Data API key (so no 10,000-units-per-day quota). Videos with comments turned off (for example videos made for kids), private videos and removed videos are skipped and not charged; the run summary (key-value store, SUMMARY) counts them. Members-only and age-restricted videos are not supported because their comments need a login.

How many comments can I scrape?

As many as YouTube lists under the video. With Newest first the Actor pages through the whole list: in our test it read 6,000 comments of one video in one run, with no failed request. YouTube's Top comments list is shorter: on big videos it ends after roughly 1,000-1,250 comments. When that happens and you asked for more, the Actor continues with the newest-first list and skips comments it already saved, so Max comments per video still holds. Comments load 20 per request (about 1.5 seconds each), so 6,000 comments of one video take about 7-8 minutes; several videos run in parallel. Popular videos have millions of comments, so always set Max comments per video and Max results (total): you pay per saved comment.

Proxy note

Apify Proxy with the default datacenter IPs works for YouTube comments, and it is the cheapest option. Each comment page is trimmed to about 6-10 KB on the wire. In our runs, platform usage (compute and dataset storage) was about $0.008 per 1,000 comments. If a run reports rate limits (SUMMARY.notes.retryReasons), switch the proxy to RESIDENTIAL. Platform usage is billed to your Apify account in addition to the per-comment price.

Pricing

Pay per result: $0.0015 per comment or reply saved ($1.50 per 1,000), plus the small platform usage. Skipped videos and failed requests are not charged. Use Max comments per video and Max results (total) to cap the cost of a run. There is no subscription, and Apify's free plan is enough to try it.

Integrations and API

Use it from Zapier, Make, n8n or Google Sheets, or call it from Python/Node with the Apify client (see the API tab). AI agents can call it through Apify's MCP server. Typical uses: sentiment analysis and audience research, finding questions and complaints under product videos, giveaway winner picking, community moderation, and tracking reactions to new uploads on a schedule.

The Actor only reads what YouTube shows publicly to any visitor under a video: comment text, the public @handle and channel link of the author, and public counts. It does not log in and does not open members-only or age-restricted content. Comments are personal opinions of real people: if you store or publish them, follow YouTube's terms and the data protection law that applies to you (for example GDPR), and use the data for a legitimate purpose. You are responsible for how you use the data.

Support

Found a video that fails, or need another field? Open an issue in the Issues tab with the video URL. Issues are usually answered within a day.