YouTube Comments Scraper (top or newest, with replies) avatar

YouTube Comments Scraper (top or newest, with replies)

Pricing

from $0.50 / 1,000 comment or replies

Go to Apify Store
YouTube Comments Scraper (top or newest, with replies)

YouTube Comments Scraper (top or newest, with replies)

Scrape public YouTube comments and replies from any video or Short: text, likes, reply count, date, pinned, hearted and creator flags, sorted by top or newest. Privacy-first (no commenter names or IDs). Pay only per comment delivered.

Pricing

from $0.50 / 1,000 comment or replies

Rating

0.0

(0)

Developer

ScrapeMole

ScrapeMole

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

YouTube Comments Scraper: comments and replies, top or newest

Scrape public YouTube comments and replies from any video or Short. Every row has the comment text, like count, reply count, when it was posted, and pinned / hearted-by-creator / posted-by-creator flags, plus the video title, channel and total comment count. Sort by Top comments or Newest first, add replies if you want them, and export to JSON, CSV, Excel or Google Sheets, or call it from Python, n8n, Make, Zapier or an AI agent.

You only pay per comment delivered. Videos with comments turned off, private or deleted videos and invalid links come back as clear error rows and are never charged.

Privacy-first by design. The Actor returns what people say, not who they are: commenter names, @handles, channel IDs and avatars are never collected or returned, and e-mail addresses inside comment text are redacted. That keeps your sentiment, feedback and research datasets clear of personal data (GDPR-friendly), which is what most comment analysis needs anyway.

Why this comments scraper gets all the comments

  • Reads the same JSON the YouTube website loads (no headless browser): 300 comments take about 7 seconds, 2,500 newest comments about 25 seconds.
  • Goes past YouTube's "Top comments" ceiling. YouTube only lists about 1,000 comments under Top comments. Pick Newest first and the Actor pages through the full history. In our tests it pulled 2,500 of 2,500 requested on a video with millions of comments. When a Top run hits the ceiling, the log tells you.
  • No duplicates, no blank rows. Comments are de-duplicated across pages, and a run never "succeeds" with zero rows silently: you get NO_DATA ("comments are turned off") or NOT_FOUND instead.
  • Retries with backoff and a fresh IP on rate limits, escalates to residential IPs only if YouTube keeps blocking, and gives rate-limited videos a slower second pass at the end.
  • Exact billing. One comment event per row in your dataset (comment or reply), charged only after the row is saved. Set Max cost per run and the Actor stops cleanly at your budget.

Live tests, 19 Oct 2026 (real YouTube, cloud server, no proxy): see Test results.

What you get

FieldDescription
typecomment (top-level) or reply
textComment text (e-mails redacted)
likeCount, replyCountEngagement numbers ("1.2K" converted to 1200)
publishedText, publishedAtApprox, isEdited"3 weeks ago", the approximate date (YYYY-MM-DD) and the edited flag
isPinned, isHeartedByCreator, isByVideoCreatorCreator signals
commentId, parentCommentId, commentUrl, positionIDs, a direct link that highlights the comment, and its order
videoId, videoUrl, videoTitle, videoChannelName, totalCommentsOnVideoVideo context on every row

How to scrape YouTube comments

  1. Paste one or more video links or IDs (watch links, youtu.be, Shorts, live and embed URLs all work).
  2. Set Max comments per video, pick Top or Newest first, and turn on Include replies if you need them.
  3. Click Start and download the comments as JSON, CSV or Excel, or read them through the API.

Input example

{
"videos": ["https://www.youtube.com/watch?v=aircAruvnKk", "https://www.youtube.com/shorts/VIDEO_ID"],
"maxComments": 500,
"sortBy": "newest",
"includeReplies": true,
"maxRepliesPerComment": 10
}

Output example

{
"status": "ok",
"type": "comment",
"videoId": "aircAruvnKk",
"videoUrl": "https://www.youtube.com/watch?v=aircAruvnKk",
"videoTitle": "But what is a neural network? | Deep learning chapter 1",
"videoChannelName": "3Blue1Brown",
"totalCommentsOnVideo": 9418,
"sortBy": "top",
"position": 2,
"parentCommentId": null,
"commentUrl": "https://www.youtube.com/watch?v=aircAruvnKk&lc=Ugwedfi--9yZVC0eefl4AaABAg",
"commentId": "Ugwedfi--9yZVC0eefl4AaABAg",
"text": "I study mathematics, physics and architecture. By definition this man is an ORACLE in the strict meaning of the word...",
"publishedText": "7 years ago (edited)",
"publishedAtApprox": "2019-10-19",
"isEdited": true,
"likeCount": 13000,
"replyCount": 173,
"isHeartedByCreator": false,
"isByVideoCreator": false,
"isPinned": false
}

Videos with comments turned off

{ "status": "error", "videoId": "XXXXXXXXXXX", "errorCode": "NO_DATA", "errorMessage": "Comments are turned off or unavailable for this video." }

Not charged.

Pricing

Pay per comment (replies count as comments). Proxy and platform costs are included, with no start fee.

Apify planPrice per comment1,000 comments
Free$0.001$1.00
Starter (Bronze)$0.0008$0.80
Scale (Silver)$0.0006$0.60
Business (Gold)$0.0005$0.50

Use cases

  • Sentiment and audience research: what viewers love, hate and ask about a product, launch, trailer or creator.
  • Product feedback mining: feature requests and complaints under review and tutorial videos.
  • Content ideas and FAQs: the questions your audience keeps asking.
  • AI and LLM pipelines: clean, identity-free comment text for classification, topic modelling, RAG or fine-tuning.
  • Brand and campaign monitoring: track reactions on your own and competitors' videos over time (schedule the Actor with Newest first).

API, Python and AI agents

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("scrapemole/youtube-comments-scraper").call(run_input={
"videos": ["https://www.youtube.com/watch?v=aircAruvnKk"], "maxComments": 200, "sortBy": "newest"
})
for c in client.dataset(run["defaultDatasetId"]).iterate_items():
print(c.get("likeCount"), c.get("text", c.get("errorMessage"))[:120])

Works with n8n, Make, Zapier, LangChain, LlamaIndex and the Apify MCP server, so Claude, ChatGPT or Cursor agents can pull comments on their own.

Test results

Live tests on 2026-10-19 against real YouTube from a cloud server with no proxy: 8 runs over 11 videos (lectures, music videos, tutorials, news, the first YouTube video), Top and Newest, with and without replies.

MetricResult
Runs finished OK8/8
Comments delivered2,250 top-level + 343 replies
Duplicate rows0
Rows with commenter identity fields0
BillingCharged exactly once per row delivered (2,593 events)
Newest-first deep paging2,500/2,500 comments on a video with millions of comments
Edge casesnot-found and invalid links (not charged), empty input, budget cap stops at exactly 7 of 100: all pass
Blocks0

FAQ

Why do I get about 1,000 comments with "Top comments"? That's a YouTube limit: the Top list stops around 1,000. Choose Newest first to get everything.

Can I get commenter names or channel IDs? No, on purpose. This Actor is built for analysing what is said without collecting personal data. If you need to know who commented, this isn't the right tool.

Are replies included? Only if you turn on Include replies. Each reply is one row with type: "reply" and the parentCommentId.

Does it work for Shorts and live streams? Yes for Shorts and finished streams with comments. Live chat isn't comments, so it isn't included.

Age-restricted or members-only videos? YouTube requires sign-in for these. The Actor doesn't log in, so they return a clear error and aren't charged.

Is it legal? The Actor only reads publicly visible comments and doesn't collect commenter identities. Respect YouTube's terms and applicable law when you reuse the data.

Found a problem? Open an issue with the run link. Each run stores a RUN_SUMMARY (requests, retries, errors) to help debug it.

More from ScrapeMole

ScrapeMole builds focused, reliable scrapers for public data: pay per result, no start fees, clear error rows that are never charged, and a RUN_SUMMARY on every run.

Building an AI agent with its own wallet? The YouTube and Google Trends data is also sold per call over x402 (USDC on Base, no account): see scrapemole.pages.dev. Questions or a missing field? Open an issue on this Actor. ScrapeMole is the maker of this Actor.