Youtube Comment Scraper
Pricing
from $3.00 / 1,000 comment scrapeds
Youtube Comment Scraper
Scrape YouTube comments without an API key or login. Get comment text, authors, likes, timestamps, and Super Thanks amounts in seconds. Replies included free.
Pricing
from $3.00 / 1,000 comment scrapeds
Rating
0.0
(0)
Developer
Dead
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a month ago
Last modified
Categories
Share
Extract comments from any public YouTube video — no login, no API key, no quota limits.
Point it at a video URL and get back structured comment data: text, author, likes, timestamps, hearted status, and Super Thanks amounts. Replies are included free.
Why this Actor
No YouTube API key. The official Data API caps you at 10,000 units per day, which is roughly 100 comment requests. This Actor has no such ceiling.
Fast by default. 100 comments in under 10 seconds. Most scrapers walk the entire comment section before returning anything — on a video with 50,000 comments that means minutes of waiting for data you already had. This one stops as soon as it has what you asked for.
Super Thanks amounts. Paid comments are captured with their monetary value, so you can identify a creator's highest-value supporters. Most scrapers drop this field entirely.
Replies at no extra charge. You pay per top-level comment. Replies come free.
Pricing
Pay per event: $3.00 per 1,000 comments returned.
You are charged only for top-level comments that land in your dataset. Replies, retries, and failed videos cost nothing. A run that finds no comments costs nothing.
| Run | Comments billed | You receive |
|---|---|---|
| 100 comments, replies off | 100 | 100 comments |
| 100 comments, 10 replies each | 100 | 100 comments + up to 1,000 replies |
| Video with comments disabled | 0 | Nothing |
Input
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array | — | Required. YouTube video URLs. Accepts watch?v=, youtu.be/, /shorts/, and /embed/ formats. |
maxComments | integer | 100 | Top-level comments per video. 0 for unlimited. |
sortBy | string | recent | recent (newest first) or popular (most liked first). |
includeReplies | boolean | false | Fetch replies for each comment. Free, but slower. |
maxRepliesPerComment | integer | 10 | Replies per comment, 1–50. Ignored when includeReplies is off. |
language | string | en | Language for YouTube-generated text like relative timestamps. |
proxyConfiguration | object | — | Optional Apify proxy settings. |
Example input
{"startUrls": [{ "url": "https://www.youtube.com/watch?v=ScMzIvxBSi4" }],"maxComments": 100,"sortBy": "recent","includeReplies": true,"maxRepliesPerComment": 10,"language": "en"}
Output
One dataset item per top-level comment.
{"videoUrl": "https://www.youtube.com/watch?v=ScMzIvxBSi4","commentId": "UgxKREWxIgDrw8w2e_Z4AaABAg","text": "This is exactly what I needed, thank you!","author": "@example_user","authorId": "UCxxxxxxxxxxxxxxxxxxxxxx","authorPhoto": "https://yt3.ggpht.com/ytc/...","likes": "1.2K","paidAmount": "$5.00","paidCurrency": "$","paidAmountValue": 5.0,"isSuperThanks": true,"replyCount": 12,"publishedAt": "2 days ago","timeParsed": 1753804800.0,"isHearted": true,"replies": [{"commentId": "UgxKREWxIgDrw8w2e_Z4AaABAg.AbCdEfGhIjK","text": "Same here!","author": "@another_user","authorId": "UCyyyyyyyyyyyyyyyyyyyyyy","authorPhoto": "https://yt3.ggpht.com/ytc/...","likes": "34","paidAmount": "","paidCurrency": null,"paidAmountValue": null,"isSuperThanks": false,"publishedAt": "1 day ago","timeParsed": 1753891200.0,"isHearted": false}]}
Field notes
likes is YouTube's display string, not a number — "1.2K", "15K", "0". Parse it yourself if you need arithmetic.
publishedAt is relative ("2 days ago"), because that is all YouTube exposes. Use timeParsed for a Unix timestamp resolved at scrape time.
paidAmount is the Super Thanks value as YouTube rendered it, including currency symbol and locale formatting. paidAmountValue and paidCurrency are best-effort parses of it — for locales that use a comma as the decimal separator, trust paidAmount and parse it yourself.
replies is only present when includeReplies is enabled. When replies are off the key is omitted entirely, rather than set to an empty array, so an empty list always means "this comment genuinely has no replies" and never "we didn't look."
replyCount is YouTube's own count and can exceed the number of items in replies. Two reasons: your maxRepliesPerComment cap, or YouTube counting replies that were deleted or held for review. A comment showing replyCount: 2 with an empty replies array is normal, not an error.
Performance
| Configuration | Approximate time |
|---|---|
| 100 comments, replies off | 5–8 seconds |
| 100 comments, replies on | 5–8 seconds |
| 1,000 comments, replies off | 45–60 seconds |
Comments arrive 20 per request, so 100 comments is five sequential round-trips no matter what. Replies are the expensive part: each thread needs its own request, which is why includeReplies defaults to off.
Limitations
- Public videos only. Private, unlisted, age-restricted, and members-only videos are not accessible.
- Comments must be enabled. Videos with comments turned off return nothing and are not charged.
- Approximate ordering.
popularandrecentreflect YouTube's own sorting, which is not strictly deterministic between runs. - No comment editing history, and no access to comments hidden by the creator or held for review.
- Live chat is not comments. Live stream chat replay is a separate system and is not supported.
FAQ
Do I need a YouTube API key? No. Nothing to configure, no quota to manage.
Am I charged for replies? No. You pay per top-level comment; replies are included at no cost.
Why did I get fewer comments than I asked for?
The video has fewer comments than your maxComments value, or your run's spending limit was reached. Check the log — it reports exactly how many were returned per video.
Can I scrape multiple videos in one run?
Yes. Add as many URLs to startUrls as you like. Each is scraped up to maxComments independently.
Do I need a proxy? Not usually. If you are running large jobs continuously and start seeing failures, enable Apify Proxy in the input.
Does it work on YouTube Shorts? Yes. Shorts URLs are recognised and handled like any other video.
Support
Found a bug or need a field that isn't here? Open an issue on the Actor's Issues tab.