YouTube Comments Scraper — Replies, Likes & Authors
Pricing
from $0.69 / 1,000 comment scrapeds
YouTube Comments Scraper — Replies, Likes & Authors
Scrape YouTube video comments without login: text, author, likes, reply count, pinned/hearted flags, and optional reply threads. Sort by Top or Newest. Export JSON via API, Python, Node.js, or MCP.
Pricing
from $0.69 / 1,000 comment scrapeds
Rating
0.0
(0)
Developer
Andrej Kiva
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Unofficial tool for publicly accessible YouTube comment data. YouTube and related trademarks belong to their respective owners. Not affiliated with, sponsored by, or endorsed by YouTube or Google. Provided for informational use only; users must comply with applicable terms and laws.
| Social listening | Product launches |
|---|---|
| YouTube Comments Scraper ◄── you are here | Product Hunt Scraper |
| Bluesky Scraper | Launches, reviews, comments, leaderboards |
YouTube Comments Scraper for Apify — scrape YouTube comments from public videos and Shorts into structured JSON: comment text, author handle and channel, like count, reply count, pinned / hearted flags, and optional reply threads. No YouTube login, no Data API quota. A practical YouTube comments API alternative for brand listening, sentiment, and moderation pipelines — run from Python, Node.js, cURL, or MCP / AI assistants and export the dataset as JSON / CSV / Excel.
When to use
- Brand or product listening on a launch trailer, review video, or ad
- Sentiment / NLP datasets from high-engagement comment sections
- Export pinned creator statements and top fan threads with engagement metrics
- Batch several video URLs in one run until a shared
maxCommentscap - Feed comments into CRM, Slack alerts, or agent workflows via Apify MCP
When not to use
- Private, age-gated, or members-only videos (public Innertube only)
- Videos with comments disabled — the Actor fails with a clear status message
- Full channel crawls, search, transcripts, or video download — this Actor is comments-only
Key features
- Comments-first slice — purpose-built YouTube comment scraper, not a bloated “everything” YouTube tool
- Innertube continuations — same
/youtubei/v1/nextfeed the website uses when you scroll - No login / no API key — Chrome-impersonated TLS via
curl_cffi - Top or Newest — switches sort when YouTube exposes the comments sort menu
- Optional replies — each reply is a flat dataset row with
parentCommentId - Engagement fields — likes, reply counts,
isPinned,isHearted, verified / creator badges - Shorts + youtu.be — watch URLs, Shorts, embeds, live paths, and bare 11-char video IDs
- Proxy-ready — Apify RESIDENTIAL when datacenter IPs hit a consent wall
Input
| Parameter | Description |
|---|---|
videoUrls | Watch / Shorts / youtu.be URLs or 11-char video IDs |
maxComments | Dataset cap for the whole run (top-level + replies). 0 = unlimited (hard cap applies) |
sortOrder | top (default) or newest |
includeReplies | Fetch reply threads under each top-level comment |
maxRepliesPerComment | Cap per thread when replies are on (default 10 if replies enabled and this is 0) |
hl / gl | YouTube language and country (default en / US) |
requestDelaySecs | Throttle between Innertube calls |
proxyConfiguration | Optional Apify proxy (RESIDENTIAL recommended if blocked) |
Top comments only:
{"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"maxComments": 200,"sortOrder": "top","includeReplies": false}
With replies (flat rows):
{"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ","https://www.youtube.com/shorts/dQw4w9WgXcQ"],"maxComments": 500,"sortOrder": "newest","includeReplies": true,"maxRepliesPerComment": 10,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
Output
One dataset row per comment or reply — ready for CSV export and PPE billing per result.
| Field | Description |
|---|---|
type | Always comment |
commentId / commentUrl | Stable ID and deep link (watch?v=…&lc=…) |
videoId / videoUrl | Source video |
text | Comment body |
publishedTimeText | Relative time from YouTube (e.g. 1 year ago) |
likeCount / replyCount | Parsed integers (+ raw *Text fields) |
authorDisplayName / authorChannelId / authorChannelUrl | Author identity |
authorAvatarUrl | Author avatar thumbnail |
authorIsVerified / authorIsCreator / authorIsArtist | Badges |
isReply / replyLevel / parentCommentId | Thread position |
isPinned / isHearted | Pinned comment / creator heart when exposed |
sortOrder / scrapedAt | Run metadata |
{"type": "comment","commentId": "Ugzge340dBgB75hWBm54AaABAg","videoId": "dQw4w9WgXcQ","videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","text": "can confirm: he never gave us up","publishedTimeText": "1 year ago","likeCount": 300000,"replyCount": 963,"authorDisplayName": "@YouTube","authorChannelId": "UCBR8-60-B28hp2BmDPdntcQ","authorChannelUrl": "https://www.youtube.com/@YouTube","authorIsVerified": true,"isReply": false,"replyLevel": 0,"parentCommentId": null,"isPinned": true,"isHearted": true,"commentUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ&lc=Ugzge340dBgB75hWBm54AaABAg","sortOrder": "top","scrapedAt": "2026-08-13T18:13:00Z"}
Use cases
- Capture launch-video feedback for a product, game, or campaign drop
- Build moderation / spam samples from high-traffic uploads
- Compare Top vs Newest comment themes on the same video
- Enrich influencer or competitor research with audience language
- Pipe YouTube comments into an NLP or agent workflow via Apify dataset API / MCP
Integration examples
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('crawloop/youtube-comments-scraper').call({videoUrls: ['https://www.youtube.com/watch?v=dQw4w9WgXcQ'],maxComments: 100,sortOrder: 'top',includeReplies: true,maxRepliesPerComment: 5,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.slice(0, 3));
Python
from apify_client import ApifyClientclient = ApifyClient()run = client.actor("crawloop/youtube-comments-scraper").call(run_input={"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"maxComments": 100,"sortOrder": "top","includeReplies": True,"maxRepliesPerComment": 5,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items[:3])
cURL
curl -X POST "https://api.apify.com/v2/acts/crawloop~youtube-comments-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"videoUrls":["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"maxComments":100,"sortOrder":"top","includeReplies":true}'
MCP and AI assistants
Use this Actor from AI tools via Apify MCP.
Connect your Apify account, then call this Actor by its Store ID / name (crawloop/youtube-comments-scraper).
Example prompts:
- "Run YouTube Comments Scraper for https://www.youtube.com/watch?v=dQw4w9WgXcQ and return the top 50 comments as JSON"
- "Scrape newest YouTube comments with replies for this video list and summarize the top complaints"
- "Chain YouTube Comments Scraper then Bluesky Scraper to compare reaction themes across platforms"
Suite next step
After exporting comments, run Bluesky Scraper for cross-platform listening on the same brand keywords, or Product Hunt Scraper when the video is tied to a launch day.
FAQ
How do I scrape YouTube comments without the official API?
This Actor reads the public Innertube comment continuation feed used by the website. No Data API key or OAuth.
Do I need a YouTube login or cookies?
No for public videos. Enable Apify RESIDENTIAL proxy if you see consent walls or empty sections from datacenter IPs.
Are replies included by default?
No. Set includeReplies: true and optionally maxRepliesPerComment. Each reply is a separate dataset row with parentCommentId.
Can I scrape YouTube Shorts comments?
Yes. Shorts URLs and bare video IDs work the same as watch URLs.
Why is Newest sort still Top?
Some comment headers omit the sort menu for logged-out sessions. The Actor logs a warning and keeps the default Top feed.
What if comments are disabled?
The run fails with a clear status message for that video; no empty “success” dataset.
Related Actors
| Actor | Use after / beside |
|---|---|
| Bluesky Scraper | Cross-platform social listening |
| Product Hunt Scraper | Launch-day comments and reviews |
| Trustpilot Scraper | Review / reputation parallel to video comments |