YouTube Comments Scraper
Pricing
$0.50 / 1,000 comments
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 hours ago
Last modified
Categories
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
- Copy a video link from YouTube, such as
https://www.youtube.com/watch?v=dQw4w9WgXcQ. Shorts links,youtu.belinks and bare video IDs work too. - Paste it into YouTube video links, one video per line.
- Set Max comments per video and pick Top comments or Newest first.
- Turn on Include replies if you also want the replies to each comment.
- 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}
| Field | What it does |
|---|---|
startUrls | Video 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. |
maxComments | Stops after this many comments per video. Default: 100. Replies don't count toward it. |
sortBy | top (Top comments, as YouTube ranks them) or newest (Newest first). Default: top. |
includeReplies | Also saves the replies to each comment, right after it. Default: off. |
maxRepliesPerComment | When replies are on, stops after this many replies per comment. Default: 10. |
proxyConfiguration | Optional; 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
| Field | Description |
|---|---|
commentId | YouTube's ID of the comment or reply. |
type | comment for a top-level comment, reply for a reply. |
parentCommentId | For replies, the ID of the comment they answer; null for comments. |
text | The full comment text, with line breaks and emoji. |
author | The commenter's @handle, which is the name YouTube shows on comments. |
authorChannelId | The commenter's channel ID (UC…), stable even if the handle changes. |
authorChannelUrl | Link to the commenter's channel. |
authorAvatarUrl | The commenter's profile picture. |
isChannelOwner | true when the comment was written by the video's own channel. |
isVerified | true when the commenter's channel is verified. |
likeCount | Number of likes, exact below one million (YouTube rounds larger counts, for example to 4,800,000). |
replyCount | Number of replies, as YouTube counts them. Always 0 on replies. |
publishedTimeText | The age YouTube shows, such as 3 weeks ago. |
publishedAt | The 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. |
isEdited | true when the comment was edited. |
isPinned | true for the comment the creator pinned. |
isHeartedByCreator | true when the creator gave the comment a heart. |
commentUrl | Link that opens the video with this comment highlighted. |
videoId, videoTitle, videoUrl | The video the comment belongs to. |
videoCommentCount | The video's comment count as YouTube shows it under the video, replies included. |
scrapedAt | When 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.