YouTube Comments Scraper
Scrape YouTube comments and replies with no login or API key: text, likes, reply counts, authors and timestamps.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
videoUrls,videoIds,maxComments(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.0004 per comment = $0.4 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Comment scraped | Price per YouTube comment returned | $0.0004 |
| Actor start | Charged once when a run starts. Covers the fixed cost of spinning up the run so that small runs remain viable. | $0.001 |
Pay-per-event pricing: you are billed per result, not per subscription — a run that returns nothing costs nothing beyond the start fee. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-04, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
videoUrls | YouTube watch URLs to scrape comments from. | array |
videoIds | Or bare 11-char video IDs. | array |
maxComments | Max comments across all videos. Charged per comment. | integer |
notionConnector | Optional Notion delivery. | string |
notionParentId | Optional Notion data-source id. | string |
What you get
A structured dataset — each result includes fields like:
textlikeCountreplyCountauthorvideoIdExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
Related tools in YouTube & Creator Tools
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
YouTube Playlist Scraper
Export every video in a YouTube playlist: title, channel, duration, views, publish date and URL. No API key, OAuth or quota.
YouTube Transcript Scraper
Extract YouTube transcript text, timestamped segments, SRT, VTT, languages and video metadata without an API key.
YouTube Trending Scraper
Scrape trending YouTube videos by topic or keyword, no login or API key. Views, titles, channels, duration, thumbnails.
YouTube Channel Email Scraper
Find business emails publicly listed in YouTube channel descriptions and their linked websites. Built for creator outreach and sponsorships. No login needed.
YouTube Scraper
Scrape YouTube videos by keyword or channel without the API. Get titles, views, publish dates, watch URLs and channel data. No key or cookies needed.
YouTube Channel Monitor — New Upload Tracker
Watch any YouTube channels and get only their new uploads as structured data — title, URL, views, duration, Shorts flag. Works as an upload trigger.
Where this tool sits
- Categories
- YouTube & Creator Tools
- Platforms
- YouTube
⚡ YouTube Comments Scraper — Every Comment, No Login, No API Key
Pull comments from any YouTube video without a login, API key, cookies, or quota. Paste watch URLs (or bare video IDs) and get back every comment — text, like count, reply count, author, verified status, timestamp and more. Export to JSON, CSV or Excel, call it from the API, or have results delivered straight to Notion. $0.40 per 1,000 comments plus a $0.001 run-start fee, billed per comment actually returned — the cheapest YouTube comment scraper on the market.
> No Google account. No OAuth. No Data API key to register. No daily quota. Paste a video link and run.
Why this scraper wins
- 💸 Cheapest on the market — $0.40 per 1,000 comments, the same rate on every Apify plan. No volume tiers, no plan gates, no minimum spend.
- 🔓 Keyless & login-free — no Google sign-in, no OAuth, no YouTube Data API key, and none of the API's 10,000-unit daily quota.
- 🧹 Clean, flat records — one tidy object per comment, ready for sheets, sentiment analysis, dashboards or LLM pipelines. No nested renderer blobs to unwrap.
- 🧵 Replies included — reply-level comments come back alongside top-level ones, each flagged with
isReply, and every comment carries its ownreplyCount. - 📬 Built-in Notion delivery — push every run into Notion via Apify connectors, zero extra code.
- 🚦 Honest errors — a clear diagnostic row (
NO_RESULTS,BLOCKED,RATE_LIMITED,SERVER_ERROR,NETWORK) when a video has comments disabled or YouTube throttles, instead of silent emptiness. Diagnostic rows are never charged. - 🔁 Retries built in — transient 429s and 5xx responses are retried with exponential backoff and rotated request fingerprints before anything is reported as a failure.
What you can scrape
| Input | Accepts | Returns |
|---|---|---|
| Video URLs | https://www.youtube.com/watch?v=..., youtu.be/..., /shorts/... | Comments on each video |
| Video IDs | bare 11-char IDs (e.g. dQw4w9WgXcQ) | Comments on each video |
You can mix multiple videos in one run; maxComments is split fairly across them, so one very chatty video cannot eat the whole budget while the others return nothing.
Input
videoUrls— YouTube watch / Shorts /youtu.beURLs to scrape comments from. A video ID is extracted from any of those shapes, so query strings, timestamps and playlist parameters in the URL are harmless.videoIds— or bare 11-character video IDs. Mix both fields freely; duplicates across the two lists are de-duplicated before the run starts.maxComments— total comments to pull across all videos (default100, max10000). You pay per comment, so this is your budget cap.proxyConfiguration— Apify Proxy; rotating datacenter addresses are plenty for YouTube and are preconfigured. You can also supply your own proxy URLs.notionConnector/notionParentId— optional Notion delivery (connector ID + data-source ID).
Example input
{
"videoUrls": [
"https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"https://youtu.be/9bZkp7q19f0"
],
"videoIds": ["kJQP7kiw5Fk"],
"maxComments": 600,
"proxyConfiguration": { "useApifyProxy": true }
}
That run pulls up to 600 comments spread across the three videos and stops as soon as the budget is reached.
Output (one record per comment)
{
"ok": true,
"type": "comment",
"id": "UgxKREWxIgDrw8w2e_Z4AaABAg",
"videoId": "dQw4w9WgXcQ",
"text": "Never gonna give this song up 🎶",
"publishedTime": "2 weeks ago",
"likeCount": "1.2K",
"replyCount": "34",
"isReply": false,
"author": "@musicfan",
"authorChannelId": "UCabc123...",
"authorIsVerified": false,
"authorAvatar": "https://yt3.ggpht.com/...=s48"
}
Field reference
| Field | Type | Notes |
|---|---|---|
ok | boolean | true on data rows, false on diagnostic rows — filter on it |
type | string | always comment |
id | string | YouTube's own comment ID; stable, use it to de-duplicate across runs |
videoId | string | the 11-char video the comment belongs to |
text | string | full comment body, emoji preserved, newlines intact |
publishedTime | string | relative, as YouTube shows it ("2 weeks ago") |
likeCount | string | as displayed, abbreviated for large numbers ("1.2K") |
replyCount | string | number of replies on the thread, as displayed |
isReply | boolean | true for reply-level comments |
author | string | display name / handle |
authorChannelId | string | UC… channel ID, for joining to channel data |
authorIsVerified | boolean | verified badge on the author's channel |
authorAvatar | string | avatar image URL |
Diagnostic rows use a different shape: { "ok": false, "errorCode": "NO_RESULTS", "error": "…human-readable explanation…", "videoId": "…" }. They exist so a run tells you *why* a video came back empty. They are free.
Calling it from the API
curl -X POST "https://api.apify.com/v2/acts/Dami_Studio~youtube-comments-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"videoUrls":["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"maxComments":200}'
The response is the dataset itself — a JSON array of the comment records above. Add &format=csv for CSV. The input field names follow the conventions used across similar Actors, so switching from another comment scraper is usually a drop-in change to the token and the Actor path.
What people build with it
- Sentiment and audience research — pull thousands of comments across a channel's videos and run them through a classifier to see what an audience actually reacts to.
- Creator competitive analysis — measure engagement depth (replies per comment, verified-author participation) instead of just view counts.
- Product feedback mining — review, unboxing and tutorial videos are full of specific complaints and feature requests that never reach a support inbox.
- Community moderation snapshots — export a video's comments before and after a moderation pass to see what changed.
- LLM/RAG corpora — flat one-object-per-comment records drop straight into an embedding pipeline without any reshaping.
Pricing
$0.40 per 1,000 comments ($0.0004 each), plus $0.001 each time a run starts. Flat on every Apify plan — this is the cheapest rate on the market for YouTube comments, and it does not change with volume, plan tier or account age.
| What | Price |
|---|---|
| Comment returned | $0.0004 (= $0.40 per 1,000) |
| Run start | $0.001 per run |
| Diagnostic / error rows | free |
You are charged only for comments actually returned. A video with comments disabled, a blocked run, or a run that finds nothing costs nothing beyond the $0.001 start fee. maxComments is a hard ceiling, so a run can never bill more than maxComments × $0.0004 + $0.001.
Worked example: 5,000 comments = 5,000 × $0.0004 + $0.001 = $2.001.
Limitations — read these before you buy
Stated plainly, because they decide whether this Actor fits your job:
- Comment order is YouTube's default ranking ("Top comments"), not chronological. There is no newest-first switch, so a
maxCommentscap gives you the most-engaged comments rather than the most recent ones. publishedTimeis relative, not an exact timestamp. YouTube itself only exposes"2 weeks ago"-style strings on this surface. If you need absolute dates you must anchor them to the run date yourself.likeCountandreplyCountare display strings, not integers — large values are abbreviated ("1.2K","3.4M"). Parse them if you need arithmetic.- Not every reply thread is expanded. Reply-level comments are returned as they appear in the comment stream and flagged with
isReply, but a thread with 500 replies will not return all 500. UsereplyCountto know how many exist. - Members-only, age-restricted, private and region-locked videos return a diagnostic row instead of comments — those surfaces need a signed-in account, which this Actor deliberately never uses.
- Videos with comments disabled return a
NO_RESULTSdiagnostic row. That is the video's setting, not a scraper failure. - No hearts, pins or timestamps-in-thread. Creator-hearted, pinned, and "highlighted" flags are not returned.
- No edit history and no deleted comments. You get what is publicly visible at run time.
- Hard cap of 10,000 comments per run. For more, split the videos across several runs — this cap is a cost guard, not a technical wall.
- Heavy sustained volume can be throttled by YouTube. The Actor backs off and retries, then reports
RATE_LIMITEDhonestly rather than returning a half-empty dataset with no explanation.
FAQ
Do I need a YouTube or Google account? No. Public videos' comments are scraped keyless — no login, OAuth, or Data API key, and nothing is ever signed in on your behalf.
How is this different from the official YouTube Data API? The Data API requires a registered key and burns a tight 10,000-unit daily quota that a single busy video can exhaust. This Actor needs neither and pulls comments far past those limits for a flat per-comment price.
Are replies included? Yes. Both top-level comments and replies are returned, each marked with isReply. See the limitation above on very large threads.
Can I scrape several videos in one run? Yes — pass any mix of videoUrls and videoIds. The maxComments budget is divided fairly between them.
A video returned a NO_RESULTS row — why? That video has comments disabled, is unavailable in the proxy's region, or requires a sign-in. The Actor tells you exactly what happened instead of failing silently, and does not charge you for it.
Do I pay for failed runs? Only the $0.001 start fee. Diagnostic rows are never billed.
Can I deliver straight to Notion? Yes — supply a notionConnector ID and notionParentId and every comment is pushed to your Notion data source automatically.
Can I schedule it? Yes. Use Apify Schedules to re-run the same input daily or hourly; de-duplicate across runs on the comment id, which is stable.
Which proxy should I use? The default rotating datacenter addresses are enough for YouTube. You can supply your own proxy URLs if you need a specific region.