YouTube Comments Scraper avatar

YouTube Comments Scraper

Pricing

from $0.50 / 1,000 comments and level 1 replies

Go to Apify Store
YouTube Comments Scraper

YouTube Comments Scraper

Collect comments and optional nested replies from public YouTube videos and Shorts links. Export clean, structured JSON with optional video and channel details for moderation, sentiment analysis, reporting, and research workflows.

Pricing

from $0.50 / 1,000 comments and level 1 replies

Rating

5.0

(5)

Developer

Coder

Coder

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

7

Monthly active users

4 days ago

Last modified

Share

Collect comments from public YouTube videos and Shorts links, with optional channel details, video details, and nested replies.

This Actor is designed for comment-focused workflows. Provide one or more direct links, choose how much detail you want, and get one structured result record per input URL.

What You Get

  • Top-level comments from public YouTube videos and Shorts
  • Optional replies up to level 1, 2, or 3
  • Optional video details
  • Optional channel details
  • One clean dataset item per input link

Good Fit For

  • Audience feedback analysis
  • Moderation and review workflows
  • Campaign reporting
  • Creator benchmarking
  • Training datasets and internal analytics
  • Standard watch links
  • Shorts links
  • youtu.be short links

Example:

https://www.youtube.com/watch?v=DXVHmGoCTco
https://www.youtube.com/shorts/oiZvK6MY7tI
https://youtu.be/p9jZXhYF6Zk

Main Input Options

  • directUrls One or more public YouTube video or Shorts links.
  • includeVideoDetails Adds video-level metadata such as title, publish date, duration, counts, thumbnails, and availability flags.
  • includeChannelInfo Adds channel-level metadata such as name, handle, URL, country, subscriber count, and avatar.
  • maxComments Maximum number of top-level comments per link.
  • includeReplies Enables reply collection.
  • replyLevel Controls reply depth:
    • 1 = first-level replies only
    • 2 = first-level replies and replies to replies
    • 3 = up to three reply levels
  • maxRepliesPerLevel Maximum number of replies collected at each level.
  • commentsSortBy top or newest
  • commentsDateRangeDate Optional date filter such as 7 days, 30 days, or 2026-01-01

If a date range is provided, sorting is automatically handled in a way that best supports recent-comment filtering.

Free Plan Limits

Free runs will be reduced automatically. Typical adjustments may include:

  • fewer links per run
  • lower comment limits
  • lower reply limits
  • first-level replies only

Output Structure

Each dataset item represents one requested link.

Top-level fields:

  • inputUrl
  • normalizedUrl
  • videoId
  • contentType
  • status
  • video
  • channel
  • comments
  • summary
  • error
  • collectedAt

status values

  • ok Data was collected successfully.
  • no_comments The item was available, but no public comments were returned.
  • invalid_input The provided link was not a supported public YouTube video or Shorts URL.
  • failed The item could not be completed during this run.

comments object

The comments object includes:

  • enabled
  • sortBy
  • dateRange
  • maxReplyLevel
  • topLevelCount
  • replyCount
  • level1ReplyCount
  • level2ReplyCount
  • level3ReplyCount
  • threads

Each comment or reply node may include:

  • id
  • authorName
  • authorChannelId
  • authorUrl
  • authorAvatarUrl
  • text
  • likeCount
  • publishedAt
  • publishedTimeText
  • updatedAt
  • updatedTimeText
  • replyCount
  • replyLevel
  • replies

Detailed Example Output

{
"inputUrl": "https://www.youtube.com/watch?v=DXVHmGoCTco",
"normalizedUrl": "https://www.youtube.com/watch?v=DXVHmGoCTco",
"videoId": "DXVHmGoCTco",
"contentType": "video",
"status": "ok",
"video": {
"id": "DXVHmGoCTco",
"title": "50 Streamers Fight for $1,000,000",
"description": "i can't believe we got all these streamers together in one place lol",
"channelId": "UCX6OQ3DkcsbYNE6H8uQQuVA",
"channelTitle": "MrBeast",
"channelUrl": "https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA",
"publishDate": "2026-04-04T16:00:01Z",
"durationSeconds": 2541,
"viewCount": 59275120,
"likeCount": 1855099,
"commentCount": 125523,
"thumbnailUrl": "https://i.ytimg.com/vi/DXVHmGoCTco/maxresdefault.jpg",
"captionsAvailable": true,
"embedUrl": "https://www.youtube.com/embed/DXVHmGoCTco",
"privacyStatus": "public",
"license": "youtube",
"isEmbeddable": true,
"isMadeForKids": false,
"isLive": false,
"isUpcoming": false
},
"channel": {
"id": "UCX6OQ3DkcsbYNE6H8uQQuVA",
"name": "MrBeast",
"handle": "@mrbeast",
"url": "https://www.youtube.com/@mrbeast",
"country": "US",
"subscriberCount": 475000000,
"videoCountText": "963",
"totalViewsText": "117006098406",
"isVerified": true
},
"comments": {
"enabled": true,
"sortBy": "top",
"dateRange": "",
"maxReplyLevel": 3,
"topLevelCount": 10,
"replyCount": 120,
"level1ReplyCount": 37,
"level2ReplyCount": 28,
"level3ReplyCount": 55,
"threads": [
{
"id": "UgyCejUOAhJb3S9P5-Z4AaABAg",
"authorName": "@ukitsethn",
"authorChannelId": "UCd-2DgZGEwN9KxJOzj5F8wQ",
"authorUrl": "http://www.youtube.com/@ukitsethn",
"authorAvatarUrl": "https://yt3.ggpht.com/example-top-level-avatar=s48-c-k-c0x00ffffff-no-rj",
"text": "i love how all of the comments hate on rakai lol",
"likeCount": 2674,
"publishedAt": "2026-04-07T07:10:55Z",
"publishedTimeText": "9 hours ago",
"updatedAt": "2026-04-07T07:10:55Z",
"updatedTimeText": "9 hours ago",
"replyCount": 6,
"replyLevel": 0,
"replies": [
{
"id": "UgyCejUOAhJb3S9P5-Z4AaABAg.AVI53eCZuvwAVICG6GRWWC",
"authorName": "@Asdfasdf-k8v",
"authorChannelId": "UCAwfNMtxlRgpRydAdrSbPPQ",
"authorUrl": "https://www.youtube.com/@Asdfasdf-k8v",
"authorAvatarUrl": "https://yt3.ggpht.com/example-reply-avatar=s88-c-k-c0x00ffffff-no-rj",
"text": "In any good movie someone had to be the bad guy, and he played the role very well 😂",
"likeCount": 10,
"publishedAt": "2026-04-07T08:50:53.651383+00:00",
"publishedTimeText": "8 hours ago",
"updatedAt": null,
"updatedTimeText": null,
"replyCount": 2,
"replyLevel": 1,
"replies": [
{
"id": "UgyCejUOAhJb3S9P5-Z4AaABAg.AVI53eCZuvwAVIHZpahV0b",
"authorName": "@TeslimFadimu",
"authorChannelId": "UCCFc7zsbB1-qWHr2d3YjVvg",
"authorUrl": "https://www.youtube.com/@TeslimFadimu",
"authorAvatarUrl": "https://yt3.ggpht.com/example-level-2-avatar=s88-c-k-c0x00ffffff-no-rj",
"text": "@Asdfasdf-k8v exactly I love him though",
"likeCount": 6,
"publishedAt": "2026-04-07T09:50:53.651420+00:00",
"publishedTimeText": "7 hours ago",
"updatedAt": null,
"updatedTimeText": null,
"replyCount": 1,
"replyLevel": 2,
"replies": [
{
"id": "UgyCejUOAhJb3S9P5-Z4AaABAg.AVI53eCZuvwAVJ4PWkNXdz",
"authorName": "@ErickZAZ",
"authorChannelId": "UC2Lpcda5fKyRBPksIBApViw",
"authorUrl": "https://www.youtube.com/@ErickZAZ",
"authorAvatarUrl": "https://yt3.ggpht.com/example-level-3-avatar=s88-c-k-c0x00ffffff-no-rj",
"text": "@TeslimFadimu naah",
"likeCount": 1,
"publishedAt": "2026-04-07T16:24:55.271708+00:00",
"publishedTimeText": "37 minutes ago",
"updatedAt": null,
"updatedTimeText": null,
"replyLevel": 3,
"replies": []
}
]
}
]
}
]
}
]
},
"summary": {
"commentsCollected": 10,
"level1RepliesCollected": 37,
"level2RepliesCollected": 28,
"level3RepliesCollected": 55,
"videoDetailsIncluded": true,
"channelInfoIncluded": true
},
"error": null,
"collectedAt": "2026-04-07T16:51:01.013189+00:00"
}

Notes

  • The Actor works with public YouTube videos and public Shorts links.
  • Comment availability depends on the item itself. Some links may have no public comments.
  • Some items may return partial metadata depending on public availability.
  • The Actor continues processing valid links even if one item fails or is unsupported.

How To Use

  1. Add one or more YouTube video or Shorts links.
  2. Choose whether you want video details and channel details.
  3. Set your comment limit, reply depth, and reply limit.
  4. Run the Actor.
  5. Export the dataset in JSON, CSV, Excel, or use it directly through the Apify API.