YouTube Comments Scraper — Text, Authors & Likes avatar

YouTube Comments Scraper — Text, Authors & Likes

Pricing

from $2.00 / 1,000 comment scrapeds

Go to Apify Store
YouTube Comments Scraper — Text, Authors & Likes

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

Mohanad Alshaka

Maintained by Community

Actor 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

FieldWhat it does
videosURLs or 11-character IDs. Watch, youtu.be, Shorts and embed all work.
maxCommentsPerVideoCap per video, and therefore on cost. About 20 comments arrive per page.
includeRepliesOff by default, so you get top-level comments only. Replies are marked with isReply and replyLevel.
language / countryTwo-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 install
npm test
node src/main.js