YouTube Comments Scraper API avatar

YouTube Comments Scraper API

Pricing

from $0.28 / 1,000 youtube comment or replies

Go to Apify Store
YouTube Comments Scraper API

YouTube Comments Scraper API

YouTube comments scraper for videos, Shorts, channels, playlists and search. Export comment/reply threads, authors, likes, dates, creator/hearted/pinned flags and video metadata; filter results, add insights. From $0.35 per 1,000 comments, platform usage included.

Pricing

from $0.28 / 1,000 youtube comment or replies

Rating

0.0

(0)

Developer

Rosario Vitale

Rosario Vitale

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Why use this Actor?

YouTube comments scraper for videos, Shorts, channels, playlists and search. Export comment/reply threads, authors, likes, dates, creator/hearted/pinned flags and video metadata; filter results, add insights. From $0.35 per 1,000 comments, platform usage included.

Features

  • YouTube URLs or video IDs — YouTube video URLs or IDs, one per line, e.g. https://www.youtube.com/watch?v=dQw4w9WgXcQ. Watch, youtu.be, Shorts, Live and Embed links work. Can be combined with channel, playlist or YouTube search sourceUrls; leave empty only when you use sourceUrls.
  • Sort comments by — Top uses YouTube's ranked comments; Newest requests the most recent comments first.
  • Maximum results per video — Maximum comment + reply rows returned (and billed) per video after filters, e.g. 200. Set 0 to collect all comments of each video, still capped by Maximum total results.
  • Maximum total results — Hard cap across all videos to keep runtime and spend predictable.
  • Include replies — Include replies in the output. Replies use the same per-result price as top-level comments.
  • Maximum replies per comment — Cap on replies returned per comment thread, e.g. 5, so one huge thread cannot use up the budget. Further reply pages are not loaded. 0 = no cap.
  • YouTube interface language — Language code for YouTube-generated labels, for example en, it, es, de.
  • Minimum likes — Only emit comments with at least this many parsed likes. Set 0 to disable.
  • Comment text contains — Optional case-insensitive substring filter. Filtered comments are not charged.
  • Request timeout — Maximum seconds for each YouTube HTTP request.
  • Video retries — Retry blocked or temporary failures with a fresh proxy session.
  • Automatic proxy fallback — Try direct access first for speed, then switch retries to standard Apify Proxy if YouTube blocks or returns no comments.

Use cases

  • Audience research.
  • Creator/community monitoring.
  • Engagement analysis.
  • Comment datasets for nlp.

Example input

{
"sortBy": "top",
"maxResultsPerVideo": 500,
"maxTotalResults": 5000,
"includeReplies": true,
"maxRepliesPerComment": 0,
"language": "en"
}

Pricing & cost control

The primary event costs $0.000350 per YouTube comment or reply (about $0.35 per 1,000 successful primary events). Only successful primary events are intentionally billed by this Actor; summary/status rows add context without adding primary-event charges.

Use the bounded input limits and filters to keep both event charges and platform usage predictable.

FAQ

What is this Actor for?
It is designed for audience research, creator/community monitoring, engagement analysis.

Can I run it on a schedule?
Yes. You can schedule Actor runs on Apify and send the resulting dataset into automations, webhooks, storage, or downstream APIs.

How do I control cost and run size?
Use the input limits and filters shown in the Actor input form. The Actor applies bounded defaults and hard caps so large jobs remain predictable.

Pricing at a glance

Price per 1,000 YouTube comments or replies
This Actor$0.35
Median of 8 comparable Apify Store Actors (October 2026)$0.45

That is about 22% below the median per-result price for this task in Apify Store.

Subscriber discounts: on a paid Apify plan you pay even less per result — Bronze −10%, Silver −15%, Gold and higher −20% ($0.28 per 1,000 YouTube comments or replies on Gold).

Apify platform usage (compute, storage, data transfer) is included — you pay only the result price plus a small run start fee ($0.0001 per GB of run memory). No surprise compute bill, even on long runs.

Use the run's maximum charge setting to cap spending — the Actor stops cleanly when the limit is reached.

Use it from AI agents (MCP) and code

AI agents — Claude, ChatGPT, Cursor, VS Code, n8n AI agents and any MCP client can run this Actor through the official Apify MCP server: add https://mcp.apify.com?tools=zenomastro/youtube-comments-reliable to your client. Then just ask, for example:

"Get the top comments and replies from this YouTube video and summarize what viewers think."

The agent fills the input from the field descriptions and receives clean JSON it can reason over.

API — one HTTP call runs the Actor and returns the results directly:

curl -X POST "https://api.apify.com/v2/acts/zenomastro~youtube-comments-reliable/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"], "sortBy": "top", "maxResultsPerVideo": 1, "maxTotalResults": 1, "includeReplies": false, "retries": 1}'

The same works from the Apify Python/JavaScript clients, Make, n8n, Zapier, LangChain and LlamaIndex integrations, or on a schedule.

What this YouTube comments scraper does

Paste YouTube video or Shorts links, a channel, a playlist or search keywords, and get every public comment and reply: text, author, likes, reply count, creator, pinned, hearted and verified flags and an approximate date, together with the video's title, views, likes and comment count. A free insights row per video adds top keywords, hashtags, top commenters, the video moments people mention and the most-liked comments. No YouTube API key, quota or login is needed.

Who it is for:

  • Marketers and brand teams: find what viewers say about a product with keyword filters (for example price, battery, refund); each row lists the keywords it matched.
  • Creators and agencies: questions from viewers, top commenters, creator replies, hearted and pinned comments, and the timestamps viewers talk about.
  • Researchers and data scientists: clean, deduplicated comment datasets with stable IDs and reply threads for sentiment analysis and NLP, exportable as JSON, CSV or Excel.
  • Monitoring: scheduled runs that return only comments you have not seen before.

How to use it

  1. Add videos to YouTube URLs or video IDs, channel/playlist/search links to Channel, playlist or search URLs, or keywords to Search keywords.
  2. Choose Sort comments by (Top or Newest), Maximum results per video and Maximum total results.
  3. Optionally narrow the results under Filters (keywords, likes, dates, creator, authors).
  4. Click Start. The Output tab shows the comments table, the insights per video and the full JSON.

Input examples

The top 200 comments of one video, without replies:

{
"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
"sortBy": "top",
"maxResultsPerVideo": 200,
"includeReplies": false
}

Every comment and reply of a video (0 = all, still capped by the total):

{
"videoUrls": ["https://youtu.be/dQw4w9WgXcQ"],
"maxResultsPerVideo": 0,
"maxTotalResults": 20000,
"sortBy": "newest"
}

Product feedback from the top 10 search results, without spam:

{
"searchQueries": ["iphone 17 review"],
"maxDiscoveredVideos": 10,
"maxResultsPerVideo": 300,
"keywords": ["battery", "price", "camera"],
"excludeKeywords": ["giveaway", "telegram", "whatsapp"]
}

Comments on the 10 newest Shorts of a channel:

{
"sourceUrls": ["https://www.youtube.com/@mkbhd/shorts"],
"maxDiscoveredVideos": 10,
"maxResultsPerVideo": 100
}

A weekly schedule that returns only new comments on the 5 newest videos of two channels:

{
"sourceUrls": ["@mkbhd", "@veritasium"],
"maxVideosPerSource": 5,
"sortBy": "newest",
"publishedAfter": "7 days",
"monitorName": "tech-channels-weekly",
"onlyNew": true
}

Output

Each comment or reply is one row (shortened; values are illustrative):

{
"recordType": "comment",
"videoId": "dQw4w9WgXcQ",
"videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"commentId": "UgzBZ7uqZkz0xu-aWzh4AaABAg",
"parentCommentId": "",
"isReply": false,
"text": "The best part is at 1:23",
"author": "@someviewer",
"authorChannelId": "UCxxxxxxxxxxxxxxxxxxxxxx",
"authorIsVerified": false,
"likeCount": 1200,
"replyCount": 14,
"publishedTimeText": "2 days ago",
"publishedAtApprox": "2026-10-12T09:00:00Z",
"isPinned": false,
"isHearted": true,
"isCreator": false,
"videoTitle": "Rick Astley - Never Gonna Give You Up (Official Video)",
"videoViewCount": 1700000000,
"videoLikeCount": 18700000,
"videoCommentCount": 2412345,
"videoPublishedAt": "2009-10-25T06:57:33Z"
}

Replies have isReply: true and the thread's top-level comment in parentCommentId. With the keyword filter, matchedKeywords lists the keywords found; with a monitor, isNew says whether the comment is new.

After each video, a free comment_insights row summarises the delivered comments:

{
"recordType": "comment_insights",
"videoId": "dQw4w9WgXcQ",
"commentCount": 500,
"topLevelCount": 412,
"replyCount": 88,
"uniqueAuthors": 455,
"questionCount": 37,
"averageLikes": 61.4,
"topKeywords": [{ "keyword": "song", "commentCount": 96 }],
"topHashtags": [{ "hashtag": "#rickroll", "commentCount": 12 }],
"popularTimestamps": [{ "timestamp": "1:23", "seconds": 83, "commentCount": 9, "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ&t=83s" }],
"topCommenters": [{ "author": "@fan", "authorChannelId": "UC...", "commentCount": 3, "totalLikes": 40 }],
"mostLikedComments": [{ "commentId": "Ugz...", "author": "@someviewer", "likeCount": 1200, "replyCount": 14, "isReply": false, "text": "The best part is at 1:23" }],
"stopReason": "limit",
"truncated": false
}

stopReason and truncated tell you whether every comment of the video was collected. Videos that cannot be read get an uncharged error row with the reason and retryable (whether a later run may succeed), for example CommentsDisabled or VideoUnavailable (not retryable) and YouTubeBlocked (retryable).

Comment insights

The insights row is computed from the comments delivered for that video, at no cost:

  • uniqueAuthors, questionCount (comments with a question mark) and averageTextLength.
  • topKeywords: the most frequent meaningful words, counted once per comment, with common words in English, Spanish, Portuguese, Italian, French and German left out.
  • topHashtags and topCommenters (authors with two or more comments).
  • popularTimestamps: moments of the video that viewers mention, such as "1:23", with a link that opens the video there.
  • mostLikedComments: the three most-liked comments.
  • Reply, creator, heart and pin counts, average and maximum likes, and the oldest and newest comment dates.

Filters

  • Comment contains any of these words keeps comments that contain at least one keyword; Skip comments containing drops comments with any of the listed words (useful against spam). Matching is case-insensitive and also finds the word inside longer words.
  • Minimum likes, Creator comments only, Hearted only, Pinned only, Verified authors only and Comments by these authors.
  • Published within the last N days, Published after and Published before accept dates (2026-01-31), date-times or relative values such as 24 hours, 7 days or today. With Newest first the scan stops at older comments, which saves time.
  • Filtered-out comments are never charged. With selective filters the Actor scans more comments than it returns, up to a safety cap per video.

About dates

YouTube shows comment dates as relative text such as "3 days ago". The Actor keeps that text in publishedTimeText and converts it to publishedAtApprox, marked approximate (publishedAtIsApproximate), instead of pretending it is exact. Date filters use this approximate time.

  • Channel URLs are read newest first; a channel URL without a tab reads the Videos, Live and Shorts tabs, or only the tabs chosen in Channel tabs to include.
  • Maximum discovered videos caps the total; Maximum videos per source caps each channel, playlist or search.
  • Search keywords use the top video results, like youtube.com with the Videos filter. For YouTube's own search filters, apply them on youtube.com and paste the results URL.
  • Shortcuts are accepted in the URL list: @handle, a channel ID (UC...) or plain keywords.
  • Each source reports its own result; a source that fails gets its own error row and the other sources are still read.

Reliability

  • Direct access is tried first for speed; if YouTube blocks it or returns nothing, retries switch to Apify Proxy automatically, with fresh sessions and short backoff. Every request has a timeout and no comment page is requested twice.
  • One bad video never fails the run: it gets an uncharged error row and the run continues. If a video stops part-way, the comments already delivered are kept and an error row says so.
  • Comments are saved in small batches as they arrive, and the run stops cleanly at your maximum charge and before the run timeout, keeping everything delivered.
  • Duplicate videos and comments are removed.

What is charged

You pay only for comment and reply rows delivered to the dataset (see Pricing at a glance above and the Pricing tab). These are free: error rows, the insights and discovery summary rows, comments removed by filters, comments already seen in monitor mode with Emit only new comments, and duplicates.

Limits

  • Up to 500 listed videos and 50 channel, playlist or search sources per run, and up to 500 videos discovered from sources.
  • Up to 100,000 rows per run, and per video up to 10,000 (or every comment, up to the run total, with Maximum results per video set to 0).
  • Public comments only. Private, members-only and age-restricted videos cannot be read, because the Actor does not log in.
  • Video likes, comment count and channel subscribers are read as YouTube shows them on the page: they can be rounded (for example 2.4M) or missing. Comment dates are approximate.

Use scraped public data in accordance with applicable platform terms, copyright, privacy and data-protection rules.

Troubleshooting and FAQ

Why do I get fewer comments than YouTube's comment count? YouTube's count includes replies and comments it does not list publicly (held for review or removed). Your filters and limits also reduce the rows. The insights row's stopReason and truncated show why reading stopped.

What does "Comments are turned off" mean? The creator disabled comments for that video, so there is nothing to collect. The error row is free and the run continues.

How do I get only new comments every day? Set Comment monitor name, turn on Emit only new comments, sort by Newest first and schedule the run or task.

Can I scrape a whole channel? Yes: put the channel URL in Channel, playlist or search URLs and raise Maximum discovered videos (up to 500 per run).

Does it work with Shorts and live streams? Yes, Shorts, Live and past live-stream URLs work when they have public comments.

I used another YouTube comments scraper. Will my input work? startUrls with {"url": ...} objects is accepted, and Sort comments by also understands values such as latest, new, TOP_COMMENTS and NEWEST_FIRST.

Support

For a reproducible issue, include the public video URL, sort mode, proxy setting and the Apify run ID. Never post API tokens or private proxy credentials.

Extended capabilities

  • Collect top-level comments and replies with creator/pinned signals, likes, timestamps, author metadata, and monitoring state.
  • Add source-video metadata so comment datasets retain title/channel/context for every video.
  • Emit per-video summary analytics while keeping primary billing on delivered comments.