YouTube Comments Scraper - With Replies
Pricing
from $0.50 / 1,000 comment delivereds
YouTube Comments Scraper - With Replies
Scrape YouTube comments and full reply threads in bulk from videos, channels and playlists. Like counts, reply counts, author channel IDs, verified and creator flags, sorted by top or newest. Keyword and like filters run before billing, so filtered comments are free.
Pricing
from $0.50 / 1,000 comment delivereds
Rating
0.0
(0)
Developer
DONGMIN KIM
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
YouTube Comments Scraper — Bulk Comments & Replies with Likes, Authors and Dates

Pull every comment from a video, a whole channel, or a playlist in one run. Top-level comments and reply threads, with like counts, reply counts, author channel IDs, verified and creator flags, and a direct link to each comment.
What it does well
- Bulk input — videos,
@handles, channel URLs and playlists in the same run. Channels are expanded automatically. - Real pagination — pulls hundreds of comments per video, not just the first page. (Getting this right is subtle: YouTube's page token and its reply-thread tokens are the same shape, and matching on shape rather than position quietly paginates into one reply thread and stops at ~30 comments. This actor does not do that.)
- Replies — optional full reply-thread expansion, flagged with
isReplyandreplyLevel. - Sort control — Top comments, or Newest first for monitoring.
- Server-side filtering — keep only comments containing your keywords, or above a like threshold. Filtered comments are not billed.
- Throttle handling — datacenter → residential proxy escalation with per-video IP sessions.
Input
{"videoUrls": ["https://www.youtube.com/watch?v=8S0FDjFBj8o", "@veritasium"],"maxVideos": 25,"maxCommentsPerVideo": 500,"sortBy": "newest","includeReplies": true,"filterKeywords": ["pricing", "alternative", "how do I"],"minLikeCount": 2}
Every option
The same wording you see in the Apify console, with the JSON key for API and MCP callers.
| Option | What it does | Default |
|---|---|---|
YouTube URLs — videoUrls (required) | Videos, channels or playlists. Any mix of watch URLs, youtu.be links, /shorts/, bare video IDs, @handles, /channel/UC…, or playlist URLs. Channels and playlists are expanded into their videos automatically. | — |
Max videos — maxVideos | Cap on how many videos to visit, counting videos pulled out of channels and playlists. | 10 |
Max comments per video — maxCommentsPerVideo | Stop after this many comments on each video. Comments arrive 20 per request, so this is also the main cost control. | 100 |
Sort by — sortBy | Top comments is YouTube's relevance ranking. Newest first is what you want for monitoring and alerting. | "top" |
Include replies — includeReplies | Expand reply threads as well as top-level comments. Replies are marked with isReply and replyLevel. This costs extra requests, so leave it off if you only need top-level sentiment. | false |
Only keep comments containing — filterKeywords | Case-insensitive keywords. A comment is kept if it contains any of them. Leave empty to keep everything. Useful for brand monitoring and lead detection. | — |
Minimum likes — minLikeCount | Drop comments below this like count. Filtered-out comments are not billed. | 0 |
Concurrency — concurrency | How many videos to process in parallel. | 5 |
Proxy — proxyConfiguration | Leave the default. The actor starts on cheap datacenter proxies and only escalates to residential if YouTube actually throttles it. | {"useApifyProxy":true} |
Output
One row per comment. Replies are rows too, marked with isReply.
{"videoId": "8S0FDjFBj8o","commentId": "UgxRK6CK8oblNf__AHx4AaABAg","text": "This is the equivalent to adding random words to reach the word count.","likeCount": 12000,"replyCount": 14,"publishedTimeText": "7 years ago","isReply": false,"replyLevel": 0,"isPinned": false,"authorName": "@davidrojas9668","authorChannelId": "UCzvkFTT6KgHZeMYf0gczw5Q","authorChannelUrl": "https://www.youtube.com/channel/UCzvkFTT6KgHZeMYf0gczw5Q","authorAvatarUrl": "https://yt3.ggpht.com/ytc/...","authorIsVerified": false,"authorIsCreator": false,"commentUrl": "https://www.youtube.com/watch?v=8S0FDjFBj8o&lc=UgxRK6CK8oblNf__AHx4AaABAg","videoTitle": "The Danger of Silence","videoUrl": "https://www.youtube.com/watch?v=8S0FDjFBj8o"}
Every field
You are billed per comment delivered, so here is everything a row can contain. A field is absent when YouTube did not publish it for that comment.
| Field | What it is |
|---|---|
videoId | The video the comment is on. |
commentId | YouTube's comment id, unique and stable. |
text | The comment body, entities decoded. |
publishedTimeText | YouTube's relative text, e.g. "7 years ago". It publishes no exact timestamp here. |
likeCount | Likes, expanded from the abbreviated display text ("12K" → 12000). |
replyCount | Replies YouTube reports on the thread. 0 on replies themselves. |
isReply | true when the row is a reply rather than a top-level comment. |
replyLevel | 0 for top-level, 1 for a reply. |
isPinned | true when the creator pinned this comment to the top. |
authorName | Display name, usually an @handle. |
authorChannelId | The commenter's UC… channel id. |
authorChannelUrl | Their channel URL, built from the id. |
authorAvatarUrl | Their avatar image. |
authorIsVerified | YouTube's verified badge. |
authorIsCreator | true when the commenter owns the video. |
commentUrl | A deep link that opens this exact comment. |
videoTitle | Title of the video, so a multi-video run reads without a join. |
videoUrl | watch?v= URL of the video, for the same reason. |
Who this is for
- Brand and community managers — complaints and feature requests arrive in comments long before they reach support.
- Product and audience researchers — the questions your viewers ask, in their words, at the scale of a whole channel.
- Prospectors —
filterKeywordson buying-intent phrases turns a comment section into a list of author channels worth approaching. - Moderation and sentiment teams — a labelled export with author metadata attached.
Common uses
- Brand & competitor monitoring — watch a competitor's channel for complaints and feature requests.
- Lead generation —
filterKeywordson buying-intent phrases, then work the author channels. - Audience research — what your viewers actually ask, in their own words.
- Sentiment & moderation datasets — export to CSV or JSON with author metadata attached.
- Creator analytics — find your most-engaged commenters across a back catalogue.
Pricing
Pay per comment delivered. Comments removed by your keyword or like filters, videos with comments disabled, and failed requests cost nothing.
Starting a run costs $0.00001 — the platform's $0.00001 minimum, charged once per GB of memory, and these Actors run on 512 MB.
Other Actors in this family
Same engines, same billing, no account or API key on any of them.
YouTube & video
- YouTube Scraper — No API Key, Any URL or Search — Any YouTube URL or search term in, videos out — with subtitles, comments and sponsor deals as add-ons.
- Download YouTube Subtitles in Bulk — SRT, VTT & Text — Bulk subtitles from videos, channels or playlists — text, SRT, VTT or RAG chunks.
- List Every Video on a YouTube Channel — Export to CSV — A channel's whole back catalogue plus a subscriber and RSS summary row.
- Find YouTube Sponsors — Brand Deals, Codes & Links — Which brands pay which creators, with the campaign link, the code and the timestamp.
- YouTube Search API — Bulk Results, No Quota — Many search terms at once, every result as a row, filtered before you are billed.
- Track Deleted YouTube Videos & Title Changes — What a channel quietly changed: deleted videos, rewritten titles, view velocity.
- YouTube Creator Email Finder & Sponsor Lookup — A channel list into leads: the published email, audience bands, and who already sponsors them.
- Export a YouTube Playlist to CSV — Every Video — Any playlist as a table, with each video position in it.
Search demand
- AnswerThePublic Alternative — Autocomplete Keyword API — One seed into hundreds of real keywords from Google, YouTube and Amazon autocomplete.
- Google Trends API — Today's Trending Searches, No Key — Today's trending searches by country, with traffic bands and the news behind them.
E-commerce
- Export Any Shopify Store's Products to CSV or JSON — Any Shopify catalogue: variants, SKUs, live prices, stock, images, collections.
- New Shopify Product Alerts — Competitor Drop Tracker — Only what a store launched since the last run. Scanning is free.
- Shopify Store Email Finder — Qualified B2B Leads — A domain list into qualified leads: contact email, size, price band, and whether the shop still trades.
- Website Tech Stack & Email Finder for B2B Lists — Any domain list into leads: contact email, what the site runs on, and the marketing tags it carries.
Hiring
- Greenhouse, Lever & Ashby Job Scraper — No API Key — Paste a company domain, get its open roles from Greenhouse, Ashby, Lever or SmartRecruiters.
- Ghost Job Detector — Track Reposts, Closures & Edits — What changed on a careers page: opened, closed, quietly reposted, or a ghost job.
Run it from code
Nothing here needs a login to the source, only your Apify token.
HTTP — start a run and wait for the rows:
curl -X POST "https://api.apify.com/v2/acts/gganbukim~youtube-comments-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "content-type: application/json" \-d @input.json
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('gganbukim/youtube-comments-scraper').call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();
Python
from apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("gganbukim/youtube-comments-scraper").call(run_input=input)items = client.dataset(run["defaultDatasetId"]).list_items().items
Scheduled or event-driven — attach a schedule to run it on a cron, or a webhook to push each finished run into your own endpoint. It also connects through Apify's Zapier, Make, n8n and LangChain integrations, and is reachable from an MCP server if you are driving it from an agent.
Standby / API mode — the run above is synchronous: one call in, rows out, no polling. That is the shape to use if you are calling this per request rather than in a batch.
Errors, limits and what you are charged for
- You pay for delivered rows only. A row your filters removed, a page that failed, a retry — none of it is billed. Starting a run costs $0.00001: the platform minimum, charged once per gigabyte, and this Actor runs on 512 MB.
- A run that delivers nothing still costs the start fee and nothing else. If the input resolved to zero items, the run fails loudly with the reason rather than finishing green on an empty dataset.
- Blocking is handled by changing address, not by waiting. The Actor starts on cheap datacenter proxies and moves up only after a tier has actually been refused several times in a row, then drops back down once the cheap tier answers cleanly again. You are not paying for residential bandwidth that was never needed.
- Rate limits belong to the source, not to this Actor. Very large inputs are worked through in batches; the run reports how many items succeeded, were filtered, and failed, so a partial result is never presented as a complete one.
- Dataset retention follows your Apify plan. Export what you need, or push it out with a webhook, if you want it past that window.
Is this legal?
This Actor reads pages and public endpoints that anyone can open in a browser without an account. It does not log in, does not defeat a paywall, and does not touch anything behind authentication.
Scraping public data is broadly lawful in the US and the EU, and courts have repeatedly said so — but "public" is not the same as "unrestricted", and what you may then do with the data is a separate question from whether you may collect it. Personal data pulls in the GDPR and similar regimes whatever the source, so if your rows contain people, you need a lawful basis for keeping them.
Apify publishes a fuller treatment in Is web scraping legal? and an ethical scraping guide. None of this is legal advice; if the use is commercial and the data is personal, ask someone qualified.
Something wrong, or missing?
Open an issue on the Actor's Issues tab — it goes straight to the developer and is the fastest route. Include the run ID; it carries the input and the log, which is usually enough to reproduce the problem without another round trip.
Sources change without warning, and a field that quietly goes null is worth reporting even if the run succeeded. A broken parser looks exactly like a quiet day in the data until someone says so.
FAQ
Will I get blocked, or my account banned? There is no account to ban — no login, no cookies. Each video gets its own IP session so one throttled video cannot poison the rest of the run, and the proxy tier escalates from datacenter to residential only when it has to. YouTube signals throttling with an HTTP 200 and an error body rather than an error code, which is the trap that silently halves most scrapers' results; this one detects it by reason and rotates.
Does it need a YouTube API key? No.
Comments disabled on a video? That video is skipped and reported in the run summary; you are not charged.
How many comments can I get per video? As many as YouTube will paginate — set maxCommentsPerVideo to control cost.
Can I run it on a schedule? Yes, via Apify Schedules, webhooks, or the API. Also available over MCP for AI agents.
Is it legal to scrape YouTube comments? This reads pages YouTube serves publicly, with no login and nothing bypassed. Public-data scraping is broadly treated as lawful in the US, and comment text is authored by the people who wrote it — so how you use what you collect (research and analysis versus republishing someone's words) matters more than the collection. YouTube's Terms of Service are a separate contract question. Not legal advice.
How much does 1,000 comments cost? $0.50, plus $0.00002 for the run. Comments your keyword or like filters remove are never billed.
Can I export the results to Excel or Google Sheets? Yes. Every run's dataset downloads as CSV, Excel, JSON, XML or RSS from the Storage tab, or straight from the API if you want a live link a spreadsheet can pull.
Can I connect it to Zapier, Make or n8n? Yes — Apify publishes integrations for all three, plus webhooks that fire when a run finishes. A common setup is a schedule here and a webhook into your own database or Slack.
Do I need to write code? No. Fill the form in the console and press Start. If you do want code, the Apify client libraries for Python and JavaScript call this the same way, and it is available over MCP so an AI agent can call it directly.