YouTube Comments Scraper avatar

YouTube Comments Scraper

Pricing

$0.40 / 1,000 comments

Go to Apify Store
YouTube Comments Scraper

YouTube Comments Scraper

Scrape YouTube video comments: text, author, likes, reply count, timestamps. Pure HTTP, no browser, no proxy needed. Cheap per-comment pricing.

Pricing

$0.40 / 1,000 comments

Rating

0.0

(0)

Developer

Z Michael

Z Michael

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

Extract comments from any YouTube video — text, author, likes, reply count and publish time — as clean structured data.

Use it for sentiment analysis, audience research, creator analytics, or building text datasets for LLM training.

What you get

  • Up to 5,000 comments per video — paginates automatically
  • One item per video — metadata plus a comments array, so you keep the video context
  • No API key, no proxy setup — nothing to configure beyond the video URLs
  • ~5 seconds per video for 100 comments

Example output

{
"videoId": "dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up",
"commentCount": 100,
"pagesScraped": 4,
"comments": [
{
"commentId": "UgzKYksqeQ5gA3t0g0F4AaABAg",
"text": "Gonna flag this for nudity so I can rick roll the YouTube staff",
"author": "@grustache4569",
"authorChannelId": "UC...",
"isVerified": false,
"isCreator": false,
"likes": "107K",
"replies": "671",
"publishedTime": "3 years ago"
}
]
}

Use cases

  • Sentiment analysis — export comments and run them through any NLP model
  • Audience research — what do viewers actually complain about or praise
  • Creator analytics — comment volume and engagement per upload
  • Dataset building — collect text corpora for training or evaluation
  • Product research — mine launch videos and reviews for feature requests

Input

FieldTypeDescription
Video URLs or IDsarrayYouTube URLs or 11-character video IDs. Multiple allowed.
Max comments per videointeger1–5,000. Default 100.
Content languagestringInterface language, affects relative dates. Default en.

Output fields

FieldExample
videoIddQw4w9WgXcQ
titleRick Astley - Never Gonna Give You Up
commentCount100
comments[].textGonna flag this for nudity...
comments[].author@grustache4569
comments[].likes107K
comments[].replies671
comments[].publishedTime3 years ago
comments[].isVerifiedfalse
comments[].isCreatorfalse

Pricing

Pay per comment: $0.0004 per comment.

  • 100 comments = $0.04
  • 1,000 comments = $0.40
  • 10,000 comments across 100 videos = $4.00

Only comments actually delivered are charged. A video with comments disabled costs nothing.

FAQ

Do I need a YouTube Data API key? No. There is nothing to register and no quota limit.

What happens if a video has comments disabled? That video returns an item with error: "comments_disabled" and you are not charged for it.

Top-level comments or replies too? Top-level comments only. Each comment includes a replies count so you know which threads have discussion worth opening manually.

Why is likes a string like "107K"? That is how YouTube renders it. Parse to a number if you need arithmetic.

Can I scrape the same video repeatedly? Yes. Note that YouTube returns comments in its own order, so results can shift between runs.

Does it work for any language? Yes. Text is returned as-is; the language field only affects relative date formatting.

Monitor Mode (daily incremental runs)

Set Only new items = true to turn this scraper into a monitor. It remembers what was already delivered for each query/video/channel and returns only new items since the last run.

How it works:

  1. First run = baseline, returns everything
  2. Every run after = returns only the delta (new comments / newly listed videos)
  3. No new data = empty dataset, you are not charged (pay-per-result billing only fires on delivered items)
  4. Combine with Apify Schedules to run it daily or hourly

Optional Webhook URL: whenever new items are found, the actor POSTs a JSON payload — {event, source, newCount, scannedCount, sample, at} — to your endpoint (Slack webhook, n8n, Make, your own API). Nothing is sent when there is no new data; failed deliveries never fail the run.

Typical use cases: track brand mentions in new YouTube comments, alert on newly published videos matching a keyword, watch a competitor channel for fresh uploads — without re-paying for data you already have.