YouTube Comments Scraper
$1/1000
results

$1/1000
results

YouTube Comments Scraper pulls comments from one or more YouTube videos and returns structured JSON for each comment: comment ID, author, text, likes, reply count, publish time, and source videoId. Accept full watch URLs, Shorts URLs, or 11-character video IDs; the Actor normalizes them and paginates comments up to your maxResults limit (default 100, max 1000 per video).
Built for brand monitoring, social listening, sentiment pipelines, and research teams. Capture audience feedback, surface product pain points, or collect labeled conversational data for NLP — without managing YouTube DOM selectors or session cookies.
Each comment is a clean type: "comment" row with page index for pagination transparency. Per-video failures become isolated error records so multi-video batches stay productive. Combine with YouTube Video Scraper for video context and YouTube Search Scraper to discover videos worth monitoring.
From campaign VOC analysis to academic discourse studies, this scraper delivers analytics-ready YouTube comment datasets.
youtu.be links, Shorts URLs, embeds, or raw 11-char IDsmaxResults from 1–1000 per video (default 100)YouTube Comments Scraper pulls comments from one or more YouTube videos and returns structured JSON for each comment: comment ID, author, text, likes, reply count, publish time, and source videoId. Accept full watch URLs, Shorts URLs, or 11-character video IDs; the Actor normalizes them and paginates comments up to your maxResults limit (default 100, max 1000 per video).
Built for brand monitoring, social listening, sentiment pipelines, and research teams. Capture audience feedback, surface product pain points, or collect labeled conversational data for NLP — without managing YouTube DOM selectors or session cookies.
Each comment is a clean type: "comment" row with page index for pagination transparency. Per-video failures become isolated error records so multi-video batches stay productive. Combine with YouTube Video Scraper for video context and YouTube Search Scraper to discover videos worth monitoring.
From campaign VOC analysis to academic discourse studies, this scraper delivers analytics-ready YouTube comment datasets.
youtu.be links, Shorts URLs, embeds, or raw 11-char IDsmaxResults from 1–1000 per video (default 100)commentIdcommentIdraw payloadraw payload| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| videoIds | array of string | Yes | — | YouTube video URLs or 11-character video IDs. |
| maxResults | string (numeric) | No | "100" | Maximum comments to collect per video (1–1000). |
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| videoIds | array of string | Yes | — | YouTube video URLs or 11-character video IDs. |
| maxResults | string (numeric) | No | "100" | Maximum comments to collect per video (1–1000). |
videoIds — Each entry is normalized to an 11-character ID. Invalid URLs that cannot be parsed are skipped. Duplicates are removed.maxResults — Caps comments per video. Start at 50–100 for sampling; raise toward 1000 for deep thread extraction. Runtime clamps to 1–1000.videoIds — Each entry is normalized to an 11-character ID. Invalid URLs that cannot be parsed are skipped. Duplicates are removed.maxResults — Caps comments per video. Start at 50–100 for sampling; raise toward 1000 for deep thread extraction. Runtime clamps to 1–1000.type: "comment")type: "comment")| Field | Type | Description |
|---|---|---|
| type | string | Always "comment". |
| videoId | string | Normalized source video ID. |
| page | number | Pagination page index. |
| commentId | string \| null | Unique comment identifier. |
| author | string \| null | Comment author display name. |
| channelId | string \| null | Author channel ID when available. |
| text | string \| null | Comment body (truncated ~500 chars in normalized field). |
| description | string \| null | Alternate text field when mapped from description-like sources. |
| likeCount | number \| string \| null | Number of likes on the comment. |
| replyCount | number \| string \| null | Number of replies. |
| publishedTime | string \| null | When the comment was posted. |
| title | string \| null | Rarely set for comments; may be null. |
| views | number \| string \| null | Usually null for comments. |
| length | string \| number \| null | Usually null for comments. |
| thumbnail | string \| null | Author avatar / thumbnail when present. |
| url | string \| null | Watch URL for the source video. |
| raw | object | Optional raw comment object from the API. |
| Field | Type | Description |
|---|---|---|
| type | string | Always "comment". |
| videoId | string | Normalized source video ID. |
| page | number | Pagination page index. |
| commentId | string \| null | Unique comment identifier. |
| author | string \| null | Comment author display name. |
| channelId | string \| null | Author channel ID when available. |
| text | string \| null | Comment body (truncated ~500 chars in normalized field). |
| description | string \| null | Alternate text field when mapped from description-like sources. |
| likeCount | number \| string \| null | Number of likes on the comment. |
| replyCount | number \| string \| null | Number of replies. |
| publishedTime | string \| null | When the comment was posted. |
| title | string \| null | Rarely set for comments; may be null. |
| views | number \| string \| null | Usually null for comments. |
| length | string \| number \| null | Usually null for comments. |
| thumbnail | string \| null | Author avatar / thumbnail when present. |
| url | string \| null | Watch URL for the source video. |
| raw | object | Optional raw comment object from the API. |
type: "error")type: "error")| Field | Type | Description |
|---|---|---|
| type | string | "error". |
| videoId | string | Video that failed. |
| error | string | Failure message. |
| Field | Type | Description |
|---|---|---|
| type | string | "error". |
| videoId | string | Video that failed. |
| error | string | Failure message. |
Optional engagement fields may be missing depending on API listing completeness.
Optional engagement fields may be missing depending on API listing completeness.
{
"type": "comment",
"videoId": "dQw4w9WgXcQ",
"page": 1,
"commentId": "UgxAbc123Def456",
"author": "DevCurious",
"channelId": "UCabcdefghijklmnopqrs",
"text": "This tutorial finally clarified pagination for me — thanks!",
"likeCount": 42,
"replyCount": 3,
"publishedTime": "1 month ago",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
}
{
"type": "comment",
"videoId": "dQw4w9WgXcQ",
"page": 1,
"commentId": "UgxAbc123Def456",
"author": "DevCurious",
"channelId": "UCabcdefghijklmnopqrs",
"text": "This tutorial finally clarified pagination for me — thanks!",
"likeCount": 42,
"replyCount": 3,
"publishedTime": "1 month ago",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
}