YouTube Comments Scraper — Author, Likes, Replies & Text avatar

YouTube Comments Scraper — Author, Likes, Replies & Text

Pricing

from $0.40 / 1,000 results

Go to Apify Store
YouTube Comments Scraper — Author, Likes, Replies & Text

YouTube Comments Scraper — Author, Likes, Replies & Text

Scrape all comments from any YouTube video, channel or search in bulk. Get comment text, author, verified/creator flags, like count, reply count and timestamp — plus video title and channel. Fast, keyless YouTube comment export for research and sentiment analysis.

Pricing

from $0.40 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

24

Total users

5

Monthly active users

a day ago

Last modified

Categories

Features

Limited permissions

Share

YouTube Comments Scraper — Bulk Video, Channel & Keyword Comment Extractor

Extract thousands of YouTube comments in bulk from any video URL, channel handle, or search keyword. Pull complete top-level comment threads with author display name, channel ID, verified/creator badges, full comment text, numeric like count, reply count, relative timestamp, and parent video metadata — structured for sentiment analysis, audience intelligence, content strategy, competitor benchmarking, and social listening. No YouTube Data API key, no Google Cloud quota limits, and no account login required.

Apify Actor


⚡ At a glance

CapabilityDetails
Target PlatformYouTube (youtube.com, youtu.be, YouTube Shorts, @channels)
Input ModesTopic dropdowns · Custom search keywords · Video URLs / 11-char IDs · Channel URLs / @handles
Extracted EntitiesComment text · Author name & channel ID · Verified & creator flags · Likes · Replies · Video context
Sort ModesTop comments (highest engagement first) · Newest first (chronological real-time stream)
Pagination & ScaleAutomatic deep continuation pagination — 1,000 to 100,000+ comments per video or across multi-video searches
DeduplicationBuilt-in per-video and global deduplication by unique commentId (0% duplicate records)
AuthenticationNone required — 100% keyless public data extraction
Export FormatsJSON, JSONL, CSV, Excel (XLSX), XML, HTML Table, REST API, Webhooks

🔎 Why scrape YouTube comments?

YouTube comment sections are the largest unfiltered focus group on the internet. Every product review, software tutorial, movie trailer, keynote broadcast, and competitor launch generates thousands of candid viewer reactions — questions, feature requests, bug reports, price objections, praise, and comparisons written in the audience's own language.

However, getting that YouTube comment data into a spreadsheet or analytics pipeline is notoriously difficult:

  • Infinite scroll traps data in the UI: YouTube loads only ~20 comments at a time as you scroll manually, with no native export button.
  • Official API quota walls: The YouTube Data API v3 requires a Google Cloud project, credential management, and strict daily unit quotas that quickly run out when collecting thousands of comments across channels.
  • Messy engagement numbers: Abbreviated counters (1.2K, 220K) and unlinked comment rows make downstream quantitative analysis painful without normalization.

This YouTube comments scraper solves all three problems. Point it at specific videos, entire @channels, or broad search keywords, and it automatically paginates through YouTube's comment feed, normalizes abbreviated like counts into clean integers alongside display text, attaches the parent video's title, channel, and view count to every single row, and exports an analysis-ready dataset in seconds.


✨ Key features of this YouTube data extractor

  • 🎯 Four flexible targeting modes in one actor:
    1. Popular Topics Dropdown: Instant one-click presets (iphone review, ai explained, world news, gaming, stock market, tech unboxing, etc.).
    2. Custom Search Keywords: Discover trending videos for any brand, product, or niche query and extract their comments automatically.
    3. Direct Video URLs & IDs: Paste standard watch links (youtube.com/watch?v=...), short links (youtu.be/...), /shorts/ links, or raw 11-character video IDs.
    4. Channel URLs & Handles: Pass @mkbhd, youtube.com/@channel, or UC... channel IDs to scrape comments across a creator's latest uploads.
  • 🔄 Unlocked 1,000+ deep pagination: Follows continuation tokens page after page to extract hundreds or thousands of comments per video (maxCommentsPerVideo up to 100,000) and scales across up to 10,000 videos per search source.
  • 📊 Normalized numeric & display metrics: Converts shorthand counts like 220K into exact numeric strings ("220000") while preserving likeCountText ("220K"), and normalizes blank zero-like states to "0".
  • 👤 Author & influencer signals: Captures author, authorChannelId (UC...), authorIsVerified ("true"/"false"), and authorIsCreator ("true"/"false") to spotlight verified voices and creator replies.
  • 🎬 Self-contained video context on every row: When includeVideoDetails is enabled (default), every comment includes videoId, videoUrl, videoTitle, channel, and videoViewCount so exported CSVs and BI tables never lose context.
  • ⚡ High-speed parallel execution: Configurable maxConcurrency (1–15 parallel video workers) with automatic IP rotation via Apify Proxy.

🎯 High-value use cases & B2B intelligence

1. Brand Sentiment & Product Launch Monitoring

Track consumer reaction under hands-on reviews, unboxings, and comparison videos for your brand and your competitors. Measure positive vs. negative sentiment shifts within hours of a product release.

2. Voice-of-Customer (VoC) & Feature Discovery

Mine thousands of viewer comments under category-leading tutorials and reviews to uncover recurring pain points, unmet customer needs, buyer objections, and exact phrasing for ad copy.

3. Content Strategy & Video Topic Ideation

Filter comments containing question marks (?, "how do you", "can you make", "part 2") sorted by highest likeCount to build a data-backed content calendar that answers what viewers are actively asking for.

4. Influencer Vetting & Sponsorship Due Diligence

Before sponsoring a YouTube creator, scrape the last 20 videos on their channel (channelUrls) to audit real audience engagement, detect bot/spam comment patterns, and verify buyer intent in their community.

5. AI, LLM & NLP Dataset Construction

Build large-scale, multi-topic conversational corpora labeled with engagement weights (likeCount, replyCount) and timestamp metadata for training sentiment classifiers, topic models, and summarization pipelines.

6. Community Management & Crisis Auditing

Export complete comment logs from your organization's official YouTube channel or campaign videos for compliance archiving, moderation audits, and rapid FAQ response workflows.


📥 Input configuration

All input fields are optional. Running the actor with default/empty settings automatically collects a fast, diverse sample across trending topics.

ParameterTypeDefault / PrefillDescription
topicsarray<string>Prefill: ["iphone review"]Select one or more curated topic presets from the dropdown to discover top videos and scrape their comments automatically.
searchKeywordsarray<string>Prefill: ["iphone 16 review"]Custom search queries in your own words (e.g., "tesla model y review", "notion tutorial").
videoUrlsarray<string>[]Specific YouTube watch URLs, youtu.be links, /shorts/ URLs, or 11-character video IDs.
channelUrlsarray<string>[]Channel URLs, @handles (e.g., @veritasium), or UC... channel IDs to scrape comments from recent uploads.
sortBystring"top"Sort order for comments: "top" (Most popular / highest engagement) or "newest" (Newest first).
includeVideoDetailsbooleantrueAttach videoTitle, channel, and videoViewCount to every comment record.
maxCommentsPerVideointegerDefault 100 (Prefill 50)Maximum top-level comments to extract per video (1 to 100,000). Set to 1000+ for deep per-video pulls.
maxVideosPerSourceintegerDefault 20 (Prefill 2)Maximum videos to discover per topic, search keyword, or channel (1 to 10,000).
maxCommentsintegerDefault 0 (Prefill 100)Optional global cap across the entire run. 0 = unlimited (governed by maxCommentsPerVideo × videos).
maxConcurrencyinteger5Number of videos processed in parallel (1 to 15).
proxyConfigurationobject{ "useApifyProxy": true }Apify Proxy configuration. Enabled by default to rotate IPs and prevent rate-limiting on large runs.

🛠️ Input recipes & examples

Recipe 1: Deep 1,000+ comment extraction from specific videos

Extract up to 2,500 top comments per video from specific YouTube URLs or IDs:

{
"videoUrls": [
"https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"https://youtu.be/arj7oStGLkU"
],
"sortBy": "top",
"includeVideoDetails": true,
"maxCommentsPerVideo": 2500,
"maxComments": 5000
}

Recipe 2: Channel-wide audience audit (@handle)

Pull the 200 newest comments across each of the latest 15 videos from a target channel (3,000 comments total):

{
"channelUrls": ["@mkbhd"],
"sortBy": "newest",
"includeVideoDetails": true,
"maxVideosPerSource": 15,
"maxCommentsPerVideo": 200,
"maxComments": 3000,
"maxConcurrency": 5
}

Recipe 3: Multi-keyword market & competitor research

Discover 25 videos per search query and collect 100 comments from each video to build a 5,000-comment market intelligence dataset:

{
"searchKeywords": [
"iphone 16 pro review",
"samsung galaxy s24 ultra review"
],
"sortBy": "top",
"maxVideosPerSource": 25,
"maxCommentsPerVideo": 100,
"maxComments": 5000,
"maxConcurrency": 8
}

📤 Output schema & field reference

Every dataset item represents one unique YouTube comment enriched with its parent video metadata. All fields are formatted as clean strings for zero-friction compatibility with CSV, Excel, Google Sheets, and SQL pipelines.

💬 Comment Content & Engagement Fields

FieldTypeCoverageDescription
commentIdstring🟢 High (100%)Unique YouTube comment identifier (used as primary deduplication key).
textstring🟢 High (~100%)Full text content of the comment with whitespace normalized.
likeCountstring🟢 High (100%)Normalized numeric like count as an integer string (e.g., "220000", "0").
likeCountTextstring🟢 High (100%)Human-readable like count as displayed on YouTube (e.g., "220K", "1.4K", "0").
replyCountstring🟢 High (100%)Total number of replies to this top-level comment (e.g., "612", "0").
publishedTimestring🟢 High (100%)Relative publication timestamp (e.g., "2 days ago", "6 years ago", "3 hours ago (edited)").

👤 Comment Author & Badge Fields

FieldTypeCoverageDescription
authorstring🟢 High (100%)Author's YouTube handle or display name (stripped of leading @).
authorChannelIdstring🟢 High (100%)Unique YouTube channel ID (UC...) of the commenter.
authorIsVerifiedstring🟢 High (100%)"true" if the commenter holds a verified YouTube badge, otherwise "false".
authorIsCreatorstring🟢 High (100%)"true" if the comment was posted by the video uploader/creator, otherwise "false".

🎬 Parent Video Context & Metadata Fields

FieldTypeCoverageDescription
videoIdstring🟢 High (100%)11-character YouTube video ID.
videoUrlstring🟢 High (100%)Canonical watch URL (https://www.youtube.com/watch?v=...).
videoTitlestring🟢 High (~99%)Full title of the YouTube video (populated when includeVideoDetails: true).
channelstring🟢 High (~99%)Name of the YouTube channel that published the video.
videoViewCountstring🟢 High (~98%)Numeric view count of the video at scrape time (e.g., "1832861734").
scrapedAtstring🟢 High (100%)ISO-8601 UTC timestamp indicating when the comment was extracted.
errorstring🟡 ConditionalPresent only if a run targets a single video where comments are disabled or unavailable.

📋 Sample JSON output

{
"videoId": "dQw4w9WgXcQ",
"videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"videoTitle": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
"channel": "Rick Astley",
"videoViewCount": "1832861734",
"commentId": "Ugw10bSluCDSZMIxUSB4AaABAg",
"author": "LK-ht7qz",
"authorChannelId": "UCHpvHTRSILoOFKWX5oFCYDA",
"authorIsVerified": "false",
"authorIsCreator": "false",
"text": "Let’s put the meme aside, this is actually a banging song.",
"likeCount": "220000",
"likeCountText": "220K",
"replyCount": "612",
"publishedTime": "6 years ago",
"scrapedAt": "2026-11-10T02:30:00.000Z"
}

🔁 Pagination, scale & deduplication

YouTube serves comments in batches of ~20 items per continuation request. This actor automatically extracts and follows every continuation cursor across both video discovery (search results and channel video tabs) and comment threads:

  1. Deep Per-Video Comment Pagination: Set maxCommentsPerVideo: 1000 (or up to 100000) to walk hundreds of continuation pages on high-traffic videos without hitting artificial page caps.
  2. Multi-Source Scaling: Combine multiple topics, searchKeywords, channelUrls, and videoUrls in a single run. Set maxComments: 0 (or 5000+) to collect thousands of comments across dozens of videos in parallel.
  3. Strict Two-Level Deduplication: Comments are deduplicated per video and across the entire run by commentId, guaranteeing 0 duplicate records even when the same video is discovered by overlapping search keywords.

💻 API & integration examples

cURL — Start a run and fetch CSV output

# 1. Start the actor run
curl -X POST "https://api.apify.com/v2/acts/haketa~youtube-comments-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"videoUrls": ["dQw4w9WgXcQ"],
"maxCommentsPerVideo": 1000,
"sortBy": "top"
}'
# 2. Download the dataset as CSV
curl "https://api.apify.com/v2/acts/haketa~youtube-comments-scraper/runs/last/dataset/items?token=YOUR_APIFY_TOKEN&format=csv" > youtube_comments.csv

Python (apify-client)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("haketa/youtube-comments-scraper").call(run_input={
"searchKeywords": ["iphone 16 review"],
"maxVideosPerSource": 10,
"maxCommentsPerVideo": 150,
"maxComments": 1500,
"sortBy": "top",
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(f"Extracted {len(items)} unique YouTube comments")

Node.js (apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('haketa/youtube-comments-scraper').call({
channelUrls: ['@mkbhd'],
maxVideosPerSource: 5,
maxCommentsPerVideo: 250,
sortBy: 'newest',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Saved ${items.length} comments`);

🗂️ Built-in topic presets reference

When you want an instant dataset without hunting for URLs, select one or more presets in topics:

Topic Preset ValueCategory TitleTypical Videos & Comment Signals
iphone reviewPhone reviewsSmartphone comparisons, camera tests, battery life & buyer feedback
world newsWorld newsBreaking global events, geopolitical debates & public opinion
nba highlightsNBA highlightsGame recaps, player performance discussions & sports fan sentiment
premier leaguePremier LeagueMatch highlights, tactical analysis & football club reactions
new musicNew musicOfficial music videos, lyric discussions & artist fanbase engagement
gamingGamingGameplay walkthroughs, patch notes feedback & game review threads
ai explainedAI explainedLLM tutorials, AI news, developer tool comparisons & tech ethics
movie trailerMovie trailersTeaser reactions, box-office predictions & casting discussions
cooking recipeCooking recipesIngredient substitutions, kitchen tips & recipe success stories
travel vlogTravel vlogsDestination recommendations, itinerary questions & budget breakdowns
workout routineWorkout routinesFitness form checks, routine results & coaching questions
tech unboxingTech unboxingHardware impressions, pricing objections & feature wishlists
makeup tutorialMakeup tutorialsShade matches, product longevity & skincare routine questions
stock marketStock marketEarnings reactions, macro commentary & retail investor sentiment
car reviewCar reviewsOwner reliability feedback, EV range discussions & trim comparisons
podcast highlightsPodcast highlightsLong-form interview takeaways, guest debates & timestamp highlights

🔌 Workflow automation & BI integrations

Connect your extracted YouTube comment data directly into your analytics and automation stack:

  1. Google Sheets & Excel Dashboards: Schedule daily or weekly runs in the Apify Console and sync the dataset to Google Sheets to track comment velocity, top questions, and average likes per comment across product launch videos.
  2. Make, Zapier & n8n Pipelines: Trigger a webhook as soon as a run finishes (ACTOR.RUN.SUCCEEDED), filter for comments with Number(likeCount) >= 50 or authorIsVerified == "true", and post summaries to Slack, Microsoft Teams, Discord, or Notion.
  3. LLM & Sentiment Classification Pipelines: Stream JSONL records into OpenAI, Anthropic Claude, or Gemini batch pipelines to tag each comment with sentiment (Positive, Neutral, Negative), intent (Bug Report, Feature Request, Competitor Mention, Purchase Intent), and topic clusters.
  4. Data Warehouses (BigQuery, Snowflake, PostgreSQL): Partition by scrapedAt and join on videoId and commentId to track how individual comment like counts and reply counts grow over time.

💡 Pro tips for best results

  • Choose the right sort mode: Use sortBy: "top" to capture high-signal, community-validated opinions with the most likes; use sortBy: "newest" for real-time monitoring after a launch or live event.
  • Scale horizontally or vertically: For broad market sentiment across a niche, use maxVideosPerSource: 25 and maxCommentsPerVideo: 100. For deep analysis of a single viral video, pass its URL in videoUrls and set maxCommentsPerVideo: 5000 with maxComments: 0.
  • Filter influential commenters downstream: Sort or filter your exported CSV/JSON on authorIsVerified == "true", authorIsCreator == "true", or Number(likeCount) >= 100 to isolate key opinion leaders.
  • Keep Apify Proxy enabled: Default datacenter proxy rotation keeps parallel requests fast, cost-effective, and resilient against rate limits during multi-thousand-comment runs.

⚠️ Known limitations

  • Top-level comments: The actor extracts all top-level comments along with each comment's replyCount metric; nested sub-thread replies under a top-level comment are not expanded individually.
  • Disabled comment sections: Videos that have comments turned off by the uploader (or restricted as "Made for Kids") cannot yield comments. When scraping multiple videos, the actor cleanly skips disabled videos so your dataset stays 100% populated with real comments.
  • Relative timestamps: YouTube provides relative publication strings ("3 days ago", "1 year ago") rather than exact ISO timestamps on public comment feeds; combine publishedTime with scrapedAt for temporal bucketing.

❓ Frequently Asked Questions

Do I need a YouTube Data API key or Google login?

No. This actor is 100% keyless and requires no Google Cloud project, OAuth token, or cookies.

How many comments can I scrape in a single run?

You can extract from 50 comments on a quick test run up to 100,000+ comments across single or multiple videos. Set maxComments: 0 and increase maxCommentsPerVideo and maxVideosPerSource to scale freely.

Does it support YouTube Shorts and @handle URLs?

Yes. You can pass /shorts/ links, youtu.be/ short links, standard watch URLs, 11-character IDs, and @handle channel links.

How fast is the scraper?

Because it uses lightweight HTTP requests with parallel video concurrency (maxConcurrency), a typical run of 100–600 comments completes in 10 to 25 seconds, and 1,000+ comments typically finish in under a minute.

Can I combine topics, searchKeywords, videoUrls, and channelUrls in one run?

Yes! The actor merges all video sources into a single deduplicated queue, so you can pass direct video URLs alongside search terms and channel handles in the same run.

How does deduplication work when two search keywords find the same video?

Video IDs are deduplicated during the discovery phase (seen video set), and individual comments are deduplicated both per video and globally by commentId. Even if multiple search queries surface the same trending video, it is scraped once and produces zero duplicate comments.

What happens if I run the actor with completely empty input ({})?

An empty run automatically seeds a curated sample of popular topics (iphone review, world news, nba highlights, new music, gaming, ai explained, movie trailer, cooking recipe) and returns ~100 fresh comments so you never get an empty dataset.

What export formats are available?

Export directly from the Apify Console or REST API in JSON, JSONL, CSV, Excel (XLSX), HTML table, or XML, or connect directly to Google Sheets, Make, Zapier, n8n, Slack, and webhooks.



📋 Changelog

VersionDateHighlights
v1.22026-11Unlocked 1,000+ deep pagination & global cap control: Added maxComments global cap (0 = unlimited), raised continuation pagination guards to support 1,000–100,000 comments per video and up to 10,000 videos per source, added strict cross-video commentId deduplication, and optimized default prefill for sub-20s execution.
v1.12026-11Normalized zero-like whitespace strings to "0", added fallback view-count extraction, and improved proxy IP rotation on watch pages.
v1.02026-05Initial release with topic presets, keyword video discovery, channel handle support, and top/newest comment sorting.
⌂ 换网址