YouTube Comments Scraper π¬
Pricing
from $10.00 / 1,000 results
YouTube Comments Scraper π¬
π¬ Export YouTube comments to JSON, CSV or Excel. Get comment text, author, likes, reply count and publish date for any video. Paginated, no login, no YouTube API key or quota.
Pricing
from $10.00 / 1,000 results
Rating
0.0
(0)
Developer
Scriptbase
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
YouTube Comments Scraper
Export YouTube comments to JSON, CSV or Excel. Give it a video URL, get back every comment with its author, like count, reply count and publish date β no login, no YouTube Data API key, no quota.
The official YouTube Data API caps you at 10,000 units a day and needs a Google Cloud project and an OAuth screen. This actor needs a URL.
What it does
Reads the comment thread of one YouTube video and writes one dataset row per comment. It pages through the thread until it hits your maxItems limit or the comments run out, whichever comes first.
Works on regular videos, Shorts and past live streams. Any URL form YouTube accepts is fine: youtube.com/watch?v=β¦, youtu.be/β¦, youtube.com/shorts/β¦.
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | yes | β | YouTube video URL |
maxItems | integer | no | 100 | Stop after this many comments |
{ "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "maxItems": 500 }
maxItems is your cost ceiling β you are charged per comment delivered, so setting it caps spend before the run starts.
Output
One row per comment.
{"id": "UgxKREWxIgDrGsvcMbV4AaABAg","text": "Still a banger in 2026","author": { "name": "Jane Doe", "id": "UC38IQsAvIsxxjztdMZQtwHA", "avatarUrl": "https://yt3.ggpht.com/β¦", "verified": false },"likeCount": 1284,"replyCount": 12,"publishedAt": "2026-03-04T11:22:00.000Z","publishedAtConfidence": "parsed"}
| Field | Type | Notes |
|---|---|---|
id | string | Platform comment id |
text | string | Comment body |
author.name | string | Display name |
author.id | string | Channel id, when the source reports one |
author.avatarUrl | string | Profile image URL |
author.verified | boolean | Verified badge |
likeCount | integer | Likes |
replyCount | integer | Replies to this comment |
publishedAt | string | ISO 8601 |
publishedAtConfidence | string | exact | parsed | unknown |
About publishedAtConfidence
YouTube renders ages as relative text β "2 weeks ago" β rather than timestamps. When that is all a source gives us, the date is computed from it and marked parsed. exact means a real timestamp arrived. unknown means neither did, and publishedAt is absent.
Most scrapers present a computed date as if it were exact. This one tells you which it is, so you can judge whether it is precise enough for your analysis.
What it does not do
- Replies are not expanded. You get top-level comments and each one's
replyCount. The replies themselves are a separate fetch. - No search or filtering. Comments come back in the source's order; filter downstream.
- One video per run. For many videos, run once per URL β failures stay isolated and costs stay attributable.
- Comments must be public. A video with comments disabled returns zero rows and succeeds. That is a real answer, not an error.
Pricing
Charged per comment delivered. A run returning 250 comments bills 250. Failed runs deliver nothing and charge nothing. The per-comment price is on this actor's Store page.
Errors
| Code | Meaning |
|---|---|
BAD_REQUEST | Input missing, malformed, or not a URL this actor serves |
NOT_FOUND | The target is private, removed, or does not exist |
UNSUPPORTED_OPERATION | The URL resolved to a platform this actor does not serve |
UPSTREAM_FAILED | Every upstream source failed β retry shortly |
RATE_LIMITED | Too many requests; back off and retry |
TIMEOUT | The source took longer than the actor's budget |
UNAUTHORIZED | The actor's API credentials are invalid β contact the author |
INSUFFICIENT_CREDITS | The account behind this actor is out of credits β contact the author |
INTERNAL_ERROR | Unexpected failure |
UNAUTHORIZED and INSUFFICIENT_CREDITS are on us, not you. If you see either, the actor is misconfigured on our side.
How it works
Comments are fetched through two independent upstream sources. If the first returns nothing usable, the second is tried automatically inside the same run β no double charge, no retry on your side.
Comment threads are always fetched live, never served from a cache.
FAQ
Do I need a YouTube API key? No. No key, no OAuth, no Google Cloud project.
Does this consume YouTube Data API quota? No. It does not use the official API, so your daily quota is untouched.
Can I get replies to a comment? Not from this actor. replyCount tells you how many exist.
Why did I get fewer comments than maxItems? The video ran out first. That is a normal successful run.
Can I scrape comments from a private or age-restricted video? No. Those return NOT_FOUND.