Youtube Comment Scraper avatar

Youtube Comment Scraper

Pricing

from $3.00 / 1,000 comment scrapeds

Go to Apify Store
Youtube Comment Scraper

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

Dead

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a month ago

Last modified

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.

RunComments billedYou receive
100 comments, replies off100100 comments
100 comments, 10 replies each100100 comments + up to 1,000 replies
Video with comments disabled0Nothing

Input

FieldTypeDefaultDescription
startUrlsarrayRequired. YouTube video URLs. Accepts watch?v=, youtu.be/, /shorts/, and /embed/ formats.
maxCommentsinteger100Top-level comments per video. 0 for unlimited.
sortBystringrecentrecent (newest first) or popular (most liked first).
includeRepliesbooleanfalseFetch replies for each comment. Free, but slower.
maxRepliesPerCommentinteger10Replies per comment, 1–50. Ignored when includeReplies is off.
languagestringenLanguage for YouTube-generated text like relative timestamps.
proxyConfigurationobjectOptional 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

ConfigurationApproximate time
100 comments, replies off5–8 seconds
100 comments, replies on5–8 seconds
1,000 comments, replies off45–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. popular and recent reflect 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.