YouTube Comments Scraper — Replies & Authors avatar

YouTube Comments Scraper — Replies & Authors

Pricing

from $0.35 / 1,000 youtube comment or replies

Go to Apify Store
YouTube Comments Scraper — Replies & Authors

YouTube Comments Scraper — Replies & Authors

Collect clean YouTube comment and reply rows from public videos and Shorts. Get linked parent/reply IDs, text, authors, likes, pins, creator hearts, and CSV/JSON exports. No YouTube API key, account, cookies, or compute fees. Pay only for saved comments and replies.

Pricing

from $0.35 / 1,000 youtube comment or replies

Rating

0.0

(0)

Developer

Chronometrica

Chronometrica

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 hours ago

Last modified

Share

💬 YouTube Comments Scraper — Replies & Authors

💬 What does YouTube Comments Scraper do?

YouTube Comments Scraper collects public comments and replies from known YouTube videos and Shorts. Add video URLs or IDs and get clean, linked rows with comment text, stable IDs, author details, likes, pins, creator hearts, and reply relationships.

Skip manual copy-and-paste. Add the video URLs you already have, choose a clear comment limit, and export organized rows for analysis. Results are saved as they are collected, so useful rows remain available if a later video cannot be completed.

Use it for audience research, customer feedback, brand monitoring, creator research, social listening, comment analysis, spreadsheets, and automated data pipelines.

With YouTube Comments Scraper, you can:

  • 💬 Collect public top-level comments from videos and Shorts.
  • 🧵 Save public replies as separate rows linked to their parent comments.
  • 🆔 Export stable video, comment, parent-comment, and author IDs.
  • ❤️ Capture public likes, pins, creator hearts, and creator replies.
  • 🔀 Choose Top comments, Newest comments, or a wider sample of both.
  • 📦 Download results as JSON, JSONL, CSV, Excel, XML, RSS, or HTML.
  • ⚙️ Run through the Apify API, SDKs, webhooks, schedules, and integrations.

Each paid result is one public comment or reply saved to the default dataset. Inputs that are invalid, unavailable, comments-disabled, or return no public comments do not create paid result rows.

This Actor uses logged-out public YouTube data. It does not need a YouTube API key, account, cookies, or copied browser session from you. It does not access private videos, private comments, YouTube Studio, live chat, or chat replay.

✨ What You Get

Each dataset row represents one public YouTube comment or reply.

Data groupExample fields
🎬 Video identityinputUrl, videoUrl, videoId
💬 Comment contentcommentId, text, publishedTimeText, isEdited
🧵 Thread linksparentCommentId, isReply, replyDepth, replyCount
👤 Author detailsauthorChannelId, authorHandle, authorDisplayName, authorUrl
❤️ Public signalslikesCount, isPinned, isHeartedByCreator, isChannelOwner
🧭 Row contextcommentIndex, replyIndex, sortMode, status, scrapedAt

Public values that YouTube does not expose stay null. They are not guessed and they are not replaced with fake zeroes.

⚙️ Can I use this Actor through an API?

Yes. You can run YouTube Comments Scraper manually in Apify Console or use it through:

  • 🔌 Apify API
  • 🐍 Python SDK
  • 🟢 Node.js SDK
  • 🪝 Webhooks
  • ⏰ Scheduled runs
  • 🧩 Apify integrations

This makes it easy to send comments into spreadsheets, databases, dashboards, AI analysis tools, customer-feedback systems, and research pipelines.

🎯 Why collect YouTube comments?

YouTube comments contain direct public feedback from viewers. They can help you understand what people like, dislike, ask for, repeat, or misunderstand.

Use caseHow comment data helps
🔍 Audience researchFind common questions, opinions, needs, and language.
📣 Brand monitoringTrack public feedback around products, launches, and campaigns.
🧑‍🎨 Creator researchStudy audience response, creator replies, pins, and hearts.
💡 Content planningFind ideas, objections, follow-up topics, and recurring questions.
🤖 Sentiment and NLPFeed clean comment text into your own analysis workflow.
🧱 Data pipeline buildingLoad stable comment and reply rows into databases and applications.

The Actor is focused on data collection. It gives you clean comment text and thread links that you can send to your own sentiment, language, topic, or question-analysis workflow.

💵 Pricing

YouTube Comments Scraper uses pay-per-result pricing. One result means one public comment or reply saved to the default dataset. Platform usage is included.

Apify planPrice per 1,000 saved rows
Free$0.50
Starter$0.45
Scale$0.40
Business$0.35

Use maxCommentsPerVideo, includeReplies, and maxRepliesPerComment to control result volume before a run. Replies are separate paid rows. Start with 10 to 25 top-level comments while testing a new video.

🚀 How do I use YouTube Comments Scraper?

  1. Create or log in to your Apify account.
  2. Open YouTube Comments Scraper.
  3. Add one or more public YouTube video URLs, Shorts URLs, or video IDs.
  4. Choose the maximum top-level comments to save from each video.
  5. Choose Top, Newest, or Top + Newest comment order.
  6. Turn on replies only when you need them.
  7. Click Start.
  8. Open the Output tab to inspect the dataset and run summary.
  9. Download your data in JSON, JSONL, CSV, Excel, XML, RSS, or HTML.

⬇️ Input

The main input is startUrls. Add between 1 and 100 known public YouTube videos or Shorts.

{
"startUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
"maxCommentsPerVideo": 25,
"commentSortMode": "top",
"includeReplies": false
}

To collect replies too:

{
"startUrls": [
"https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"https://www.youtube.com/shorts/Q217U36FOUQ"
],
"maxCommentsPerVideo": 100,
"commentSortMode": "both",
"includeReplies": true,
"maxRepliesPerComment": 20
}

🔗 Supported inputs

  • 🎬 Regular watch URLs
  • 📱 YouTube Shorts URLs
  • 🔗 youtu.be share URLs
  • 🖼️ Embed URLs
  • 🔴 Live video URLs with public comments
  • 🆔 Raw 11-character YouTube video IDs

Equivalent inputs for the same video are collected once in a run.

🎛️ Settings

SettingWhat it controls
startUrlsOne to 100 direct YouTube video or Shorts URLs, or 11-character video IDs.
maxCommentsPerVideoSaves 1–1,000 unique top-level comments from each video. If blank, the Actor uses 100. Replies do not count toward this limit.
commentSortModetop collects featured comments, newest collects recent comments, and both splits the cap across both lists and removes duplicate IDs.
includeRepliesSaves public replies as separate rows. Off by default for a more predictable result count.
maxRepliesPerCommentSaves 1–100 replies under each saved top-level comment. If blank, the Actor uses 20. Used only when replies are on.

Top + Newest gives a wider sample. It does not guarantee every public comment on the video.

⬆️ Output sample

Results are stored in the default dataset. The field order is stable for JSON, CSV, spreadsheet, API, and database workflows.

{
"inputIndex": 0,
"inputUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"platform": "youtube",
"videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"videoId": "dQw4w9WgXcQ",
"commentId": "UgxExamplePublicCommentId",
"parentCommentId": null,
"isReply": false,
"replyDepth": 0,
"commentIndex": 0,
"replyIndex": null,
"sortMode": "top",
"text": "This video never gets old.",
"publishedTimeText": "2 days ago",
"publishedAt": null,
"updatedAt": null,
"likesCount": 12,
"likesCountText": "12",
"likesCountPrecision": "exact",
"replyCount": 3,
"authorChannelId": "UCExamplePublicChannelId",
"authorHandle": "@examplecreator",
"authorDisplayName": "Example Creator",
"authorUrl": "https://www.youtube.com/@examplecreator",
"authorThumbnailUrl": "https://yt3.ggpht.com/example",
"isEdited": false,
"isPinned": false,
"isHeartedByCreator": true,
"isChannelOwner": false,
"status": "ok",
"scrapedAt": "2026-07-12T00:00:00.000Z"
}

🧵 Comment and reply relationships

Top-level comments have isReply: false and parentCommentId: null.

Replies have isReply: true and a parentCommentId that points to their saved top-level comment. Replies are only saved when their parent comment is also in the dataset.

commentIndex and replyIndex show collection order. They are not permanent YouTube ranks.

commentId is the stable ID for the saved comment or reply. parentCommentId is the stable ID of the top-level comment above a reply. Use both fields to rebuild the comment threads saved in your dataset.

📊 Run summary

The OUTPUT record includes:

  • 🎯 Inputs received and unique videos attempted;
  • 🪞 Duplicate video inputs skipped;
  • 🎬 Videos that produced rows;
  • 💬 Top-level comments and replies saved;
  • 🚦 Input status and stop-reason counts;
  • 🧯 Safe details for inputs that did not produce rows;
  • 🔄 Request, retry, and recovery totals.

Comments-disabled, unavailable, login-required, invalid, and no-public-comment inputs do not create dataset rows. The run summary explains their status.

🎯 Comment order, status, and precision

sortMode records whether a row came from the public Top or Newest comment order. YouTube can change either order between runs.

Every saved row has status: "ok". Input-level problems are reported in the run summary because they do not create paid rows.

likesCountPrecision explains whether the public like count is exact, display-rounded, or unavailable. Use likesCountText when you also want the public display value.

🔒 Source boundary

YouTube Comments Scraper uses logged-out public YouTube data only.

It does not use:

  • a YouTube API key supplied by you;
  • user cookies or copied sessions;
  • logged-in account automation;
  • private videos or private comments;
  • YouTube Studio analytics;
  • challenge solving;
  • live chat or chat replay;
  • video or audio downloads.

⚠️ Limits and interpretation

  • Top and Newest are public comment samples, not a promise of every comment.
  • YouTube can delete, hide, hold, reorder, or limit comments at any time.
  • Comment availability can differ by region and logged-out viewer state.
  • Likes, reply counts, pins, hearts, author details, and visible replies can change between runs.
  • Exact publish timestamps are not always public. In those cases, publishedAt stays null and publishedTimeText keeps the visible label.
  • A requested cap is a maximum, not a guarantee. The public comment list can run out first.
  • This Actor collects comments from known videos. It does not search channels, playlists, or keywords for videos.

❓ FAQ

Does this Actor need a YouTube API key, account, or cookies?

No. You do not need to provide a YouTube API key, account, cookies, or browser session.

Does this Actor collect every comment on a video?

No. It collects from the public Top, Newest, or combined comment samples that YouTube makes available during the run. Deleted, hidden, held, regional, and account-only comments may not be available.

Are replies separate results?

Yes. Each saved reply is its own dataset row and its own paid result. Use includeReplies and maxRepliesPerComment to control reply volume.

How are duplicates handled?

Equivalent video inputs are collected once. Comment and reply rows are deduplicated by stable commentId within the run.

Why did I receive fewer rows than requested?

The video may expose fewer public comments, comments may be disabled, the video may be unavailable, or the selected public order may end before the cap. Check the OUTPUT record for the input status and stop reason.

How long does a run take?

Runtime grows with the number of videos, the top-level comment limit, replies, and the selected comment order. Replies and Top + Newest require more work than top-level Top comments alone. Start with 10 to 25 comments while testing a new video. Rows are saved as they are collected.

What do commentId and parentCommentId mean?

commentId identifies the saved comment or reply. For a reply, parentCommentId identifies its saved top-level comment. Use these IDs to rebuild the thread without guessing from names or text.

Does this Actor collect live chat or chat replay?

No. Live chat and chat replay are outside this Actor's scope.

🛟 Support

For help, include the run ID, one input URL or video ID, the result you expected, and the observed dataset or OUTPUT status. Do not send cookies, account data, or private YouTube links.