YouTube Comments Scraper & New-Comment Monitor — No API Key
Pricing
from $0.50 / 1,000 comment delivereds
YouTube Comments Scraper & New-Comment Monitor — No API Key
Scrape any YouTube video or channel's comments — author, text, likes, replies, timestamps & avatars — or run monitor mode to get ONLY the new comments since the last run (never re-pay for old ones). Reply threads, pinned/hearted flags, no API key, no quota. Pay-per-use, first run free.
Pricing
from $0.50 / 1,000 comment delivereds
Rating
0.0
(0)
Developer
SlothTechLabs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Watch any YouTube video or channel and get only the comments posted since your last run — never re-pay for old comments again. Or bulk-export a whole comment section in one go. No API key, no quota, no browser. Your first run on each video is a free baseline.
Scrape YouTube comments into a flat, spreadsheet-ready row per comment — author, text, likes, replies, pinned/hearted flags, timestamps, avatar and a deep link to each comment. In monitor mode, every scheduled run returns only the new comments since the last run, per video, so the same comment is never delivered (or billed) twice. Point it at videos or whole channels, run it on a schedule, and turn a comment section into a live feed — no API key, no quota, no subscription.
✨ What does this Actor do?
| Feature | Details |
|---|---|
| 🔔 Monitor mode | Each scheduled run returns only the comments new since the last run, per video — no duplicates, no re-paying for old data. First run per video is a free baseline |
| 📦 Bulk mode | One-off export of a video's comment section, sorted by Top or Newest |
| 📡 Channel watching | Paste @handles or channel URLs — each channel's latest uploads are found automatically and their comments scraped/monitored |
| 💬 Reply threads | Optionally expand replies (in monitor mode, only for new comments — keeps cost down) |
| 🏷️ Rich comment fields | Like & reply counts, 📌 pinned flag, ❤️ hearted-by-creator flag, channel-owner / verified / artist author flags, avatar, and a deep link to each comment |
| 🧵 Thread reconstruction | Every reply carries its parentCommentId, so you can rebuild full conversation threads |
| 🔑 No API key, no login, no browser | No quota to manage and no accounts to connect — just clean, structured comment rows |
⚡ Zero-config start
Just click Start. The prefilled input runs a bulk scrape of a sample video so your first dataset has comment rows in seconds. When you're ready to track a video or niche, switch mode to monitor, add your videos or channels, and put it on a schedule — see the 3 steps below.
💰 Why use this instead of…?
| Option | Cost | New-comments-only feed? | No quota wall? |
|---|---|---|---|
| YouTube Data API v3 | Free, but quota-capped then blocked | ❌ | ❌ |
| One-shot comment scrapers | Re-scrape the whole thread every run | ❌ | ✅ |
| This Actor | Pay-per-use — first run per video free | ✅ (monitor mode, raw rows you own) | ✅ |
To "watch" a video with a snapshot scraper you must re-scrape the entire comment section every run and de-duplicate it yourself. This Actor delivers only the genuinely new comments, so a busy video costs pennies to monitor — and you still get a full bulk export whenever you want one.
🎯 Use cases
- 🔔 Community & brand managers — monitor your channel's latest uploads for new comments daily (auto-discovered from your
@handle); get on top of questions and complaints the day they land. - 🎁 Giveaway & contest runners — collect every new entry comment as it arrives, with author and timestamp, without re-pulling the whole thread each time.
- 📊 Creator analysts — bulk-export a video's comment section for sentiment/topic analysis, or track sentiment over time with a daily monitor.
- 🏢 Agencies — watch many client videos for new comments in a single run, exported straight to Sheets or a webhook.
- 🤖 Data & AI teams — feed only fresh comments into your pipeline each run (no de-duplication code on your side), with structured author and engagement fields ready to embed.
📖 How to use — first run in 3 steps
- Click Start — the prefill (a bulk scrape of a sample video) is safe and completes in seconds.
- Open the Dataset tab — one flat row per comment. Export as CSV / JSON / Excel, or open in Google Sheets.
- Turn it into a monitor — set
modetomonitor, add your own videos or channels, Save as Task, and add a daily Schedule. The first run per video is a free baseline; from the next run on, only genuinely new comments arrive.
🧾 Input
The form is built to be tried in seconds: paste video URLs and click Start. Everything else is optional.
What to scrape
| Field | Type | Required | Description |
|---|---|---|---|
videoUrls | array of strings | ✅ | YouTube video URLs, one per line — watch, Shorts, youtu.be, and live links all work |
Options
| Field | Type | Default | Description |
|---|---|---|---|
mode | monitor | bulk | monitor | monitor = only comments new since the last run · bulk = export the comment section (the one-click sample run is prefilled to bulk) |
sort | top | newest | top | Order for bulk scraping — Top comments or Newest first |
maxCommentsPerVideo | integer | 100 | Cap on top-level comments per video. In monitor mode this is a ceiling per run |
includeReplies | boolean | false | Also fetch reply threads (in monitor mode, only for new comments) |
maxRepliesPerComment | integer | 100 | Cap on replies fetched per comment (only when replies are on) |
Monitor whole channels (optional)
| Field | Type | Default | Description |
|---|---|---|---|
channelUrls | array of strings | — | Optional — watch whole channels instead of (or in addition to) specific videos; their latest uploads are found automatically and scraped/monitored. Accepts channel URLs or @handles |
maxVideosPerChannel | integer | 3 | Latest videos per channel to scrape/monitor |
Advanced
| Field | Type | Default | Description |
|---|---|---|---|
proxyConfiguration | object | Apify datacenter | Uses Apify's datacenter proxy by default — no extra setup needed |
Advanced (API only): the filters
commentTextFilter(deliver only comments containing a phrase),onlyChannelOwner(only the creator's own comments), andminLikeCount(a like threshold) are still honored if you pass them in JSON input — they narrow delivery (and your bill) to just the comments you care about. They're hidden from the Console form to keep the first run simple.
Example input — daily monitor of a video + a channel
{"videoUrls": ["https://www.youtube.com/watch?v=jNQXAC9IVRw"],"channelUrls": ["@mkbhd"],"maxVideosPerChannel": 3,"mode": "monitor","maxCommentsPerVideo": 100,"includeReplies": false,"proxyConfiguration": { "useApifyProxy": true }}
Schedule that daily and each run returns just the new comments across that video plus MKBHD's three latest uploads.
📊 Output
One flat row per comment — perfect for spreadsheets, pivots, and pipelines. Each row reads like a YouTube comment — avatar, author, then the comment — so a comments spreadsheet is scannable at a glance.
| Field | Type | Description | Example |
|---|---|---|---|
authorAvatarUrl | string | Author avatar image | "https://yt3.ggpht.com/…" |
authorName | string | Comment author handle | "@SanDiegoZoo" |
text | string | Comment body | "We're so honored…" |
likeCount | integer | null | Likes as a number | 4500000 |
likeCountText | string | Likes as YouTube's abbreviated label | "4.5M" |
replyCount | integer | null | Replies as a number | 985 |
replyCountText | string | Replies as YouTube's abbreviated label | "985" |
publishedTimeText | string | Relative publish time (as shown on YouTube) | "6 years ago" |
publishedAtApprox | string | null | Approximate absolute post time | "2020-06-12T09:00:00.000Z" |
videoTitle | string | Title of the source video | "Me at the zoo" |
videoChannelName | string | Uploader channel name | "jawed" |
isReply | boolean | Whether this row is a reply | false |
isPinned | boolean | 📌 Pinned comment | false |
isHeartedByCreator | boolean | ❤️ Hearted by the creator | false |
isEdited | boolean | Comment was edited | false |
authorIsChannelOwner | boolean | Author is the video's channel | false |
authorIsVerified | boolean | Verified author | true |
authorIsArtist | boolean | Artist channel | false |
commentUrl | string | Deep link to the comment | "https://www.youtube.com/watch?v=…&lc=…" |
videoUrl | string | Watch link for the source video | "https://www.youtube.com/watch?v=jNQXAC9IVRw" |
commentId | string | Unique comment ID | "UgzuC3zz…AaABAg" |
parentCommentId | string | null | Parent comment ID for replies (null for top-level) — use it to rebuild threads | null |
authorChannelId | string | null | Author's YouTube channel ID | "UCC5NfQ6Mf0dq_eEwv4P_hWA" |
videoId | string | Source video ID | "jNQXAC9IVRw" |
videoChannelId | string | null | Source video's channel ID | "UC4QobU6STFB0P71PMvOGN5A" |
isNew | boolean | New since the previous run (always meaningful in monitor mode) | true |
scrapedAt | string | UTC timestamp of the run (ISO 8601) | "2026-06-12T09:15:00.000Z" |
Thread reconstruction:
parentCommentIdisnullfor top-level comments and carries the parent's ID for replies — group rows by it (withincludeReplieson) to rebuild full conversation threads. The*Textlike/reply fields keep YouTube's abbreviated display form ("4.5K","1.2M"), which is handy at a glance alongside the parsed numbers.
Example row (JSON)
{"authorAvatarUrl": "https://yt3.ggpht.com/…","authorName": "@SanDiegoZoo","text": "We're so honored that the first ever YouTube video was filmed here!","likeCount": 4500000,"likeCountText": "4.5M","replyCount": 985,"replyCountText": "985","publishedTimeText": "6 years ago","publishedAtApprox": "2020-06-12T09:00:00.000Z","videoTitle": "Me at the zoo","videoChannelName": "jawed","isReply": false,"isPinned": false,"isHeartedByCreator": false,"isEdited": false,"authorIsChannelOwner": false,"authorIsVerified": true,"authorIsArtist": false,"commentUrl": "https://www.youtube.com/watch?v=jNQXAC9IVRw&lc=UgzuC3zzpRZkjc5Qzsd4AaABAg","videoUrl": "https://www.youtube.com/watch?v=jNQXAC9IVRw","commentId": "UgzuC3zzpRZkjc5Qzsd4AaABAg","parentCommentId": null,"authorChannelId": "UCC5NfQ6Mf0dq_eEwv4P_hWA","videoId": "jNQXAC9IVRw","videoChannelId": "UC4QobU6STFB0P71PMvOGN5A","isNew": true,"scrapedAt": "2026-06-12T09:15:00.000Z"}
Export the dataset as CSV, JSON, Excel or HTML from the run's Dataset tab, or connect Google Sheets / BigQuery / Slack / Make / Zapier via Apify integrations.
🔔 How monitor mode works
- First run per video = free baseline. You start watching a video without a surprise bill — the initial batch of comments is delivered free.
- Every later run = new only. From the second run on, you receive only the comments posted since your last run, per video, deduplicated automatically.
- Quiet runs are cheap. A run that finds nothing new costs only a tiny per-video check fee, so you can schedule it as often as you like.
📅 Daily scheduling for a continuous feed
- Configure your input once (
mode: "monitor", your videos and/or channels) and Save as Task. - Add a Schedule — daily or hourly.
- Connect an integration — Google Sheets, Slack webhook, BigQuery, Make, n8n or Zapier — to act on each batch of new comments automatically.
💵 Pricing
Pay-per-event — no subscription. You're charged per run start, per video checked, and per comment delivered — with the first run per video delivered free. Empty monitor checks (no new comments) cost only the run + per-video check fees, so scheduling is cheap. Exact per-event rates are shown on the Actor's Pricing tab.
| Event | When it's charged |
|---|---|
| Actor start | Once per run |
| Video checked | Per video inspected, even when no new comments are found |
| Comment delivered | Per comment row delivered — free on the first (baseline) run per video |
With Apify's free tier ($5 credit), a daily multi-video comment monitor runs for a long time before you pay anything.
💡 Pro tips
- Best monitor setup:
mode = monitor, leaveincludeRepliesoff, and schedule daily — every row in a monitor run is new by definition. - Cheapest runs: keep
includeRepliesoff; reply threads cost extra requests. Turn it on only when you need full conversations (monitor mode expands replies for new comments only). - Busy videos: if more new comments arrive between runs than
maxCommentsPerVideo, raise the cap or run more often — the Actor emits the newest cap and logs a warning so you know. - Trim your bill for free: pass
commentTextFilter,onlyChannelOwner, orminLikeCountin JSON input (see Input note) to deliver only the comments you care about — you aren't charged for the ones filtered out. - Rebuild threads: turn on
includeRepliesand group rows byparentCommentIdto reconstruct full conversations.
ℹ️ Good to know
- Publish time is relative. YouTube shows
"2 hours ago";publishedAtApproxis an approximate absolute time that grows less precise with age (a "3 years ago" comment is only roughly accurate). The verbatim label is always kept inpublishedTimeText. - Counts are abbreviated.
likeCount/replyCountare parsed from YouTube's short labels ("4.5M"→4500000), so large numbers are approximate; the exact display strings are kept inlikeCountText/replyCountText. - Monitor scope = new top-level comments. New replies to old comments are not flagged as new. (Replies to new comments are captured when
includeRepliesis on.) - Resilient by design — videos with comments disabled, deleted, or made private produce a warning and 0 rows, never a failed run, so one bad video never breaks the whole run.
▶️ Ready?
Click Start with the prefilled input — your first comment rows arrive in seconds. Then set mode to monitor, add your videos or channels, schedule it, and never miss a new comment again.
📬 Feedback & support
If you have any questions, feature requests, or encounter any issues, please open an issue on the Actor's page. We'd love to hear from you!