Request a tool
All toolsGuidesMCP serverRequest a toolPlatformsCategories
YouTube Comments Scraper icon

YouTube Comments Scraper

Scrape YouTube comments and replies with no login or API key: text, likes, reply counts, authors and timestamps.

56 runs on Apify $0.0004 per comment ($0.4 / 1,000)
Run this in the cloudRun on Apify →

YouTube & Creator Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust videoUrls, videoIds, maxComments (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export 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 forWhenPrice
Comment scrapedPrice per YouTube comment returned$0.0004
Actor startCharged 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

FieldWhat it doesType
videoUrlsYouTube watch URLs to scrape comments from.array
videoIdsOr bare 11-char video IDs.array
maxCommentsMax comments across all videos. Charged per comment.integer
notionConnectorOptional Notion delivery.string
notionParentIdOptional Notion data-source id.string

What you get

A structured dataset — each result includes fields like:

textlikeCountreplyCountauthorvideoId

Export 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 iconYouTube & Creator Tools

YouTube Playlist Scraper

Export every video in a YouTube playlist: title, channel, duration, views, publish date and URL. No API key, OAuth or quota.

Ready to run — no setup

YouTube Transcript Scraper iconYouTube & Creator Tools

YouTube Transcript Scraper

Extract YouTube transcript text, timestamped segments, SRT, VTT, languages and video metadata without an API key.

Ready to run — no setup

YouTube Trending Scraper iconYouTube & Creator Tools

YouTube Trending Scraper

Scrape trending YouTube videos by topic or keyword, no login or API key. Views, titles, channels, duration, thumbnails.

Ready to run — no setup

YouTube Channel Email Scraper iconYouTube & Creator Tools

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.

Ready to run — no setup

YouTube Scraper iconYouTube & Creator Tools

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.

18 use cases

YouTube Channel Monitor — New Upload Tracker iconYouTube & Creator Tools

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.

17 use cases

See all YouTube & Creator Tools →

⚡ 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 own replyCount.
  • 📬 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

InputAcceptsReturns
Video URLshttps://www.youtube.com/watch?v=..., youtu.be/..., /shorts/...Comments on each video
Video IDsbare 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.be URLs 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 (default 100, max 10000). 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

FieldTypeNotes
okbooleantrue on data rows, false on diagnostic rows — filter on it
typestringalways comment
idstringYouTube's own comment ID; stable, use it to de-duplicate across runs
videoIdstringthe 11-char video the comment belongs to
textstringfull comment body, emoji preserved, newlines intact
publishedTimestringrelative, as YouTube shows it ("2 weeks ago")
likeCountstringas displayed, abbreviated for large numbers ("1.2K")
replyCountstringnumber of replies on the thread, as displayed
isReplybooleantrue for reply-level comments
authorstringdisplay name / handle
authorChannelIdstringUC… channel ID, for joining to channel data
authorIsVerifiedbooleanverified badge on the author's channel
authorAvatarstringavatar 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.

WhatPrice
Comment returned$0.0004 (= $0.40 per 1,000)
Run start$0.001 per run
Diagnostic / error rowsfree

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 maxComments cap gives you the most-engaged comments rather than the most recent ones.
  • publishedTime is 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.
  • likeCount and replyCount are 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. Use replyCount to 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_RESULTS diagnostic 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_LIMITED honestly 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.