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

YouTube Comments Scraper

Scrape YouTube comments with no login or key. Get text, likes, reply counts, author handle, verified badge and timestamp. $0.40 per 1,000.

130 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

Pay-per-event pricing: you are billed per result, not per subscription. 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. Get title, watch URL, views, age, runtime and thumbnail. No API key or OAuth. $0.40 per 1,000 videos.

2 use cases

YouTube Transcript Scraper iconYouTube & Creator Tools

YouTube Transcript Scraper

YouTube transcripts from links or a keyword search: text, timed segments, SRT, VTT and video details. No API key. $0.80 per 1,000.

2 use cases

YouTube Trending Scraper iconYouTube & Creator Tools

YouTube Trending Scraper

Get the most-viewed YouTube videos for any topic, no login or key. Rows carry views, titles, channels, duration, thumbnails. $0.40 per 1,000 videos.

Ready to run — no setup

YouTube Channel Email Scraper iconYouTube & Creator Tools

YouTube Channel Email Scraper

Find the business emails creators publish in their YouTube channel description, plus their linked site's contact pages. $1.50 per 1,000 channels.

Ready to run — no setup

YouTube Scraper iconYouTube & Creator Tools

YouTube Scraper

Search YouTube or scrape a channel: title, channel, views, publish date, length and thumbnail. No API key or quota. $0.135 per 1,000 videos.

18 use cases

YouTube Channel Monitor — New Upload Tracker iconYouTube & Creator Tools

YouTube Channel Monitor — New Upload Tracker

Watch YouTube channels and get only their new uploads: title, URL, publish date, views, thumbnail. $0.01 per new video.

17 use cases

See all YouTube & Creator Tools →

YouTube Comments Scraper: comment text, authors and like counts from any public video

Point it at watch links, youtu.be links, Shorts links or bare video ids and you get the comments as flat rows: the text, the author handle and channel id, the like and reply counts, the verified badge and the avatar. No API key to request and no Google quota to keep an eye on.

Read the like count before you build anything on it. YouTube abbreviates it on the page, so a comment with 315,000 likes arrives as the string "315K". Small numbers come through exact, large ones do not, and the exact figure is not recoverable from the text.

InputWatch, youtu.be or Shorts links, or bare 11 character video ids
OutputOne row per comment
Ceiling10,000 comments per run
Account neededNone from you
Price$0.40 per 1,000 comments, flat on every plan

💬 What YouTube Comments Scraper does

It reads each video's comment list in YouTube's own default order, which is roughly top comments rather than newest first, and pages through it until the budget runs out.

maxComments is the budget for the whole run, divided evenly across your videos. 500 over five videos is about 100 from each, not 500 from the first. The division rounds down and the remainder is not handed back, so 100 across three videos returns at most 99. Ask for fewer comments than you have videos and each one gets exactly one.

Pass videoUrls and videoIds together if that is what you have. They are merged and deduplicated before anything is fetched.

📥 What you give it

{
  "videoUrls": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    "https://youtu.be/9bZkp7q19f0"
  ],
  "maxComments": 500
}
FieldDefaultWhat it is
videoUrlsnoneWatch links, youtu.be short links and /shorts/ links all parse.
videoIdsnoneOr bare 11 character ids, if that is what your pipeline holds.
maxComments100Total across every video in the run, 1 to 10,000. This is also your spend cap.
notionConnector, notionParentIdnoneOptional. Write each comment into a Notion database as well as the dataset.
proxyConfigurationApify defaultLeave it alone unless you have your own servers you want the run to go out through.

Send at least one video. With nothing usable in either field the run fails rather than returning an explanatory row.

📤 What you get back

A real row from a real run, with the avatar link cut short:

{
  "ok": true,
  "type": "comment",
  "id": "EhpVZ3pnZTM0MGRCZ0I3NWhXQm01NEFhQUJBZyAoKAE%3D",
  "videoId": "dQw4w9WgXcQ",
  "text": "can confirm: he never gave us up",
  "publishedTime": "1 year ago",
  "likeCount": "315K",
  "replyCount": "963",
  "isReply": false,
  "author": "@YouTube",
  "authorChannelId": "UCBR8-60-B28hp2BmDPdntcQ",
  "authorIsVerified": true,
  "authorAvatar": "https://yt3.ggpht.com/3s6evpqAiDU9tQR4sC2siJippbH2RWVPnwHgyl4V0th2iuQz0VDQZbUhQBGmsxLYo-..."
}
FieldWhat it is
textThe comment as written, newlines and all.
author, authorChannelIdThe @handle as displayed, and the stable UC id. Join on authorChannelId, because handles change.
likeCount, replyCountDisplay strings, abbreviated by YouTube: "315K", "963". Not numbers.
publishedTimeRelative text such as "1 year ago". There is no absolute timestamp in this payload.
isReplytrue when the row sits under another comment rather than at the top level.
idThe comment's entity key from the page. Unique within a video, and stable enough to dedupe on.
authorIsVerified, authorAvatarThe verified tick, and a link to the avatar image.

🧾 Reading the output

Two kinds of row land in your dataset.

RowHow to spot itBilled
A commentok: true and type: "comment"yes
A diagnosticok: false and an errorCodeno

Filter on ok == true and you have your data. A video whose comment list could not be read gets one uncharged NO_RESULTS row naming the videoId, and the run moves on.

Read that row as "the list did not come back", not as "this video has no comments." Comments being switched off is the usual reason, and it is the reason the row text gives, but a request that came back without the list looks the same from here. If a video you know has comments returns NO_RESULTS, run it again on its own before believing it.

The Overview table shows the comment columns only, so a diagnostic reads as a blank line there. Open the row or download the JSON for the errorCode.

▶️ How to run it

1. Open YouTube Comments Scraper and click Try for free. 2. Paste links into Video URLs, or ids into Video IDs. 3. Set Max comments. Start at 100 while you look at the shape. 4. Click Start. 5. Download the dataset as JSON, CSV or Excel, or read it over the Apify API.

💰 How much does it cost?

$0.40 per 1,000 comments. Flat on every Apify plan, no volume tiers.

You pay per comment row delivered. Diagnostic rows and duplicates dropped inside a run are never billed, so a video with comments switched off delivers no charged rows. maxComments is the ceiling on both the rows and the spend.

💡 What people use it for

  • Reading a launch video's reaction without scrolling for an hour. The upvoted comments come first,

which is where the complaints sit as well as the praise.

  • Pulling a few hundred comments off videos in your market and seeing which two or three questions

keep coming back. That is what your own page should answer.

  • Finding repeat commenters: group by authorChannelId and the accounts on every video are either

your regulars or bots.

  • Collecting quotes for research, with the handle and channel id attached for attribution.

🚧 What it does not do

  • Reply threads are not expanded. Every row carries replyCount, so you know how much

conversation sits under a comment, and replies YouTube returns inline are marked isReply: true. It does not open each "view 963 replies" thread. If you need complete reply trees, this is not it.

  • No video-level data. Every row is about the comment. The title, view count and description are

not in the payload, so use a video scraper for those.

  • Top comments order only. There is no newest-first or sort option, because the page does not

offer one without signing in.

  • Like and reply counts are abbreviated strings. Sort on them and "1.2K" orders as text.
  • No real timestamps. publishedTime is relative to when the run read the page.
  • The budget divides evenly, so one video in a long list cannot take more than its share.

🧭 Which YouTube scraper do you need?

If you wantUse
Comments under videos you already have links forThis one
Videos to run this on, by keyword or channelYouTube Scraper
Every upload from one channelYouTube Channel Scraper
What is actually said in the videoYouTube Transcript Scraper
Shorts, with exact view and like countsYouTube Shorts Scraper

❓ Questions people ask

Do I need a YouTube or Google account? No. Nothing here is signed in, and there is no quota.

Is maxComments per video? No, per run, split evenly across the videos you pass.

Can I get every comment on a big video? Up to 10,000 in one run, in YouTube's top-comments order. There is no resume, so a second run starts at the top again.

Why are the like counts text? Because that is what the page prints. "315K" is YouTube's own rounding, and the exact number is not on the page to read.

Can I filter by keyword or date? Not in the input. Pull the comments and filter text and publishedTime yourself.

Is scraping YouTube legal? This reads public comments on public videos. They are personal data, which GDPR and similar laws cover, so have a reason for collecting them and be careful about republishing handles. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page. Include the video link you used and the run ID, and the log is enough for us to see what happened.