# YouTube Comments Scraper + Replies (`engineertsaistudio/youtube-comments-scraper-replies`) Actor

Scrape YouTube comments and replies from any video or Short: text, author, likes, reply count, pinned and hearted flags, dates. Top or newest first. No API key.

- **URL**: https://apify.com/engineertsaistudio/youtube-comments-scraper-replies.md
- **Developed by:** [Studio EngineerTsai](https://apify.com/engineertsaistudio) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 comments

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## YouTube Comments Scraper + Replies

Scrape **YouTube comments and replies** from supported public videos and Shorts into JSON, CSV or Excel. Get the comment text, author, **like count as a number**, reply count, publish date, and whether the comment is **pinned** or **hearted by the creator**. Choose **top comments** or **newest first**.

No YouTube API key or login required. Source rate limits, disabled comments and unavailable videos can limit results.

### Start with a small sample

Use the input below for one public video, inspect the current Pricing tab and set a maximum charge in Run options. Start the run, review Output, then export JSON or CSV. Increase limits only after confirming the fields and thread links you need.

Historical owner test on September 17, 2026, build **0.0.1**: **134 comment/reply rows from 2 videos, 0 failed videos, 32 seconds**. This is a limited test, not a speed or completeness guarantee.

For repeated audience monitoring, save your input as a task and store comment IDs in your downstream workflow to avoid alerting on the same comment twice. Re-fetching rows can incur repeat charges. This Actor collects data; it does not post replies or contact commenters.

### What you get for each comment

| Field | Example |
|---|---|
| `text` | can confirm: he never gave us up |
| `authorName`, `authorChannelId`, `authorChannelUrl` | @YouTube, UCBR8-60-B28hp2BmDPdntcQ |
| `authorIsVerified`, `authorIsCreator` | true, false |
| `likeCount` | 316000 |
| `replyCount` | 962 |
| `publishedTimeText`, `publishedDateApprox` | "1 year ago", 2025-09-17 |
| `isPinned`, `isHeartedByCreator`, `heartedBy` | true, true, @RickAstleyYT |
| `parentCommentId`, `replyLevel` | Set for replies, so you can rebuild threads |
| `videoId`, `videoTitle`, `channelName`, `videoCommentCount` | Video context on every row |

### Use cases

- **Audience research** — learn what viewers ask, like and complain about on your or your competitors' videos.
- **Sentiment analysis and AI** — feed comments into LLMs or sentiment models to summarize feedback at scale.
- **Product feedback** — collect reviews and feature requests from product review videos.
- **Influencer vetting** — check engagement quality and real audience reactions before a sponsorship.
- **Community management** — export newest comments daily to spot questions that need an answer.

### Try a small audience-research sample

[Run the tested 10-comment example](https://apify.com/engineertsaistudio/youtube-comments-scraper-replies/examples/youtube-comments-10-comment-audience-research-sample), then replace its public video URL with your own. Tested September 20, 2026 on build 0.0.2: 12 comment/reply rows from one video, 0 failed videos, 8 seconds. Replies can increase the total above 10; results and cost vary. Review the current pricing and set a maximum charge.

For topic discovery first, use [YouTube Search Scraper](https://apify.com/engineertsaistudio/youtube-search-scraper-filters-views-duration) to find candidate videos, then paste selected video URLs here to inspect audience questions and feedback. These are separate runs with separate charges. For repeat monitoring, deduplicate by comment ID downstream; previously returned rows may be charged again.

### Input example

```json
{
    "videos": [
        "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
    ],
    "maxCommentsPerVideo": 10,
    "sortBy": "newest",
    "includeReplies": true,
    "maxRepliesPerComment": 5
}
```

### Pricing

The current configured rates are **$1.00 per 1,000 comment/reply rows** plus **$0.00005 per Actor start**. Check the Pricing tab for the rate that applies when you run. Zero returned comments means no comment-row events, but the start event may still apply. Set a maximum charge before running.

### FAQ

**Why are like counts rounded?** YouTube itself only shows rounded like counts (for example "316K") for popular comments. Smaller counts are exact.

**Why is the date approximate?** YouTube shows relative times like "3 weeks ago". The Actor estimates a calendar date from that display; it does not provide an exact publication timestamp.

**Can I scrape all comments of a video?** Completeness is not guaranteed. Results depend on source availability, sort order, pagination, limits and disabled or removed comments. Start small before increasing "Max comments per video".

**Need a feature?** Open an issue on the Issues tab.

# Actor input Schema

## `videos` (type: `array`):

YouTube video URLs or IDs. Works with watch, youtu.be, Shorts and live URLs.

## `maxCommentsPerVideo` (type: `integer`):

Maximum number of top-level comments to get from each video.

## `sortBy` (type: `string`):

Top comments (most relevant) or newest first.

## `includeReplies` (type: `boolean`):

Also get replies to each comment. Replies are charged like comments.

## `maxRepliesPerComment` (type: `integer`):

Maximum number of replies to get for each comment.

## `language` (type: `string`):

Interface language code (affects texts such as "3 days ago"). Keep "en" for reliable date parsing.

## `proxyConfiguration` (type: `object`):

Apify Proxy helps avoid rate limits on large runs.

## Actor input object example

```json
{
  "videos": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  ],
  "maxCommentsPerVideo": 100,
  "sortBy": "top",
  "includeReplies": false,
  "maxRepliesPerComment": 20,
  "language": "en",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "videos": [
        "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("engineertsaistudio/youtube-comments-scraper-replies").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "videos": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("engineertsaistudio/youtube-comments-scraper-replies").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "videos": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call engineertsaistudio/youtube-comments-scraper-replies --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,engineertsaistudio/youtube-comments-scraper-replies"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/VzZ8MhCSNN2edsC3V/builds/YG5foWZdX2b5PxL9q/openapi.json
