YouTube Video Comments Scraper โ€“ Text & Authors avatar

YouTube Video Comments Scraper โ€“ Text & Authors

Pricing

from $1.00 / 1,000 results

Go to Apify Store
YouTube Video Comments Scraper โ€“ Text & Authors

YouTube Video Comments Scraper โ€“ Text & Authors

Collect public YouTube video comments with text, authors, likes, reply counts, and source-video context. Set a page budget and export one row per comment.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

ScrapingMonkey

ScrapingMonkey

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Collect the public discussion under known YouTube videos, with each comment saved as an individual record. YouTube Video Comments Scraper returns text, authors, published-time labels, likes, reply counts, and visible pinned or creator-heart indicators.

Use it to research audience feedback, compare reactions to selected videos, or build a comment dataset for repeated analysis. Every row keeps the source video's ID and available context.

At a glanceDetails
๐Ÿ“ฅ InputFull YouTube video URLs
๐Ÿ“ค OutputComment text, authors, likes, reply context, and source-video details
๐Ÿ” Login requiredNo YouTube credentials or cookies
โšก ProcessingUp to 5 requests concurrently with automatic retries
๐Ÿ’พ DeliveryOne row per collected comment; visible embedded replies can also become rows

What the YouTube video comments scraper extracts ๐Ÿ”Ž

The Actor opens each video's public comment collection and follows its available comment pages. Fields can include:

  • Comment ID, permalink, text, and published-time label
  • Like count and its source label, plus available reply count and level
  • Author channel ID, name, handle, URL, avatars, and account indicators
  • Pinned text and creator-heart information when exposed
  • Links and channel mentions found in the comment
  • Available parent-comment ID for replies included in the response
  • Video ID, source-video title, channel, author, and views when supplied
  • The visible comment total and the result's collection position

How to scrape YouTube video comments ๐Ÿš€

  1. Add full video URLs to inputList.
  2. Choose pagesPerInput for the comment-page budget per video.
  3. Start the Actor and review comment rows and failed results.
  4. Export the dataset or group comments by video_id for analysis.
{
"inputList": [
"https://www.youtube.com/watch?v=jNQXAC9IVRw"
],
"pagesPerInput": 2
}

YouTube video comments data fields and output ๐Ÿ“ฆ

Field groupIncluded data
CommentID, URL, text, published-time label, likes, and reply count
AuthorChannel identity, handle, profile link, avatar variants, and visible account indicators
Discussion contextParent ID, reply level, pinned or hearted indicators, links, and mentions
Source videoVideo identity, title, channel, author, available views, and comment total
CollectionOriginal input, success or failed status, and position within that input

Complete illustrative success item. The content and values below are fictional examples, not a live result:

{
"input": "https://www.youtube.com/watch?v=TrailWalk01x",
"status": "success",
"id": "UgExampleThread01",
"url": "https://www.youtube.com/watch?v=TrailWalk01x&lc=UgExampleThread01",
"parent_comment_id": null,
"text": "Which section has the most shade?",
"published_text": "1 day ago",
"likes": 7,
"likes_text": "7",
"replies_count": 2,
"reply_level": 0,
"is_pinned": false,
"pinned_text": null,
"is_hearted": false,
"hearted_by": null,
"creator_thumbnail": null,
"is_liked": null,
"author.id": "UCaaaaaaaaaaaaaaaaaaaaaa",
"author.name": "Maya Park",
"author.handle": "@trailjournal",
"author.url": "https://www.youtube.com/@trailjournal",
"author.avatar_url": "https://example.com/maya-avatar.jpg",
"author.avatar_thumbnails.url": [
"https://example.com/maya-avatar-small.jpg",
"https://example.com/maya-avatar.jpg"
],
"author.avatar_thumbnails.width": [
80,
160
],
"author.avatar_thumbnails.height": [
80,
160
],
"author.is_verified": false,
"author.is_creator": false,
"author.is_artist": null,
"author.is_current_user": null,
"links.text": [],
"links.url": [],
"mentions.channel_id": [],
"mentions.name": [],
"mentions.url": [],
"comments_total": 18,
"video_id": "TrailWalk01x",
"source_video.id": "TrailWalk01x",
"source_video.url": "https://www.youtube.com/watch?v=TrailWalk01x",
"source_video.title": "A forest walk in three stops",
"source_video.channel_id": "UCaaaaaaaaaaaaaaaaaaaaaa",
"source_video.author": "Trail Journal",
"source_video.views": 12400,
"position": 1
}

Each comment is one row in one table, with the same literal dotted field names in JSON. Author-avatar, link, and mention columns align by position within their groups. Source-video details stay in the comment row. position is collection order, not a relevance score or a permanent YouTube rank.

Missing optional fields can be null, empty strings, or empty lists. Some flags default to false when no signal is present. A failed row retains input, sets status to failed, and leaves the result-data fields null.

Input requirements and coverage โš™๏ธ

ParameterTypeDefaultRules
inputListarray of stringsRequiredAt least one full supported YouTube video URL. Bare video IDs are not accepted.
pagesPerInputinteger1Minimum 1, with no fixed upper limit. Limits result pages for each input; YouTube controls page size.

Accepted video forms include watch URLs, youtu.be links, and supported /shorts/, /live/, /embed/, or /v/ URLs. Bare video IDs, channel links, and playlist-only links are not accepted.

The Actor paginates the video's comment collection. Replies already present in those responses can be saved as rows, but their individual reply threads are not separately paginated. Use Comment Replies Scraper to target the replies to a known top-level video comment.

There is no sorting input. The dataset follows the public collection order YouTube returns, which can change between runs.

Each input has its own collection order and duplicate tracking. Repeated results within that input are skipped; the same result may appear again under another input. Repeated input entries are processed separately.

The page budget counts result pages. Requests needed to open the collection do not consume it. Collection ends at the budget or when YouTube stops providing a usable next page. If collection ends without any results, the Actor saves a failed row for that input. An empty end after saved results does not add a failure.

YouTube video comment use cases ๐ŸŽฏ

Audience-feedback research

Collect public questions, reactions, and requests from selected videos while retaining their source context.

Content comparisons

Compare comment text, likes, and visible discussion indicators across a defined video sample.

Discussion triage

Use comment links and available reply counts to select threads for focused reply collection or manual review.

Repeated comment collection

Compare comment IDs with previously saved results to identify newly observed discussion in your own database.

Pricing and billable comment rows ๐Ÿ’ฐ

Check the Actor's Pricing tab for the current charging model and rate.

Under dataset-item pricing, each saved success or failed row can be billable. Automatic retries do not independently create extra rows. Repeated input entries can produce repeated billable results.

A visible reply saved as a row counts as a comment result under dataset-item pricing. Author images and source-video details remain within the row. The page budget does not guarantee a particular number of comments.

YouTube Video Comments Scraper API and integrations ๐Ÿ”Œ

Use the Actor ID from the API tab as $ACTOR_ID and your Apify token as $APIFY_TOKEN.

curl -X POST "https://api.apify.com/v2/acts/$ACTOR_ID/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"inputList":["https://www.youtube.com/watch?v=jNQXAC9IVRw"],"pagesPerInput":2}'

This request starts a run. Retrieve the default dataset after completion, or use schedules and webhooks to connect it to a recurring workflow. Export JSON, CSV, or Excel, or send selected fields to Google Sheets, Make, Zapier, or your own application.

Reliability and limits โš ๏ธ

Temporary request failures are retried. Invalid or unavailable targets produce failed rows while other inputs can continue. A later-page failure can add a failed row alongside results already saved for the same input.

Comments may be disabled, restricted, deleted, or unavailable even when a video remains public. Public comment totals and reply counts can exceed the rows collected within your page budget.

Like counts may be parsed from abbreviated labels; retain likes_text when precision matters. Published times are the source's text labels, not exact timestamps. Pinned, hearted, and author indicators can be missing or defaulted.

Frequently asked questions โ“

Does it collect every reply?

It saves replies already included in the requested comment pages. It does not separately paginate every reply thread; use Comment Replies Scraper for a selected top-level comment.

How many comments are in one page?

YouTube controls page size. The page budget limits comment-result pages rather than an exact number of rows.

Can I choose newest or top comments?

There is no sorting parameter. Results follow the public comment collection YouTube returns.

Why does a public video produce a failed result?

Its comments may be disabled or unavailable, the required public collection may be inaccessible, or collection may end without usable results.

Are repeated video URLs processed once?

No. Repeated inputs are processed separately. Remove repeated entries before running if you want to avoid duplicate collections.

Does the output include exact comment timestamps?

It preserves YouTube's published-time text, such as a relative date label, rather than supplying an exact timestamp.

For a reproducible issue, share the run ID, a safe public input, and the field or behavior you expected through the Actor's support channel. Keep tokens and other credentials out of support messages.

Use public content in accordance with applicable privacy, copyright, contractual, and platform requirements.