YouTube Comments Scraper | Pay Per Result avatar
YouTube Comments Scraper | Pay Per Result

Pricing

$1.50 / 1,000 results

Go to Apify Store
YouTube Comments Scraper | Pay Per Result

YouTube Comments Scraper | Pay Per Result

Get a fast and reliable scraper that extracts details like CID, type, published time, comments, author, page URL, and more in seconds. Streamline your workflow, save time, and efficiently gather structured data for analysis, research, or business insights with ease and accuracy.

Pricing

$1.50 / 1,000 results

Rating

5.0

(1)

Developer

Alpha Scraper

Alpha Scraper

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

3

Monthly active users

20 hours ago

Last modified

Share

🎥 YouTube Comments Scraper

Quickly extract structured comment data from one or more YouTube videos — including comment text, author info, timestamps, votes, and raw fields.

Built to run as an Apify actor. This README shows a summary, inputs, outputs, examples, troubleshooting tips and proxy recommendations. 🔧


✨ Summary

This actor scrapes comments from YouTube video URLs and returns structured JSON objects per video, including:

  • 💬 Comments (text, id, author, replies, likes/votes, timestamps)
  • 👤 Author info (author name, author id, author url, avatar if available)
  • 🧾 Video metadata (video id, video url, title, best-effort commentsCount)
  • 📦 Raw payload — the original raw comment object is preserved for every comment so you don’t lose any fields.

Key points:

  • Input: one or more YouTube video URLs (startUrls).
  • Optional: maxComments to limit how many comments per video are scraped.
  • Optional: getAllComments to ignore maxComments and fetch all available comments.
  • Optional: sortBytop (highest votes first) or newest (most recent first).

🚀 Highlights

  • ⚡ Fast, structured output — one JSON object per video run.
  • 🧩 Preserves full raw comment object for custom fields.
  • 🎯 Exact maxComments support (when getAllComments is false) and getAllComments toggle.
  • 🌐 Proxy-aware (Apify Proxy recommended for stability) — use RESIDENTIAL for best results.
  • 🔁 Supports sorting by top or newest.

🛠️ Example Input

{
"startUrls": [
"https://www.youtube.com/watch?v=wT4HcYAeV5U",
"https://www.youtube.com/watch?v=H6l0q4l2NLo"
],
"maxComments": 100,
"sortBy": "top",
}

📤 Output

For every video the actor writes results both to the Apify dataset and to container files:

  • output_<videoId>.json — full JSON object for the video (including comments array).
  • comments_<videoId>.jsonl — newline-delimited JSON with one comment per line (good for streaming).
  • Apify dataset entry for each video — downloadable from the Apify Console. ☁️

Example output (one video object)

{
"videoUrl": "https://www.youtube.com/watch?v=wT4HcYAeV5U",
"videoId": "wT4HcYAeV5U",
"title": "YouTube",
"commentsCount": null,
"comments": [
{
"cid": "Ugxl_IUyS2PaN9t-_wV4AaABAg",
"type": "comment",
"publishedTimeText": "7 hours ago",
"publishedTimeTs": 1759729079.617027,
"comment": "Madhubanti + Rashmika = 🔥",
"author": "@maddockfilmsindia",
"authorId": null,
"authorUrl": null,
"authorThumbnail": null,
"replyCount": 7,
"voteCount": 5,
"isHearted": false,
"isEdited": false,
"raw": {
"cid": "Ugxl_IUyS2PaN9t-_wV4AaABAg",
"text": "Madhubanti + Rashmika = 🔥",
"time": "7 hours ago",
"author": "@maddockfilmsindia",
"channel": "UCGgi8DSEirlGCQ3B3bO5BsQ",
"votes": "5",
"replies": "7",
"photo": "https://yt3.ggpht.com/bhYAlBYCO9k-CfeGL42c3db-vBGi-3vLwQFgXWrQgHAstpaqE5LxHdIHDYdJ0RVje0-v5j7RLQ=s88-c-k-c0x00ffffff-no-rj",
"heart": false,
"reply": false,
"time_parsed": 1759729079.616943
},
"videoId": "H6l0q4l2NLo",
"pageUrl": "https://www.youtube.com/watch?v=H6l0q4l2NLo"
},
{
"cid": "UgxR7iZmrx-cvVYyIZJ4AaABAg",
"type": "comment",
"publishedTimeText": "10 hours ago",
"publishedTimeTs": 1759718280.088529,
"comment": "This song honestly has the soul of Aaj Ki Raat.\nFeels like Sachin–Jigar were asked to recreate that same vibe — and they pulled it off.\nJust try singing Aaj Ki Raat over this track and you’ll get exactly what I mean",
"author": "@saho_x",
"authorId": null,
"authorUrl": null,
"authorThumbnail": null,
"replyCount": 1,
"voteCount": 4,
"isHearted": false,
"isEdited": false,
"raw": {
"cid": "UgxR7iZmrx-cvVYyIZJ4AaABAg",
"text": "This song honestly has the soul of Aaj Ki Raat.\nFeels like Sachin–Jigar were asked to recreate that same vibe — and they pulled it off.\nJust try singing Aaj Ki Raat over this track and you’ll get exactly what I mean",
"time": "10 hours ago",
"author": "@saho_x",
"channel": "UCnVC00Vv0foM0EKkz6Y1iWQ",
"votes": "4",
"replies": "1",
"photo": "https://yt3.ggpht.com/TUTguFWKoy3k8SUTycBbxzhJ3T7B6enA0MGQqsE77VSCl8YeL4p8dK9iZu1QZ5gqGj_IWqN3=s88-c-k-c0x00ffffff-no-rj",
"heart": false,
"reply": false,
"time_parsed": 1759718280.088388
},
"videoId": "H6l0q4l2NLo",
"pageUrl": "https://www.youtube.com/watch?v=H6l0q4l2NLo"
},
{
"cid": "UgyDoXT2Qt9yi8s_K0V4AaABAg",
"type": "comment",
"publishedTimeText": "16 hours ago",
"publishedTimeTs": 1759696680.562509,
"comment": "Thama Massive Hit Hai 💯🔥",
"author": "@KAMALBOLTAHAI",
"authorId": null,
"authorUrl": null,
"authorThumbnail": null,
"replyCount": 0,
"voteCount": 2,
"isHearted": false,
"isEdited": false,
"raw": {
"cid": "UgyDoXT2Qt9yi8s_K0V4AaABAg",
"text": "Thama Massive Hit Hai 💯🔥",
"time": "16 hours ago",
"author": "@KAMALBOLTAHAI",
"channel": "UC7QK8aH2kx8kV3ZDb78gudg",
"votes": "2",
"replies": "",
"photo": "https://yt3.ggpht.com/-dSC3L4wVQlPFXaE1DQ0pa861J_1gJmKr0whQ_OBAVuC_du6rp3UNXtb9mIImMk2akwNfj1-=s88-c-k-c0x00ffffff-no-rj",
"heart": false,
"reply": false,
"time_parsed": 1759696680.562357
},
"videoId": "H6l0q4l2NLo",
"pageUrl": "https://www.youtube.com/watch?v=H6l0q4l2NLo"
},
{
"cid": "UgxjmCCpexYiRfqxtOZ4AaABAg",
"type": "comment",
"publishedTimeText": "52 minutes ago",
"publishedTimeTs": 1759751159.068628,
"comment": "🗿AAJ KI RAAT 2.0✅",
"author": "@SANJAY_GALAXY_369",
"authorId": null,
"authorUrl": null,
"authorThumbnail": null,
"replyCount": 0,
"voteCount": 1,
"isHearted": false,
"isEdited": false,
"raw": {
"cid": "UgxjmCCpexYiRfqxtOZ4AaABAg",
"text": "🗿AAJ KI RAAT 2.0✅",
"time": "52 minutes ago",
"author": "@SANJAY_GALAXY_369",
"channel": "UC1aOBn-22LWDKOXIEjWpaBQ",
"votes": "1",
"replies": "",
"photo": "https://yt3.ggpht.com/PgPHT8B88ib2qteQGAaQe_zQWPs5D4hQHM6xlyBijbL0paF_AUO6VPdj0eH49QCT5o_5JiVa=s88-c-k-c0x00ffffff-no-rj",
"heart": false,
"reply": false,
"time_parsed": 1759751159.068529
},
"videoId": "H6l0q4l2NLo",
"pageUrl": "https://www.youtube.com/watch?v=H6l0q4l2NLo"
},
{
"cid": "UgxieB4nLFkp3lMGhY94AaABAg",
"type": "comment",
"publishedTimeText": "7 hours ago",
"publishedTimeTs": 1759729079.616322,
"comment": "Aaj Ki Raat 2.0 ❤",
"author": "@maddockfilmsindia",
"authorId": null,
"authorUrl": null,
"authorThumbnail": null,
"replyCount": 0,
"voteCount": 1,
"isHearted": false,
"isEdited": false,
"raw": {
"cid": "UgxieB4nLFkp3lMGhY94AaABAg",
"text": "Aaj Ki Raat 2.0 ❤",
"time": "7 hours ago",
"author": "@maddockfilmsindia",
"channel": "UCGgi8DSEirlGCQ3B3bO5BsQ",
"votes": "1",
"replies": "",
"photo": "https://yt3.ggpht.com/bhYAlBYCO9k-CfeGL42c3db-vBGi-3vLwQFgXWrQgHAstpaqE5LxHdIHDYdJ0RVje0-v5j7RLQ=s88-c-k-c0x00ffffff-no-rj",
"heart": false,
"reply": false,
"time_parsed": 1759729079.616239
},
"videoId": "H6l0q4l2NLo",
"pageUrl": "https://www.youtube.com/watch?v=H6l0q4l2NLo"
},
]
"scrapedCount": 1
}

📑 Typical fields

FieldDescription
videoUrlInput video URL
videoIdYouTube video ID
titleBest-effort page title (if available)
commentsCountBest-effort comment count (may be null)
commentsArray of comment objects
comments[].cidComment unique id
comments[].commentComment text
comments[].authorAuthor display name
comments[].authorIdAuthor channel id (if available)
comments[].authorUrlAuthor channel URL (if available)
comments[].authorThumbnailAuthor avatar URL (if available)
comments[].publishedTimeTextHuman readable time (e.g. "2 days ago")
comments[].publishedTimeTsParsed timestamp (when parseable)
comments[].replyCountNumber of replies
comments[].voteCountLikes / votes count (if available)
comments[].isHeartedWhether channel owner hearted the comment
comments[].isEditedWhether the commenter edited the comment
comments[].rawFull raw object returned by underlying parser

🧩 Troubleshooting

IssuePossible CauseFix / Tip
Empty datasetWrong video URL or comments disabledVerify URLs and check video has comments; try another video.
Fewer comments than expectedmaxComments limit or generator yielded fewerSet getAllComments=true or increase maxComments
commentsCount is nullNot present in page HTMLUse comments[].raw to inspect raw payload for count
Partial metadataFields hidden or loaded dynamicallyCheck raw field; consider retries with proxy
Rate limiting / 429 errorsToo many requests without proxyUse Apify Proxy RESIDENTIAL or reduce concurrency