YouTube Comments Scraper — Comments, Replies & Video Stats
Pricing
Pay per event
YouTube Comments Scraper — Comments, Replies & Video Stats
Scrape YouTube comments and replies from any video with author, likes, timestamps, pinned/creator flags, plus video title, views and channel. No API key, no login, no proxies needed.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Ken Digital
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
YouTube Comments Scraper — Comments, Replies & Video Stats (No API Key)
Export the comments of any YouTube video into a clean dataset: text, author, likes, reply count, pinned and creator-hearted flags, plus the video's title, channel, views and total comment count on every row. Works on regular videos, Shorts and past live streams.
- No API key, no login, no proxies. Uses the same internal endpoints as the youtube.com page.
- Replies included on demand. Turn on
includeRepliesto get threaded replies withparentCommentId. - Top or Newest. Same sort orders YouTube offers.
- Pay only for what you get. Billed per comment row delivered. Empty or failed videos cost nothing beyond the run start.
- Fast. ~20 comments per request, no browser, 256 MB of memory is enough.
Quick start
{"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"maxCommentsPerVideo": 200,"includeReplies": true,"sortBy": "top"}
Video references can be full URLs (watch?v=, youtu.be/, /shorts/, /live/) or bare 11-character video IDs.
Input
| Field | Type | Default | Description |
|---|---|---|---|
videoUrls | array | required | Video URLs or IDs. |
maxCommentsPerVideo | integer | 100 | Top-level comments per video. 0 = all (can take a while on videos with millions of comments). |
includeReplies | boolean | false | Fetch replies under each collected comment. Replies are billed like comments. |
maxRepliesPerComment | integer | 20 | Cap per thread when replies are on. 0 = all. |
sortBy | string | top | top or newest. |
language | string | en | Interface language (hl), affects relative dates such as "2 days ago". |
country | string | US | Country code (gl). |
Output
One row per comment or reply:
{"videoId": "dQw4w9WgXcQ","videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ","videoTitle": "Rick Astley - Never Gonna Give You Up (Official Video)","channelName": "Rick Astley","channelId": "UCuAXFkgsw1L7xaCfnd5JJOw","videoViewCount": 1700000000,"videoLikeCount": 18000000,"videoPublishDate": "2009-10-24","videoCommentCount": 2457628,"commentId": "Ugzge340dBgB75hWBm54AaABAg","commentUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ&lc=Ugzge340dBgB75hWBm54AaABAg","parentCommentId": null,"isReply": false,"text": "can confirm: he never gave us up","author": "@YouTube","authorChannelId": "UCBR8-60-B28hp2BmDPdntcQ","authorUrl": "https://www.youtube.com/@YouTube","authorAvatar": "https://yt3.ggpht.com/...","authorIsVerified": true,"authorIsCreator": false,"likeCount": 318000,"replyCount": 962,"publishedTimeText": "1 year ago","isPinned": true,"isHearted": true,"scrapedAt": "2026-09-21T10:00:00+00:00"}
videoLikeCount and videoPublishDate can be null when YouTube withholds the player metadata for a request; title, channel and view count are always filled. likeCount and replyCount are parsed from YouTube's abbreviated counters ("318K"), so large values are rounded the way YouTube rounds them. publishedTimeText is the relative date YouTube shows; YouTube does not expose exact comment timestamps.
Pricing
Pay per event: one comment event per row delivered (comments and replies alike) plus a tiny actor-start fee. A run that finds no comments only pays the start fee. You can cap spending per run with Apify's "Maximum total charge" setting.
Use cases
- Sentiment and topic analysis of an audience, campaign or product launch
- Community management: find unanswered questions, pinned threads, creator replies
- Research datasets (comments are ordered as YouTube ranks them)
- Feeding comments into an LLM pipeline or vector database
- Monitoring competitor videos
Integrations
Run it from the Apify API, the JavaScript or Python client, the Apify CLI, or as an MCP tool. Export the dataset as JSON, CSV, Excel or push it to Google Sheets, Make, Zapier or n8n through the Apify integrations.
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("joyouscam35875/youtube-comments-scraper").call(run_input={"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"maxCommentsPerVideo": 500,"includeReplies": True,})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row["author"], row["likeCount"], row["text"][:80])
FAQ
Does it need my YouTube API key? No. The Data API's comment quota is small; this actor reads the public page data instead.
Can it scrape comments on private, members-only or comments-disabled videos? No. Those rows come back with an error field and are not billed.
Are exact timestamps available? YouTube only publishes relative times ("3 weeks ago") for comments. The row includes that text as-is.
How many comments can I pull? All of them if you set maxCommentsPerVideo to 0. Very large videos take longer because YouTube serves 20 comments per page.
Is it legal? The actor only reads publicly visible data. You are responsible for how you use it and for complying with YouTube's terms and local law.
Feedback
Missing a field, hit a bug, or need an input this actor doesn't take yet? Open an issue on the actor's Issues tab. If the YouTube Comments Scraper saved you time, a short review on the Store page helps other people find it.
Related actors by the same developer
| Actor | What it does |
|---|---|
| YouTube Channel Scraper | Channel stats and video metadata via the official API |
| Google Trends Scraper | Interest over time, related queries, regions |
| Google SERP Scraper | Organic results, People Also Ask, snippets |
| Website Content Crawler | Clean Markdown for RAG and LLMs |
| Instagram Profile Scraper | Followers, bio, recent posts |
| Trustpilot Reviews Scraper | Reviews, ratings, company replies |