YouTube Comment Scraper That Won't Quit avatar

YouTube Comment Scraper That Won't Quit

Pricing

from $0.40 / 1,000 results

Go to Apify Store
YouTube Comment Scraper That Won't Quit

YouTube Comment Scraper That Won't Quit

Scrape public YouTube comments and replies from video links or IDs. Export text, likes, authors and dates to CSV, Excel or JSON, with question excerpts and phrase search. No YouTube API key required.

Pricing

from $0.40 / 1,000 results

Rating

0.0

(0)

Developer

Inus Grobler

Inus Grobler

Maintained by Community

Actor stats

1

Bookmarked

18

Total users

1

Monthly active users

10 days ago

Last modified

Security

Limited permissions

Share

Scrape public YouTube comments and replies from video links or IDs. Export comment text, likes, author details and source dates to CSV, Excel or JSON, with included question excerpts, recurring words and optional phrase search. No YouTube API key, login or customer-supplied cookies are required.

Paste your video links, choose Comments per video, and start. Standard YouTube videos, Shorts links and shortened youtu.be links are supported. Each delivered comment or reply becomes a separate dataset row. Non-empty short reactions and emoji-only comments are retained, even when author details are unavailable.

Built to keep useful results: continue to other videos, preserve collected comments, and retry empty access failures through fresh proxy sessions. Recovery shares the run's page and time limits. The summary shows attempts, delivered counts and stopping reasons.

Why use this YouTube comment scraper?

  • Simple inputs: video links and a comment count, with a small ready-to-run example.
  • Multiple videos: add several links in one run; repeated links to the same video are collected once.
  • Top or newest comments: choose the order that suits your research.
  • Optional replies: retain parent comment IDs so you can examine conversations.
  • Included question analysis: find question-like comments, recurring words and literal phrase matches in the delivered sample.
  • Clear collection status: see which videos returned comments, which failed, and whether a run stopped at a source, time or spending limit.

This Actor collects public comment data. It does not download video or audio, discover every video on a channel, collect live chat, or access private or restricted comments.

Checked with real comment collection

Cloud verification returned 400 top comments, 300 newest comments across three videos, and 200 comments including replies. Each run had unique comment IDs and matching dataset and analysis totals. The runs completed in approximately 8–26 seconds. Results and timing vary with the videos and source availability.

Quick start and input examples

  1. Open the Actor input form.
  2. Paste one or more YouTube video links or IDs.
  3. Choose Comments per video.
  4. Click Start, then open the dataset to preview and download your comments.

The example uses a public video and requests 5 real comments. It does not contain demonstration comments.

{
"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
"maxCommentsPerVideo": 5
}

For newest comments and replies, expand Comment options, or send:

{
"videoUrls": ["https://youtu.be/dQw4w9WgXcQ"],
"maxCommentsPerVideo": 25,
"includeReplies": true,
"commentSort": "new",
"analysisQuery": "camera"
}

Input options

Form fieldAPI fieldWhat it does
YouTube video links or IDsvideoUrlsAn array of public video links or 11-character video IDs. Repeated videos are deduplicated.
Comments per videomaxCommentsPerVideoMaximum comments to deliver for each video. Default: 5. Replies count toward this limit. Zero skips collection.
Include repliesincludeRepliesInclude available replies as individual rows. Default: false.
Comment ordercommentSorttop for YouTube's top-comment order or new for newest first. Default: top.
Find a phrase in commentsanalysisQueryOptional literal phrase searched within the comments delivered by this run.

Expand Comment analysis in the input form to enter a phrase. The phrase search analyzes the returned sample; it does not filter what YouTube returns. For example, camera finds matching comment excerpts in Comment and question analysis.

Existing API clients can also set maxCommentPagesPerVideo to cap source page requests. When omitted, a bounded allowance is selected from the requested comment count. A low page limit can return fewer comments, especially with replies enabled. This technical option is hidden from the simple form.

Comment dataset and output example

Each dataset row from live collection is a comment or reply. Video metadata and collection status are also available in the Run summary output.

FieldWhat you get
record_typecomment for a delivered comment or reply.
video_id, video_url, video_titleVideo identifier, canonical link and title when available.
comment_id, urlNative comment ID and a YouTube link containing that comment ID.
textFull comment text returned by the public source.
author_name, author_channel_id, author_url, author_handlePublic author details when available.
like_count, reply_countSource-provided counts. Unknown counts remain null.
parent_comment_id, depthReply relationship and nesting depth when the parent chain is known.
published_text, published_atSource age/date text and an absolute timestamp when available.
is_pinned, is_hearted, author_is_channel_owner, verifiedSource indicators when available.
channel_id, channel_name, channel_url, view_countAvailable video/channel context.
scraped_at, dataInputSource, sourceVerifiedCollection time and whether the source was fetched in this run.

Relative ages such as “2 months ago” are preserved in published_text. An absolute publication timestamp is left null when only a relative age is available. Missing values remain null; a known zero or false value is retained. Reply totals, edited status and membership indicators are not guaranteed.

Illustrative output shape; these values are not a collected comment:

{
"record_type": "comment",
"video_id": "dQw4w9WgXcQ",
"video_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"comment_id": "example-comment-id",
"text": "Illustrative question: how was the audio recorded?",
"author_name": "Example author",
"like_count": 0,
"reply_count": null,
"parent_comment_id": null,
"depth": 0,
"published_text": "2 months ago",
"published_at": null,
"dataInputSource": "web",
"sourceVerified": true
}

Download the dataset in CSV, Excel, JSON or another format supported by Apify. Use the API or Apify integrations to connect the rows to a spreadsheet, database or analysis workflow.

Included comment and question analysis

Open Comment and question analysis in the run outputs to inspect:

  • Question-like comments and links to the delivered records.
  • Words that recur across multiple comments and repeated text.
  • Matches for your optional phrase, with source-linked excerpts.
  • Coverage of known numeric fields, including real zeros and missing values.

The report describes only the comments delivered by this run. A question-like excerpt is not a generated answer. This Actor does not infer sentiment, audience demographics, reach or growth, and it does not translate comments. No language model is used. The analysis is a separate run artifact and does not add charged comment rows.

Use cases

UserPractical use
Creators and channel teamsFind audience questions and ideas to investigate in future videos.
Brands and marketersReview product mentions, recurring feedback and questions across selected videos.
ResearchersBuild structured comment samples for text analysis or external sentiment tools.
Community teamsExamine public discussion and reply relationships in a spreadsheet or dashboard.

Python API example

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("thescrapelab/Apify-YouTube-Comment-Scraper-2-0").call(
run_input={
"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
"maxCommentsPerVideo": 25,
"includeReplies": False,
"commentSort": "top"
}
)
for comment in client.dataset(run["defaultDatasetId"]).iterate_items():
print(comment["video_id"], comment.get("author_name"), comment["text"])
analysis = client.key_value_store(run["defaultKeyValueStoreId"]).get_record(
"EVIDENCE_ANALYSIS"
)
print(analysis["value"])

APIFY_TOKEN authenticates your Apify account. A YouTube Data API key is not needed. Existing integrations can still supply providedRecords or providedDatasetId to process existing comments. Those fields are hidden in the form and retain their import behavior: supplied records are labeled sourceVerified: false, and the comment limit bounds the imported records scanned across that run.

Pricing and collection limits

Published result pricing starts at $0.40 per 1,000 delivered comments, with rates depending on your Apify plan, plus the Actor start charge. Check Pricing for current applicable rates. Separate video metadata and question analysis do not create additional charged dataset rows.

Start with a small sample. Comment counts are maximums, and a request for a large number is not a guarantee that every comment will fit in one run. Public availability, duplicates, replies, page allowances, YouTube blocking and spending limits can affect delivery. Live collection is bounded to approximately 100 seconds of useful work and 10,000 delivered comments per run, with time reserved to save summaries.

When a later source page fails, already collected comments are preserved and the summary reports a partial result. A video with disabled or unavailable comments produces a clear source status rather than a fabricated dataset row. Other supplied videos can still return results. If no requested video yields public comments, the run fails clearly. Start charges can still apply to failed runs.

FAQ and troubleshooting

Do I need a YouTube API key or account?
No. This workflow reads publicly accessible video comment data without customer-supplied YouTube credentials.

Can I collect comments from Shorts?
Public Shorts links are accepted and normalized to their video ID. Comment availability and source limits still apply.

Can I collect every comment?
Use a suitable maximum and inspect the run summary. The Actor returns a bounded sample and can stop at source, time, record or spending limits. It does not promise complete coverage of very large discussions.

Why are there fewer results than requested?
Comments can be hidden, removed or duplicated, replies may consume the limit, and YouTube may throttle requests. Open Run summary for per-video delivered counts and any source error. Try a smaller sample later if access is temporarily blocked.

What about private videos, age restrictions or disabled comments?
Those targets may fail or have no public comments. This Actor does not log in to access restricted content.

How do I report an issue?
For support, open the Issues tab and include the run ID, a public video link, requested count and expected behavior. Do not include tokens or private account information.

This Actor is independently developed by TheScrapeLab and is not affiliated with YouTube or Google.