๐ฌ YouTube Comments Scraper
Pricing
from $2.00 / 1,000 results
๐ฌ YouTube Comments Scraper
YouTube Comments Scraper: pull video comments and replies in real time โ author, text, likes, pinned, hearted, verified & publish date. Ideal for sentiment analysis, brand monitoring & NLP. No YouTube API key or quota. Stream results to your Apify dataset.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
Data Minds
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
๐ฌ YouTube Comments Scraper โ Extract Video Comments, Replies & Engagement Data
YouTube Comments Scraper is a production-grade Apify Actor for YouTube comment scraping, audience sentiment analysis and engagement research. Give it one or more YouTube video links and it returns every comment (and, optionally, every reply) โ author, full text, like count, publish date, pinned/verified/creator-hearted status and more โ written to your Apify Dataset in real time as it's collected.
๐ก Need a custom version, private integration, or a tailored data pipeline? Email hello.dataminds@gmail.com.
Built for social media analysts, brand & reputation monitoring, content creators, market researchers, NLP/ML teams and community managers โ anyone who needs structured YouTube comment data without scrolling and copy-pasting by hand.
๐ Table of contents
- What is YouTube Comments Scraper?
- Main features
- Who is this Actor for?
- What the scraper does
- Inputs it accepts
- Filtering configuration
- Output format (Dataset)
- Example output (JSON)
- Quick start
- Input parameters reference
- Reliability & anti-blocking
- Integrations & automation
- Pricing & how to control cost
- Frequently asked questions (FAQ)
- Troubleshooting
- Help, support & custom builds
- Is scraping YouTube comments legal?
- SEO keywords targeted
๐ฌ What is YouTube Comments Scraper?
YouTube Comments Scraper is an Apify Actor that extracts the full comment section of any public YouTube video โ top-level comments and, optionally, their replies โ into clean, structured data. No YouTube Data API key, no daily quota, and no manual scrolling required. Just paste a video URL (or a hundred) and press Start.
Every comment record includes the text, author details, like count, reply count, publish-time estimate, and flags for pinned comments, creator hearts, verified authors and edited comments โ everything you need for sentiment analysis, audience research, brand monitoring or feeding into an LLM/NLP pipeline.
โจ Main features
- ๐ Bulk video input โ paste a list, upload a file, or import a Google Sheet of YouTube URLs.
- ๐ฌ Comments & replies โ collect top-level comments and drill into reply threads, independently capped.
- ๐ Two sort modes โ Top comments (relevance) or Newest first (chronological), plus a date cutoff.
- ๐ฏ Built-in filters โ minimum likes and a keyword/phrase match, applied before anything is saved.
- ๐ Rich engagement signals โ pinned status, creator โค๏ธ, verified authors, edited flag, like/reply counts.
- ๐ก Live streaming output โ every comment lands in your dataset the instant it's collected, not at the end.
- ๐ Six ready-made views โ Overview, Comments, Authors, Engagement, Video source and Errors, no post-processing needed.
- ๐ Automatic proxy fallback โ starts direct, escalates to datacenter then residential only if needed, and stays there.
- โ ๏ธ Transparent error reporting โ a video that can't be processed shows up in the dataset with a clear reason, it's never silently dropped.
- โก Configurable concurrency โ tune how many videos and reply threads run in parallel.
๐ฅ Who is this Actor for?
- Social media & brand teams monitoring what people say under a video, product launch or ad.
- Content creators & channel managers analyzing audience feedback at scale, beyond what YouTube Studio shows.
- Market & academic researchers studying public sentiment, discourse or misinformation trends.
- Data scientists / ML engineers building training or evaluation datasets for sentiment/NLP models.
- Agencies running competitor or campaign engagement analysis across many videos at once.
โ๏ธ What the scraper does
- Takes your list of YouTube video URLs (or bare video IDs).
- Opens each video and reads its comment section.
- Collects comments in your chosen order (top or newest), applying your filters as it goes.
- Optionally expands the reply thread under every comment, up to your configured cap.
- Writes every kept comment/reply to the dataset immediately โ you can watch results arrive live in the Output tab while the run is still going.
- If a video can't be processed (private, deleted, region-blocked, comments disabled), it's logged as a clearly-labeled error row instead of being silently skipped.
๐ฅ Inputs it accepts
| Input | Accepts |
|---|---|
| YouTube Video URLs | Full watch?v= links, youtu.be/ short links, /shorts/ links, or bare 11-character video IDs โ any mix, in bulk. |
๐ฏ Filtering configuration
| Filter | What it does |
|---|---|
| Max comments per video | Caps top-level comments collected per video (0 = unlimited). Replies are additional. |
| Sort order | Top comments (relevance) or Newest first (chronological). |
| Only comments after this date | Absolute (YYYY-MM-DD) or relative (7 days, 2 weeks) cutoff โ forces Newest-first sorting. |
| Include replies | Toggle reply-thread collection on/off. |
| Max replies per comment | Caps replies fetched per thread (0 = every reply). |
| Minimum likes | Drops comments/replies below this like count. |
| Keyword filter | Keeps only comments whose text contains your word/phrase. |
๐ค Output format (Dataset)
Every comment and reply is one dataset item. The Output tab exposes six views over the same data โ flip between them without writing any code:
| View | What it shows |
|---|---|
| โจ Overview | The essentials โ author, comment, likes, replies, pinned, video title. |
| ๐ฌ Comments | Full text and thread metadata (IDs, parent ID, dates, edited flag). |
| ๐ค Authors | Who wrote it โ name, channel ID/URL, avatar, owner/verified flags. |
| ๐ Engagement | Likes (raw + as shown), reply count, creator โค๏ธ, pinned. |
| ๐ฌ Video source | Which video each row belongs to โ ID, URL, title, total comment count. |
| โ ๏ธ Errors | Videos that couldn't be processed, with a plain-English reason. |
๐งพ Example output (JSON)
{"cid": "Ugzge340dBgB75hWBm54AaABAg","replyToCid": null,"type": "comment","publishedTimeText": "1 year ago","publishedTimeEstimate": "2025-09-02","publishedTimePrecision": "year","isEdited": false,"comment": "can confirm: he never gave us up","author": "@YouTube","authorChannelId": "UCBR8-60-B28hp2BmDPdntcQ","authorChannelUrl": "https://www.youtube.com/@YouTube","authorAvatarUrl": "https://yt3.ggpht.com/....=s88-c-k-c0x00ffffff-no-rj","authorIsChannelOwner": false,"authorIsVerified": true,"isPinned": true,"replyCount": 963,"voteCount": 310000,"voteCountText": "310K","hasCreatorHeart": true,"videoId": "dQw4w9WgXcQ","pageUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","commentsCount": 2456584,"title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)","isError": false}
An error row (a video that couldn't be processed) looks like this instead:
{"isError": true,"error": "COMMENTS_UNAVAILABLE","note": "Comments are disabled or unavailable for this video.","videoId": "xxxxxxxxxxx","pageUrl": "https://www.youtube.com/watch?v=xxxxxxxxxxx"}
๐ Quick start
Run in Apify Console
- Log in at console.apify.com โ Actors.
- Find and open YouTube Comments Scraper.
- Paste your YouTube video URL(s) into YouTube Video URLs.
- (Optional) Adjust the filters, sort order, or proxy under the collapsible sections.
- Click Start.
- Watch results stream in live under the Log and Output tabs.
- Export from Output as JSON, CSV, Excel, or query it via API.
Run via API
curl -X POST "https://api.apify.com/v2/acts/cerulean_zucchini~youtube-comments-scraper/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"urls":[{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"}],"maxComments":100}'
Python client
from apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("cerulean_zucchini/youtube-comments-scraper").call(run_input={"urls": [{"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"}],"maxComments": 100,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
โ๏ธ Input parameters reference
๐ฌ What to collect
| Field | Type | Default | Description |
|---|---|---|---|
urls | array | โ | YouTube video URLs (required). |
maxComments | integer | 100 | Max top-level comments per video. 0 = unlimited. |
sortCommentsBy | string | TOP_COMMENTS | TOP_COMMENTS or NEWEST_FIRST. |
oldestCommentDate | string | โ | YYYY-MM-DD or relative (7 days). |
includeReplies | boolean | true | Fetch reply threads. |
maxRepliesPerComment | integer | 1 | Cap per thread. 0 = all. |
๐ฏ Filters
| Field | Type | Default | Description |
|---|---|---|---|
minLikes | integer | 0 | Minimum like count to keep. |
keyword | string | โ | Case-insensitive text match. |
๐ Language & region
| Field | Type | Default | Description |
|---|---|---|---|
hl | select | ๐ Auto-detect | Interface language, picked from a dropdown (en, es, pt-PT, ...). |
gl | select | ๐ Auto-detect | Country/region, picked from a dropdown (US, GB, IN, ...). |
๐ Network
| Field | Type | Default | Description |
|---|---|---|---|
proxyConfiguration | object | direct โ auto-escalates | Apify proxy configuration. |
โก Speed & limits
| Field | Type | Default | Description |
|---|---|---|---|
videoConcurrency | integer | 3 | Videos processed in parallel. |
replyConcurrency | integer | 5 | Reply threads expanded in parallel, per video. |
maxRetries | integer | 3 | Retries per request on the current network route. |
maxScanned | integer | 20000 | Safety cap when filters are narrow. |
๐ก๏ธ Reliability & anti-blocking
- Every request starts on a direct connection โ fastest, and the friendliest option for YouTube.
- If YouTube pushes back, the run automatically escalates to a datacenter proxy, then a residential proxy โ and once escalated, it stays on that route for the rest of the run instead of flip-flopping.
- Failed requests are retried with backoff before any proxy change is made.
- One video failing (private, deleted, region-blocked, comments disabled) never stops the run โ every other video keeps going, and the failure is written to the Errors view with a plain-English reason.
- Results are pushed to the dataset as they're collected, so a run that's stopped early still keeps everything found so far.
๐ Integrations & automation
Apify Actors connect natively to the tools you already use:
- Zapier, Make, n8n โ trigger a run or react to new comments without code.
- Webhooks โ fire a request to your own endpoint on
ACTOR.RUN.SUCCEEDED/FAILED. - Schedules โ run this Actor on a cron schedule to track comment sentiment over time.
- REST API & client SDKs โ Python and JavaScript clients, or plain REST, for pipelines.
- Google Sheets / Airtable / Slack โ send results straight into a spreadsheet or channel.
- MCP โ call this Actor as a tool from Claude, Cursor and other MCP-compatible AI agents.
๐ฐ Pricing & how to control cost
This Actor runs on Apify's standard Pay-per-usage compute pricing โ you pay for the platform resources (compute, proxy, storage) a run consumes, with no separate per-result markup. To manage cost:
- Set Max comments per video and Max replies per comment to only what you need.
- Leave Proxy configuration on its default (direct-first) โ a datacenter/residential proxy is only used automatically if YouTube actually requires it.
- Use Minimum likes or a Keyword filter to narrow results instead of scraping everything and filtering afterward.
- Check the Resource usage tab in Console after a run to see exactly what was consumed.
โ Frequently asked questions (FAQ)
Does this need a YouTube API key or Google login? No. It reads the same public comment data the youtube.com website itself displays.
Can I scrape comments from a private or age-restricted video? No โ only publicly viewable comments on publicly viewable videos can be collected.
Why don't all comments have an exact date?
YouTube itself only ever shows a relative date ("3 weeks ago"). publishedTimeEstimate is a best-effort estimate back-calculated from that text at scrape time โ publishedTimePrecision tells you how coarse the rounding was (day/week/month/year).
Do I need to configure a proxy myself? No โ leave Proxy configuration on its default and the Actor manages the network route automatically.
Can I get replies without the parent comments?
Replies are always collected alongside their parent comment thread; use the type field (comment vs reply) to separate them after the fact if needed.
What happens if a video has comments disabled or is unavailable? It's recorded as a row in the Errors view with a reason โ the run continues with the rest of your list.
๐ ๏ธ Troubleshooting
| Symptom | Likely cause / fix |
|---|---|
| A video shows up only in Errors | It's private, deleted, region-blocked, or has comments disabled โ check the note field. |
| Fewer comments than expected on a huge video | The "Top comments" ranked feed has a known depth limit on very large videos โ switch Sort order to Newest first to keep going past it. |
publishedTimeEstimate is empty | Only happens when Language code (hl) is forced to a non-English value โ leave it empty or set it to en. |
| Run seems slow | Lower Videos in parallel if you're on a small proxy/memory plan, or raise it if you have headroom. |
| No results at all | Double-check the URLs are valid public YouTube videos, and that your filters (likes/keyword) aren't too strict. |
๐ Help, support & custom builds
Found a bug, have a feature request, or need a custom variant (extra fields, a different platform, scheduled monitoring)? Email hello.dataminds@gmail.com or open an issue from the Actor's Issues tab in Apify Console.
โ๏ธ Is scraping YouTube comments legal?
This Actor only collects publicly available comment data that any visitor to youtube.com can already see โ no login, no private data, no bypassing of access controls. You are responsible for how you use the collected data: respect YouTube's Terms of Service, applicable data-protection laws (GDPR, CCPA, etc.), and avoid using personal data (like author names) for spam or harassment. Always review the target platform's terms before large-scale or commercial use.
๐ SEO keywords targeted
YouTube comments scraper, extract YouTube comments, scrape YouTube comments, YouTube comment data extractor, download YouTube comments, YouTube comments API alternative, YouTube reply scraper, YouTube engagement data, YouTube sentiment analysis, YouTube audience research, YouTube comment export, YouTube comments to JSON, YouTube comments to CSV, YouTube comment scraper no API key, YouTube comment scraper Python, bulk YouTube comment scraper, YouTube video comments dataset, brand monitoring YouTube, NLP training data YouTube comments, YouTube comment sentiment tool.