Youtube Comment Scraper
Pricing
from $1.00 / 1,000 results
Go to Apify Store
Youtube Comment Scraper
Scrape YouTube video comments with full metadata. Extracts comment text, author info, likes, timestamps, pinned/hearted status, and reply threads. Supports sorting by Top comments or Newest first.
Pricing
from $1.00 / 1,000 results
Rating
5.0
(5)
Developer

Crawler Bros
Maintained by Community
Actor stats
1
Bookmarked
2
Total users
1
Monthly active users
17 days ago
Last modified
Categories
Share
Scrape YouTube video comments with full metadata including author info, likes, timestamps, pinned/hearted status, and reply threads. Supports sorting by Top comments or Newest first.
Input
| Field | Type | Default | Description |
|---|---|---|---|
videoUrls | array | required | YouTube video URLs, short links (youtu.be), shorts URLs, or plain video IDs |
maxComments | integer | 100 | Max top-level comments per video (1–50,000). Replies don't count toward this limit |
includeReplies | boolean | true | Whether to fetch reply threads for each comment |
maxRepliesPerComment | integer | 5 | Max replies to fetch per comment (0–100) |
sortBy | string | "top" | Sort order: "top" (most relevant) or "newest" (chronological) |
Supported URL Formats
https://www.youtube.com/watch?v=dQw4w9WgXcQhttps://youtu.be/dQw4w9WgXcQhttps://www.youtube.com/shorts/dQw4w9WgXcQhttps://www.youtube.com/embed/dQw4w9WgXcQhttps://www.youtube.com/live/dQw4w9WgXcQdQw4w9WgXcQ(bare video ID)
Example Input
{"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"maxComments": 100,"includeReplies": true,"maxRepliesPerComment": 5,"sortBy": "top"}
Output
Each row in the dataset is either a top-level comment (replyDepth: 0) or a reply (replyDepth: 1). Replies appear immediately after their parent comment.
| Field | Type | Description |
|---|---|---|
commentId | string | Unique comment identifier |
text | string | Comment text content |
authorName | string | Author's display name |
authorChannelId | string | Author's YouTube channel ID |
authorChannelUrl | string | Author's channel URL |
authorProfileImageUrl | string | Author's profile image URL |
authorIsChannelOwner | boolean | Whether the author is the video's channel owner |
likeCount | integer | Number of likes on the comment |
replyCount | integer | Number of replies (top-level comments only) |
publishedTimeText | string | Relative publish time (e.g., "2 days ago") |
isHearted | boolean | Whether the creator hearted this comment |
isPinned | boolean | Whether this comment is pinned |
isReply | boolean | Whether this is a reply (true) or top-level comment (false) |
parentCommentId | string/null | Parent comment ID (replies only, null for top-level) |
replyDepth | integer | 0 for top-level comments, 1 for replies |
videoId | string | YouTube video ID |
videoUrl | string | Full video URL |
videoTitle | string | Video title |
videoChannelName | string | Video channel name |
videoChannelId | string | Video channel ID |
scrapedAt | string | ISO 8601 timestamp of when the data was scraped |
Example Output
{"commentId": "UgxB...","text": "Great video!","authorName": "John Doe","authorChannelId": "UCxxx...","authorChannelUrl": "https://www.youtube.com/@johndoe","authorProfileImageUrl": "https://yt3.ggpht.com/...","authorIsChannelOwner": false,"likeCount": 42,"replyCount": 3,"publishedTimeText": "2 days ago","isHearted": false,"isPinned": false,"isReply": false,"parentCommentId": null,"replyDepth": 0,"videoId": "dQw4w9WgXcQ","videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","videoTitle": "Rick Astley - Never Gonna Give You Up","videoChannelName": "Rick Astley","videoChannelId": "UCuAXFkgsw1L7xaCfnd5JJOw","scrapedAt": "2026-02-11T12:00:00.000000+00:00"}
Cost
- Average run: ~$0.01–0.05 per video (100 comments)
- Uses HTTP requests (no browser) for comment fetching, keeping costs low
- Reply fetching adds minimal cost per reply thread