# Youtube Comments - 1$/month (`insight_api_labs/youtube-comments`) Actor

Our YouTube Comments Scraper is the most affordable, efficient, and dependable tool on Apify for extracting comments from YouTube videos.

- **URL**: https://apify.com/insight_api_labs/youtube-comments.md
- **Developed by:** [InsightAPILabs](https://apify.com/insight_api_labs) (community)
- **Categories:** Videos, Automation, E-commerce
- **Stats:** 50 total users, 0 monthly users, 85.2% runs succeeded, 6 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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: The Fastest, Cheapest, and Most Reliable YouTube Comments Scraper on Apify

Our YouTube Comments Scraper is the most affordable, efficient, and dependable tool on Apify for scraping YouTube comments. Whether you're analyzing audience engagement, tracking sentiment, or building a comment database, this scraper does all the hard work at a fraction of the cost and in record time. Here's how to get started:

#### 🚀 How to Use:

To begin, you'll need to provide a list of YouTube video URLs for which you want to retrieve the comments. Simply input an array of video URLs and specify the total number of comments you wish to scrape.

**Input:**

- **Start URLs (`video_urls`)**: An array of YouTube video URLs you want to scrape comments from.
- **Total Comments**: Specify how many total comments you’d like to retrieve (across multiple videos, if applicable).

Once your input is set, let our scraper fetch the data!

#### 📊 Data Fields Explained: A Breakdown of Each Column

Here’s a deep dive into the data returned by the scraper:

##### 💬 Comment Identification

- **cid**: The unique comment ID for each comment.
- **replyToCid**: If the comment is a reply to another comment, this field will contain the ID of the parent comment.
- **type**: Whether the data represents a **comment** or a **reply**.

##### 📅 Timing Information

- **publishedTimeText**: The time when the comment was published, formatted as text (e.g., "2 hours ago").

##### 📝 Comment Content

- **comment**: The actual content of the comment.
- **author**: The name of the user who wrote the comment.
- **authorIsChannelOwner**: A boolean field indicating whether the author is the owner of the channel (true/false).

##### 📊 Engagement Metrics

- **replyCount**: The number of replies this comment has received.
- **voteCount**: The number of likes or upvotes the comment has received.
- **hasCreatorHeart**: Indicates whether the channel owner has "hearted" the comment (a special form of approval from the creator).

##### 🎥 Video Details

- **videoId**: The unique identifier for the YouTube video the comment belongs to.
- **pageUrl**: The URL of the YouTube video page.
- **commentsCount**: The total number of comments for the video.

##### 🎥 Video Metadata

- **title**: The title of the video the comment is associated with.

#### 🔗 Direct Access:

- **pageUrl**: Direct link to the YouTube video where the comment was posted.

#### 📈 Use Cases:

- **Audience Insights**: Track how users interact with a video by analyzing comment volume and engagement metrics.
- **Sentiment Analysis**: Identify trending sentiments by reviewing the content of comments and replies.
- **Creator Interaction**: Monitor if and how the video creator interacts with their audience through "hearts" or replies.

#### 💡 Key Benefits:

- Automate the extraction of comments from YouTube videos.
- Analyze comment metrics to understand video performance and audience interaction.
- Access detailed comment data that can be integrated into your analysis tools for deeper insights.

By using this scraper, you gain powerful access to YouTube comments, helping you better understand your audience and optimize your content strategies! 🚀

# Actor input Schema

## `video_urls` (type: `array`):

YouTube video URLs to start with. Make sure that URLs contain 'youtube.com/watch?v=' followed by the video ID.

## `total_comments` (type: `integer`):

When total number of comments is reached, actor stops retrieving more comments

## Actor input object example

```json
{
  "video_urls": [
    {
      "url": "https://www.youtube.com/watch?v=FqZYHHNntk0"
    }
  ],
  "total_comments": 100
}
```

# 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 = {
    "video_urls": [
        {
            "url": "https://www.youtube.com/watch?v=FqZYHHNntk0"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("insight_api_labs/youtube-comments").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 = { "video_urls": [{ "url": "https://www.youtube.com/watch?v=FqZYHHNntk0" }] }

# Run the Actor and wait for it to finish
run = client.actor("insight_api_labs/youtube-comments").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 '{
  "video_urls": [
    {
      "url": "https://www.youtube.com/watch?v=FqZYHHNntk0"
    }
  ]
}' |
apify call insight_api_labs/youtube-comments --silent --output-dataset

```

## MCP server setup

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

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/ysdZMEm2EfN2lalRg/builds/7R8NpaoqSLHrxkkWT/openapi.json
