YouTube Comments Scraper — Text, Authors & Likes
Pricing
from $2.00 / 1,000 comment scrapeds
YouTube Comments Scraper — Text, Authors & Likes
Scrape comments from any YouTube video: text, author, like count, reply count and timestamp. No API key, no quota, no login.
Pricing
from $2.00 / 1,000 comment scrapeds
Rating
0.0
(0)
Developer
Mohanad Alshaka
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Scrape comments from any YouTube video: text, author, like count, reply count and timestamp. No API key, no quota, no login.
Output
{"videoId": "dQw4w9WgXcQ","commentId": "Ugzge340dBgB75hWBm54AaABAg","url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ&lc=Ugzge340dBgB75hWBm54AaABAg","text": "can confirm: he never gave us up","publishedText": "1 year ago","isReply": false,"replyLevel": 0,"authorName": "@YouTube","authorChannelId": "UCBR8-60-B28hp2BmDPdntcQ","authorChannelUrl": "https://www.youtube.com/channel/UCBR8-60-B28hp2BmDPdntcQ","authorIsVerified": true,"authorIsCreator": false,"likeCount": 315000,"likeCountText": "315K","replyCount": 963,"replyCountText": "963"}
Every comment carries a direct link (&lc=) that opens it in place on the video.
The trap this avoids
Comments are not on the watch page. They come from YouTube's internal endpoint in two hops: a request by video ID returns a set of continuation tokens, and one of those opens the comments.
A next response carries several continuations — related videos, filter chips, and comments. Picking the wrong one returns a page of recommendations that parses to zero comments, which looks exactly like a video with comments turned off. This Actor selects the comments continuation specifically, and a test asserts it rejects a related-videos token placed first.
A video that genuinely has comments disabled is reported as such in RUN_SUMMARY, not silently as an empty result.
Counts are abbreviated at source, and say so
YouTube publishes comment like and reply counts as strings like "315K". That is rounded before it ever reaches this Actor. Both forms are returned — likeCount: 315000 and likeCountText: "315K" — so you can see the precision you actually have rather than trusting a number that looks exact.
Blocked videos are never charged
YouTube refuses some datacenter IPs with "Sign in to confirm you're not a bot". Billing for that would charge you for this Actor's IP being refused, so those rows are written with blocked: true and error: "blocked_by_youtube" and no event fires.
Set proxyConfiguration to Apify Proxy with RESIDENTIAL groups to avoid it.
Input
| Field | What it does |
|---|---|
videos | URLs or 11-character IDs. Watch, youtu.be, Shorts and embed all work. |
maxCommentsPerVideo | Cap per video, and therefore on cost. About 20 comments arrive per page. |
includeReplies | Off by default, so you get top-level comments only. Replies are marked with isReply and replyLevel. |
language / country | Two-letter codes. |
Example
{"videos": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"maxCommentsPerVideo": 500,"includeReplies": true}
Notes and limits
- Public comments only. No login, no cookies, no Google account.
- Comments are returned in YouTube's default order (top comments first), not chronological.
- Timestamps are relative, exactly as YouTube publishes them ("1 year ago"). No absolute date is invented from them.
- Paging is capped at 30 requests per video regardless of
maxCommentsPerVideo.
Development
npm installnpm testnode src/main.js