YouTube Comments Scraper avatar

YouTube Comments Scraper

Pricing

from $0.45 / 1,000 results

Go to Apify Store
YouTube Comments Scraper

YouTube Comments Scraper

Collect comments from YouTube videos, Shorts, and community posts. Process multiple URLs or IDs, choose Top or Newest order, paginate automatically, and optionally attach parent content details.

Pricing

from $0.45 / 1,000 results

Rating

0.0

(0)

Developer

The Netaji

The Netaji

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

The Actor collects public comments from YouTube videos, Shorts, and community posts. It accepts a mixed list of targets as URLs or IDs, detects which kind each one is, paginates through the comment thread, and can optionally attach the parent video or post to every comment it saved. No YouTube account, API key, or cookie is required.

Accepted input

FieldTypeDefaultDescription
comment_sourcesarrayRequired. Video, Shorts, or community-post URLs or IDs.
maxItemsinteger100Maximum comments saved across all targets. 0 removes the limit.
sort_orderenumtoptop for YouTube's ranking, newest for most recent first.
includeParentDetailsbooleanfalseAttaches the parent video or post to each comment.
owner_channelstringChannel ID owning a community post, when the post is given as a bare ID.
region_codestringUSTwo-letter country code used to localize results.
language_codestringenLanguage code for result text.
{
"comment_sources": [
{ "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" },
{ "url": "https://www.youtube.com/shorts/P4-3XTiiogo" }
],
"sort_order": "top",
"maxItems": 500
}

Response fields

One row per comment.

FieldContents
recordTypevideo_comment or post_comment
sourceThe target the comment came from, as supplied
commentIdYouTube comment ID
textDisplayComment body as displayed
authorTextAuthor's display name
authorChannelId, authorChannelHandleAuthor's channel
authorThumbnailAuthor avatar
authorIsChannelOwnerWhether the author owns the video's channel
likesCountReported likes on the comment
replyCountReported replies to the comment
publishedTimeText, publishedAt, publishDateRelative time, ISO 8601 timestamp, and date
isVerified, isArtist, isCreatorAuthor badges YouTube displays
positionOne-based position within the run
metaThread context, including the reported total comment count
parentDetailsThe parent video or post, with includeParentDetails
{
"recordType": "video_comment",
"commentId": "Ugzge340dBgB75hWBm54AaABAg",
"textDisplay": "can confirm: he never gave us up",
"authorText": "@YouTube",
"authorChannelHandle": "@YouTube",
"publishedTimeText": "1 year ago",
"publishDate": "2025-07-30",
"position": 1
}

Note that a comment's like count is likesCount while a video's is likeCount. That inconsistency is YouTube's; the field names are left as returned rather than renamed, so they match the saved rows.

Targets, and how each kind is detected

A target is read as a community post when it is a /post/ URL or a bare ID beginning Ug, and as a video otherwise. Videos and Shorts use the same comment thread, so a Shorts URL needs no special handling.

Community posts given as a bare post ID may also need owner_channel, the UC… ID of the channel that published the post. Posts supplied as full URLs do not.

Pagination and result limits

Comments are collected in pages of about 20 and the cursor is followed until maxItems is reached, YouTube stops serving pages, or a cursor repeats. maxItems is a budget shared across every target in the run: with three videos and maxItems: 100, the first video may consume most of it. Run targets separately when even coverage across them matters.

meta carries YouTube's own reported comment count for the thread, which is useful for judging what fraction of a discussion was collected. That count includes replies, while the collected rows are top-level comments, so it will normally exceed the number of rows saved.

Behaviour on partial results

A target that cannot be parsed is logged and skipped. A target whose comments YouTube declines to serve — comments disabled, or a post that is not publicly readable — is logged and skipped, and the remaining targets still run. Comments already collected are kept. The run fails only when no supplied target was a usable reference.

includeParentDetails is fetched once per target rather than once per comment, and the resulting object is attached to every comment from that target. It is charged once per target on success. A failure leaves the field absent, is not charged, and does not stop the comments from being collected.

Frequently asked questions

Are replies collected as well as top-level comments? Top-level comments are collected. replyCount records how many replies each one has, so threads worth expanding are identifiable, but the replies themselves are not saved as rows.

Why did a video return no comments? Most often comments are disabled on it, which YouTube reports as an empty thread rather than an error. The run log names the target. It is also possible the thread is genuinely empty — a newly published video, or a community post nobody has replied to.

What is the difference between top and newest? top is YouTube's own ranking, which weights engagement and tends to surface the same well-liked comments the site shows first. newest is strictly reverse-chronological. For sampling opinion, top is more representative of what viewers actually see; for monitoring, newest is more useful.

Can every comment on a large video be collected? Only as far as YouTube keeps serving pages. Threads with millions of comments are not served in full to anyone, including the site itself. Set maxItems: 0 to take everything offered and treat the result as a large sample rather than a census.

Why is authorThumbnail sometimes a single URL and sometimes a list? Comments return one avatar URL; community posts return several sizes. Both are passed through as returned rather than normalised into one shape.

Is a YouTube account or API key required? No. Only publicly visible comments are read, with no credentials or logged-in session, and no YouTube Data API quota is consumed.

ActorPurpose
YouTube Video ScraperFull metadata and transcripts for known videos and Shorts
YouTube Channel ScraperChannel details, uploads, and community posts
YouTube Search ScraperFind videos by keyword, hashtag, or chart
YouTube Playlist ScraperPlaylist metadata and every video in it