YouTube Comments Scraper avatar

YouTube Comments Scraper

Pricing

$0.50 / 1,000 comments

Go to Apify Store
YouTube Comments Scraper

YouTube Comments Scraper

Scrapes comments and replies from YouTube videos and Shorts: text, author and channel, like counts (exact below one million), reply counts, dates, pinned and creator-heart flags. Top or newest first. No login or API key needed.

Pricing

$0.50 / 1,000 comments

Rating

0.0

(0)

Developer

Mina

Mina

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 hours ago

Last modified

Share

What does YouTube Comments Scraper do?

YouTube Comments Scraper collects the comments and replies of any YouTube video or Short: the full comment text, author handle, channel ID and link, avatar, like count (exact below one million), reply count, date, and whether the comment is pinned, hearted by the creator or written by the video's own channel. Paste video links, choose Top comments or Newest first, and optionally add the replies under each comment.

Try it with the prefilled video: open the Actor, click Start, and the first 20 comments arrive in a few seconds. It needs no login, no API key and no YouTube Data API quota. Because it runs on the Apify platform, you also get API access, scheduled runs, integrations (Google Sheets, Make, Zapier, webhooks), run monitoring and automatic retries through Apify Proxy when YouTube is slow to answer.

Why scrape YouTube comments?

  • Audience and product research: read what viewers say about a product, a launch or a review video, in their own words.
  • Sentiment analysis and AI datasets: export thousands of comments with likes and dates as clean JSON or CSV for analysis or model training.
  • Brand and campaign monitoring: schedule a daily run with Newest first to catch new comments on your own or your competitors' videos.
  • Creator and influencer analytics: compare engagement, find the most liked comments, and see which ones the creator pinned or hearted.
  • Community management: collect questions and complaints from the replies, not just the top-level comments.

How to scrape YouTube comments

  1. Copy a video link from YouTube, such as https://www.youtube.com/watch?v=dQw4w9WgXcQ. Shorts links, youtu.be links and bare video IDs work too.
  2. Paste it into YouTube video links, one video per line.
  3. Set Max comments per video and pick Top comments or Newest first.
  4. Turn on Include replies if you also want the replies to each comment.
  5. Click Start, then download the results when the run finishes.

Input

Everything is set on the Input tab. In JSON, the input looks like this:

{
"startUrls": [
"https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"https://youtu.be/kJQP7kiw5Fk",
"https://www.youtube.com/shorts/ImRy_PiXstI"
],
"maxComments": 500,
"sortBy": "newest",
"includeReplies": true,
"maxRepliesPerComment": 10
}
FieldWhat it does
startUrlsVideo links, one per line: watch?v= links, youtu.be links, Shorts, embeds, live links, m.youtube.com links or bare 11-character video IDs, with or without https://. API callers can also send {"url": "..."} objects.
maxCommentsStops after this many comments per video. Default: 100. Replies don't count toward it.
sortBytop (Top comments, as YouTube ranks them) or newest (Newest first). Default: top.
includeRepliesAlso saves the replies to each comment, right after it. Default: off.
maxRepliesPerCommentWhen replies are on, stops after this many replies per comment. Default: 10.
proxyConfigurationOptional; leave it empty. YouTube answers the Actor directly, and the Actor switches to Apify Proxy by itself if it is ever refused.

Output

Each comment, and each reply when you include them, becomes one row. Here is a real row, the pinned comment on the prefilled video:

{
"commentId": "Ugzge340dBgB75hWBm54AaABAg",
"type": "comment",
"parentCommentId": null,
"text": "can confirm: he never gave us up",
"author": "@YouTube",
"authorChannelId": "UCBR8-60-B28hp2BmDPdntcQ",
"authorChannelUrl": "https://www.youtube.com/@YouTube",
"authorAvatarUrl": "https://yt3.ggpht.com/3s6evpqAiDU9tQR4sC2siJippbH2…=s88-c-k-c0x00ffffff-no-rj",
"isChannelOwner": false,
"isVerified": true,
"likeCount": 324682,
"replyCount": 1000,
"publishedTimeText": "1 year ago",
"publishedAt": "2025-10-08T12:47:00+00:00",
"isEdited": false,
"isPinned": true,
"isHeartedByCreator": true,
"commentUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ&lc=Ugzge340dBgB75hWBm54AaABAg",
"videoId": "dQw4w9WgXcQ",
"videoTitle": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
"videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"videoCommentCount": 2458438,
"scrapedAt": "2026-10-08T12:47:51.130229+00:00"
}

Reply rows have the same fields, with type set to reply, parentCommentId set to the comment they answer, and a commentId that starts with that comment's ID. The Output tab shows a Comments table. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Data fields

FieldDescription
commentIdYouTube's ID of the comment or reply.
typecomment for a top-level comment, reply for a reply.
parentCommentIdFor replies, the ID of the comment they answer; null for comments.
textThe full comment text, with line breaks and emoji.
authorThe commenter's @handle, which is the name YouTube shows on comments.
authorChannelIdThe commenter's channel ID (UC…), stable even if the handle changes.
authorChannelUrlLink to the commenter's channel.
authorAvatarUrlThe commenter's profile picture.
isChannelOwnertrue when the comment was written by the video's own channel.
isVerifiedtrue when the commenter's channel is verified.
likeCountNumber of likes, exact below one million (YouTube rounds larger counts, for example to 4,800,000).
replyCountNumber of replies, as YouTube counts them. Always 0 on replies.
publishedTimeTextThe age YouTube shows, such as 3 weeks ago.
publishedAtThe approximate date and time in UTC (ISO 8601): the scrape time minus that age. YouTube rounds ages down, so the real date can be up to one unit earlier, for example up to a year earlier for 5 years ago.
isEditedtrue when the comment was edited.
isPinnedtrue for the comment the creator pinned.
isHeartedByCreatortrue when the creator gave the comment a heart.
commentUrlLink that opens the video with this comment highlighted.
videoId, videoTitle, videoUrlThe video the comment belongs to.
videoCommentCountThe video's comment count as YouTube shows it under the video, replies included.
scrapedAtWhen the row was saved.

How much does it cost to scrape YouTube comments?

YouTube Comments Scraper uses pay-per-event pricing: you pay only for the rows you get, one comment or one reply each. See the Pricing tab for the exact price per 1,000 comments. Apify's free plan includes monthly credit you can use to try it.

Videos that return nothing (comments turned off, private, removed or invalid links) are never saved as rows, so you are not charged for them. If you set a maximum cost for a run, the Actor stops as soon as it is reached.

Tips for scraping YouTube comments

  • To get every comment, use Newest first with a large Max comments per video (for example 100000). YouTube's Top comments order can stop after about 1,000 comments on some videos, while Newest first goes all the way back.
  • For monitoring, schedule a daily run with Newest first and a small limit, and keep only comments newer than your last run by publishedAt.
  • Replies multiply the row count. A popular comment can have hundreds of replies, so keep Max replies per comment small unless you need them all.
  • Speed: roughly 1,000 comments per video in 15 to 20 seconds, and three videos are read at the same time.
  • Each comment is saved only once per video, even when YouTube lists it twice.
  • If the run's time limit is close, the Actor stops paging and finishes cleanly with everything collected so far.

FAQ, disclaimers and support

Which videos work? Any public video, Short or past live stream with comments turned on, including age-restricted videos. Videos whose comments are turned off (for example videos made for kids), live streams that only have a live chat, and private or removed videos have no comments to give.

What happens to links that return nothing? They are not saved as rows, so you are not charged for them. Each one is listed with its reason (for example YouTube says: Comments are turned off.) in the FAILED_INPUTS record of the run's key-value store, and the run's status message gives the counts. A run fails only when every video failed because YouTube could not be reached.

Why does a comment have fewer replies than its reply count? The count comes from YouTube and can include replies it no longer shows, such as deleted or held-for-review replies.

Why are like counts above a million rounded? YouTube itself only gives those as rounded numbers such as 4.8 million. Below a million, the counts are exact.

Is it legal to scrape YouTube comments? This Actor collects only comments that are publicly visible on YouTube to anyone without logging in. Comments contain personal data such as usernames, profile pictures and whatever people wrote, so you are responsible for making sure your use complies with YouTube's Terms of Service and with data protection laws such as the GDPR. Collect only what you need, and if in doubt, ask a lawyer.

Found a problem or need a custom solution? Open an issue on the Issues tab and we will look into it. Custom scrapers and data feeds are available on request.