# YouTube Comments Scraper: Comments and Replies, No Login (`themineworks/youtube-comments-scraper`) Actor

Scrape comments and replies from public YouTube videos and Shorts: text, author and channel, likes, reply count, pinned, hearted by the creator, channel owner flag, published time and video title. Top or newest first. Many videos per run. No login or API key. Pay per comment.

- **URL**: https://apify.com/themineworks/youtube-comments-scraper.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** Social media, Videos, MCP servers
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.20 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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: Comments and Replies, No Login

[![400 YouTube comments and replies from 4 videos in 31 seconds](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/youtube-comments-scraper-hero.png)](https://console.apify.com/actors/pSOO7QB7ddtGBasiP/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

From **The Mine Works**, makers of [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) and [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), with over 140,000 runs across 170+ public actors.

### Why choose this actor?

- **Comments and their replies in one dataset, in reading order.** Our test run returned 400 rows from 4 videos in 31 seconds: 81 top comments, each followed by its replies (319), every reply linked to its parent by `parent_comment_id`. No second actor and no second run for replies.
- **No YouTube account, no cookies, no API key, no quota.** The actor reads the same public comments panel a logged out visitor sees. In our final test run 79 of 79 requests were answered, none hit a bot check, and there was no proxy to set up.
- **You only pay for comments you receive.** A video with comments turned off, a deleted or private video, a wrong link and a refused request all come back as a free status row that says why. Duplicate comments are dropped before they are charged.

[![Run it on Apify](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/button-run.png)](https://console.apify.com/actors/pSOO7QB7ddtGBasiP/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Part of The Mine Works Social media and video family:** [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Instagram Followers & Following](https://apify.com/themineworks/instagram-followers-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Reddit Search Scraper](https://apify.com/themineworks/reddit-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral).

### Try it in one minute

Paste this into the input (JSON view) and press Start. It returns the 10 top comments of one video in a few seconds:

```json
{
  "videos": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
  "maxComments": 10
}
```

You can give videos as watch links (`https://www.youtube.com/watch?v=...`, mobile `m.youtube.com` and `music.youtube.com` links work too), short links (`https://youtu.be/...`), Shorts links (`https://www.youtube.com/shorts/...`), live and embed links, or plain 11 character video IDs such as `dQw4w9WgXcQ`, up to 1,000 per run, mixed freely.

On Apify's free plan every run returns the first 10 results as a preview, so you can check the data and the fields before you pay. A paid Apify plan returns every result: https://apify.com/pricing?fpr=ymnoit

#### Copy to your AI assistant

```text
themineworks/youtube-comments-scraper on Apify. Scrapes comments and replies from public YouTube videos and Shorts, one row per comment with text, author, likes, reply count, pinned and hearted flags, publish time and video title. Call ApifyClient("TOKEN").actor("themineworks/youtube-comments-scraper").call(run_input={"videos": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"], "maxComments": 100, "sortBy": "top", "includeReplies": false}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: videos (video links, Shorts links or 11 character video IDs). Optional: maxComments (default 100, 10 to 20000 rows per video), sortBy ("top" or "newest", default "top"), includeReplies (default false), maxRepliesPerComment (default 10, 1 to 1000). Full spec: GET https://api.apify.com/v2/acts/themineworks~youtube-comments-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
```

### Key features

- **28 fields per comment**: full text, author handle, author channel ID and link, avatar, verified badge, channel owner flag, likes (number and as shown), reply count, pinned, hearted by the creator, edited, relative time plus an ISO date, comment link, and the video's title, channel and total comment count on every row.
- **Videos and Shorts**: the same input field takes both. Shorts rows link back to `/shorts/` so you can tell them apart.
- **Two orders**: Top comments (YouTube's default, pinned and most liked first) or Newest first, for monitoring.
- **Replies on demand**: switch on `includeReplies` and each comment is followed by up to `maxRepliesPerComment` replies (1 to 1,000). YouTube serves 10 replies in the first request and about 50 in each later one.
- **From 10 to 20,000 rows per video**, up to 1,000 videos per run, five videos read at a time. YouTube serves 20 comments per request; one video gave 400 comments in 31 seconds in our test.
- **A run summary you can audit**: the `OUTPUT` record lists every video's status, pages read, requests made and refusals, so an empty result always has a reason.

### How to use it

#### Basic: the top 100 comments of one video

```json
{
  "videos": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
  "maxComments": 100
}
```

#### Several videos and Shorts at once

```json
{
  "videos": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    "https://www.youtube.com/shorts/T_SMf9j50uc",
    "https://youtu.be/9bZkp7q19f0",
    "kJQP7kiw5Fk"
  ],
  "maxComments": 200
}
```

Each video gets its own budget of 200 rows. Videos that cannot be read do not take anything from the others.

#### Job: full conversations for sentiment or topic research

Turn on replies to read whole threads, not just the first line of each one. Every reply row carries `parent_comment_id`, so you can rebuild each thread in a spreadsheet or a notebook.

```json
{
  "videos": ["https://www.youtube.com/watch?v=9bZkp7q19f0"],
  "maxComments": 1000,
  "sortBy": "top",
  "includeReplies": true,
  "maxRepliesPerComment": 20
}
```

Replies count toward `maxComments`, so this returns up to 1,000 rows in total: each top comment followed by at most 20 of its replies.

#### Job: watch new comments on your own launches

Read the newest comments of your latest videos every few hours and send them to Slack or a sheet. Use `sortBy: "newest"` and keep `maxComments` near the number of comments a video gets between two runs.

```json
{
  "videos": [
    "https://www.youtube.com/watch?v=VIDEO_ID_1",
    "https://www.youtube.com/shorts/VIDEO_ID_2"
  ],
  "maxComments": 50,
  "sortBy": "newest"
}
```

Scheduling tip: in Apify Console open this actor, then Schedules, then add a schedule (every 6 hours works for most channels). Each run reads the newest comments again; drop the `comment_id` values you already have on your side, since the actor does not remember earlier runs.

#### Job: questions and complaints on a competitor's videos

Collect what buyers ask under a competitor's product reviews and unboxings. Top order puts the comments with the most agreement first, and `likes` tells you how many people share the point.

```json
{
  "videos": [
    "https://www.youtube.com/watch?v=REVIEW_VIDEO_1",
    "https://www.youtube.com/watch?v=REVIEW_VIDEO_2",
    "https://www.youtube.com/watch?v=REVIEW_VIDEO_3"
  ],
  "maxComments": 300,
  "includeReplies": true,
  "maxRepliesPerComment": 5
}
```

Filter the dataset on `author_is_channel_owner` to see where the creator answered, and on `is_hearted` to see what the creator approved of.

#### Job: creator engagement check before a sponsorship

Before you pay a creator, read the comments under their last few videos: how many real conversations, how often the creator replies, and whether the comments are about the content or are spam. A sample of 200 rows per video is usually enough.

```json
{
  "videos": ["VIDEO_ID_1", "VIDEO_ID_2", "VIDEO_ID_3", "VIDEO_ID_4", "VIDEO_ID_5"],
  "maxComments": 200,
  "includeReplies": true
}
```

### Input parameters

| Parameter | Type | Default | What it does |
|---|---|---|---|
| `videos` | array of strings | `["https://www.youtube.com/watch?v=dQw4w9WgXcQ"]` | Public YouTube videos or Shorts, up to 1,000 per run: watch links, youtu.be links, Shorts, live and embed links, or 11 character video IDs. Channel and playlist links are skipped, listed in the run summary and never charged. |
| `maxComments` | integer | `100` | Most comment rows per video, top comments and replies together. From 10 to 20,000. |
| `sortBy` | string | `"top"` | `"top"` for YouTube's default order (pinned and most liked first) or `"newest"` for the most recent first. |
| `includeReplies` | boolean | `false` | Also return the replies under each comment, right after the comment they answer. |
| `maxRepliesPerComment` | integer | `10` | Only with `includeReplies`. Most replies to return under one comment. From 1 to 1,000. |

The actor also reads the same links from `startUrls` (plain links or `{ "url": "..." }` objects), `videoUrls`, `videoIds` and `urls`, if your input already uses one of those names.

### What data do you get?

One row per comment or reply. Fields by group:

**The video (on every row)**

- `video_id`, `video_url` (a `/shorts/` link when you gave a Shorts link), `video_title`, `video_channel_name`, `video_channel_id`, `video_comment_count_text` (the total YouTube shows, for example `2.4M`).

**The comment**

- `comment_id`, `comment_url` (opens the video with this comment highlighted), `text` (full text with line breaks and emoji).
- `likes` (a number) and `likes_text` (as YouTube shows it). Below 1,000 the number is exact; above that YouTube only shows a rounded figure, so `323K` becomes `323000`.
- `reply_count` (replies under a top comment; 0 on replies).
- `is_pinned`, `is_hearted` (hearted by the channel that posted the video), `is_edited`.
- `published_time_text` as YouTube shows it (`3 weeks ago`), and `published_at`, a best effort ISO date: the time of the run minus that amount, so it is as exact as the unit YouTube gives.

**The author**

- `author_name` (the @handle as YouTube shows it), `author_channel_id`, `author_channel_url`, `author_avatar_url`, `author_is_verified`, `author_is_channel_owner` (the author is the channel that posted the video).

**Threads and order**

- `is_reply`, `parent_comment_id` (on replies: the comment it answers), `position` (order within its video in this run), `sort_by` (`top` or `newest`), `scraped_at`.

**Status rows (free)**

- A video that returns no comments gets one row with `_type: "status"`, `input`, `video_id`, `status` (`not_found`, `comments_off`, `no_comments_section`, `no_comments`, `blocked`, `route_broken`, `skipped`, `invalid_input`, `no_input` or `error`), `note` in plain words, and `video_title` when YouTube showed it. These rows are never charged. Filter them out with `_type` if you only want comments.

#### Stable fields for automations

These fields were present in every one of the 400 comment rows of our test run, and their names will not change:

| Field | What it is |
|---|---|
| `video_id` | YouTube video ID, 11 characters |
| `video_url` | Link to the video or Short |
| `video_title` | Title of the video |
| `comment_id` | YouTube comment ID; a reply ID is the parent ID, a dot, then the reply part |
| `comment_url` | Link to the comment |
| `text` | Comment text |
| `author_name` | Author @handle |
| `author_channel_id` | Author channel ID (UC...) |
| `likes` | Likes as a number |
| `reply_count` | Replies under the comment |
| `is_reply` | true for a reply |
| `is_pinned` | Pinned by the channel |
| `is_hearted` | Hearted by the channel |
| `published_time_text` | Publish time as YouTube shows it |
| `scraped_at` | When the row was read |

`parent_comment_id` is present on every reply row and absent on top comments.

#### Output examples

Real rows from our test runs on 5 October 2026, trimmed (avatar links removed; the first row's video title is left out). Handles of private commenters are masked here; the dataset has them in full.

A pinned comment, hearted by the creator (Top order, Rick Astley's video):

```json
{
  "video_id": "dQw4w9WgXcQ",
  "video_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "video_channel_name": "Rick Astley",
  "video_channel_id": "UCuAXFkgsw1L7xaCfnd5JJOw",
  "comment_id": "Ugzge340dBgB75hWBm54AaABAg",
  "comment_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ&lc=Ugzge340dBgB75hWBm54AaABAg",
  "text": "can confirm: he never gave us up",
  "author_name": "@YouTube",
  "author_channel_id": "UCBR8-60-B28hp2BmDPdntcQ",
  "author_channel_url": "https://www.youtube.com/@YouTube",
  "author_is_verified": true,
  "author_is_channel_owner": false,
  "likes": 323000,
  "likes_text": "323K",
  "reply_count": 962,
  "is_pinned": true,
  "is_hearted": true,
  "is_reply": false,
  "published_time_text": "1 year ago",
  "published_at": "2025-10-05T16:14:19.798Z",
  "is_edited": false,
  "position": 1,
  "sort_by": "top",
  "video_comment_count_text": "2.4M",
  "scraped_at": "2026-10-05T16:14:19.798Z"
}
```

The creator's own comment on a Short (`author_is_channel_owner` is true):

```json
{
  "video_id": "T_SMf9j50uc",
  "video_url": "https://www.youtube.com/shorts/T_SMf9j50uc",
  "video_title": "Can We Build an Entire Village?",
  "video_channel_name": "MrBeast",
  "comment_id": "UgwXDWcLt82FOd5X6kx4AaABAg",
  "text": "I’m so grateful we were able to make this happen",
  "author_name": "@MrBeast",
  "author_channel_id": "UCX6OQ3DkcsbYNE6H8uQQuVA",
  "author_is_verified": true,
  "author_is_channel_owner": true,
  "likes": 12000,
  "likes_text": "12K",
  "reply_count": 894,
  "is_pinned": true,
  "is_hearted": false,
  "is_reply": false,
  "published_time_text": "2 weeks ago",
  "published_at": "2026-09-21T16:13:57.713Z",
  "position": 1,
  "sort_by": "top",
  "video_comment_count_text": "17K"
}
```

A reply, right after the comment it answers (`includeReplies: true`):

```json
{
  "video_id": "T_SMf9j50uc",
  "video_title": "Can We Build an Entire Village?",
  "comment_id": "UgwXDWcLt82FOd5X6kx4AaABAg.AauJoWjHnAjAauK-e6iaR-",
  "text": "greetings folks.",
  "author_name": "@r*******",
  "author_is_verified": false,
  "author_is_channel_owner": false,
  "likes": 35,
  "likes_text": "35",
  "reply_count": 0,
  "is_pinned": false,
  "is_hearted": false,
  "is_reply": true,
  "parent_comment_id": "UgwXDWcLt82FOd5X6kx4AaABAg",
  "published_time_text": "2 weeks ago",
  "position": 2,
  "sort_by": "top"
}
```

A comment from Newest order, posted 35 seconds before the run (zero likes read as `0`):

```json
{
  "video_id": "T_SMf9j50uc",
  "video_url": "https://www.youtube.com/shorts/T_SMf9j50uc",
  "comment_id": "Ugyz-oYYK9tx-1HLSEV4AaABAg",
  "text": "❤️❤❤❤❤😂😂❤😂❤❤❤",
  "author_name": "@M****************",
  "likes": 0,
  "likes_text": "0",
  "reply_count": 0,
  "is_reply": false,
  "published_time_text": "35 seconds ago",
  "published_at": "2026-10-05T16:14:55.889Z",
  "position": 2,
  "sort_by": "newest",
  "scraped_at": "2026-10-05T16:15:30.889Z"
}
```

A free status row for a video with comments turned off (never charged):

```json
{
  "_type": "status",
  "input": "https://www.youtube.com/watch?v=e_04ZrNroTo",
  "video_id": "e_04ZrNroTo",
  "status": "comments_off",
  "note": "Comments are turned off on this video. Not charged.",
  "video_title": "Wheels on the Bus | @CoComelon Nursery Rhymes & Kids Songs",
  "scraped_at": "2026-10-05T16:14:19.852Z"
}
```

### Pricing

Pay per event: you pay for the comment rows you receive, plus a flat $0.005 per run, whatever memory you choose.

Free plan runs return up to 10 results each; paid plans have no cap.

| Event | When it is charged | Free plan | Bronze (Starter) | Silver (Scale) | Gold (Business) |
|---|---|---|---|---|---|
| `comment-scraped` | Once per comment or reply row stored in your dataset | $0.20 per 1,000 | $0.20 per 1,000 | $0.20 per 1,000 | $0.20 per 1,000 |
| `run-start` | Once per run, when it starts | $0.005 | $0.005 | $0.005 | $0.005 |

The price per single comment is the price per 1,000 divided by 1,000. A reply is one row and costs the same as a top comment.

Never charged:

- videos with comments turned off, deleted, private or wrong video IDs, and channel or playlist links (each gets a free status row);
- requests YouTube refused, and videos the run could not read;
- a comment that already appeared earlier in the same video (dropped before delivery);
- anything past your "Max cost per run": the actor stops delivering when your limit is reached instead of sending rows for free.

### FAQ

#### What do I get on the free plan?

On Apify's free plan every run returns the first 10 results as a preview, so you can check the data and the fields before you pay. A paid Apify plan returns every result with no cap: https://apify.com/pricing?fpr=ymnoit

#### What exactly does this actor read?

The public comments section under a YouTube video or Short, the same list a visitor sees without signing in: top comments, and their replies if you ask for them. It reads YouTube's own web API (the requests the YouTube website makes when you scroll the comments), not the YouTube Data API, so there is no daily quota and no API key.

#### Does it work on Shorts?

Yes. Paste Shorts links (`https://www.youtube.com/shorts/...`) or their IDs in the same `videos` list. Our test read 100 rows from a MrBeast Short, including the creator's pinned comment and 74 replies.

#### How many comments can I get from one video?

From 10 to 20,000 rows per video, set with `maxComments`. YouTube serves 20 comments per request. The total YouTube shows under a video counts replies too, so with replies off you get fewer rows than that number.

#### How long does a run take?

In our tests one video gave 400 top comments in 31 seconds, and 4 videos gave 400 rows with replies in 31 seconds (replies come 10 to 50 per request, so they are slower per row). Five videos are read at the same time. We have not timed a 20,000 comment video; at about 1.5 seconds per request it would take roughly 25 minutes, well inside the default one hour timeout.

#### Are like counts and dates exact?

Like counts below 1,000 are exact. Above that YouTube only shows a rounded figure (`7.5K`, `323K`), so `likes` is that figure as a number and `likes_text` keeps the original. YouTube shows comment dates as relative times (`3 weeks ago`); `published_at` turns that into an ISO date from the moment of the run, so it is as exact as the unit shown: minutes for new comments, a year for old ones.

#### Do I need a YouTube account, cookies or an API key?

No. Nothing to log in to and nothing to paste. The actor never signs in and never asks for your cookies.

#### Do I need to set up a proxy?

No. The actor uses Apify's datacenter proxy on its own: each video is read on its own IP, and a refused request is retried on a new one. There is no proxy setting to choose.

#### What happens with a private, deleted or comments off video?

You get one free status row for that video, with `status` set to `not_found`, `comments_off`, `no_comments_section` or `no_comments`, and a plain `note`. Nothing is charged for it, and the other videos in the run are not affected. The `OUTPUT` record in the run's key value store lists the outcome of every video.

#### Can I monitor new comments over time?

Yes: set `sortBy` to `"newest"`, put a schedule on the actor (Apify Console, Schedules, every few hours or daily) and keep `maxComments` close to the number of new comments you expect between runs. The actor does not remember earlier runs, so remove the `comment_id` values you already stored on your side.

#### Which formats can I download?

JSON, CSV, Excel, XML, HTML table and RSS from the dataset page, or the same through the API. In CSV and Excel, filter on `_type` to drop the status rows.

#### Can I use it from Claude, ChatGPT or Cursor (MCP)?

- Connector URL: https://mcp.apify.com/?tools=themineworks/youtube-comments-scraper
- Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code: `claude mcp add -t http youtube-comments-scraper "https://mcp.apify.com/?tools=themineworks/youtube-comments-scraper"`

#### Is it legal to scrape YouTube comments?

The actor only reads comments that YouTube shows publicly to anyone without signing in. Comments carry the public handles of the people who wrote them, which can be personal data: you are responsible for how you use the data, for YouTube's terms, and for data protection law such as GDPR and CCPA. If in doubt, ask a lawyer about your use case.

### Integrations

- **Google Sheets**: send each run's rows to a sheet with Apify's Google Sheets integration, or import the CSV link of the dataset.
- **Make, Zapier and n8n**: start the actor and read its dataset with the Apify apps and nodes, for example "new comments to Slack".
- **Webhooks**: have Apify call your URL when a run succeeds, then fetch the dataset.
- **API and SDKs**: run it from Python or JavaScript with the Apify client, or with a plain HTTP call (see "Copy to your AI assistant" above).
- **MCP clients**: Claude, ChatGPT, Cursor and VS Code can run it as a tool through the connector URL in the FAQ.

### More from The Mine Works

**Social media and video**

- [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Followers & Following](https://apify.com/themineworks/instagram-followers-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Search Scraper](https://apify.com/themineworks/reddit-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Twitter / X Scraper](https://apify.com/themineworks/twitter-x-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [YouTube Transcript](https://apify.com/themineworks/youtube-transcript-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Xiaohongshu (RED) Scraper](https://apify.com/themineworks/xiaohongshu-explore-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Telegram Channel Scraper](https://apify.com/themineworks/telegram-channel-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Telegram Channel Finder](https://apify.com/themineworks/telegram-channel-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Pinterest Profile Scraper](https://apify.com/themineworks/pinterest-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Leads and business directories**

- [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Skip Trace Lookup](https://apify.com/themineworks/skip-trace-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [2GIS Places Scraper](https://apify.com/themineworks/2gis-places-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Marketing, SEO and reviews**

- [Facebook Ad Library Scraper](https://apify.com/themineworks/meta-ad-library-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Ads Transparency Scraper](https://apify.com/themineworks/google-ads-transparency?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Similarweb Scraper](https://apify.com/themineworks/similarweb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google News Scraper](https://apify.com/themineworks/google-news?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**LinkedIn**

- [LinkedIn Company Scraper](https://apify.com/themineworks/linkedin-company-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Post Scraper](https://apify.com/themineworks/linkedin-post-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Employees Scraper](https://apify.com/themineworks/linkedin-employees?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Profile Scraper](https://apify.com/themineworks/linkedin-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Real estate**

- [Zillow Rentals Scraper](https://apify.com/themineworks/zillow-rental-listings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow Sold Comps Scraper](https://apify.com/themineworks/zillow-recently-sold?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Real Estate MCP](https://apify.com/themineworks/india-real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Housing.com Scraper](https://apify.com/themineworks/housing-com-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Science, health and government data**

- [Academic Research MCP](https://apify.com/themineworks/academic-research-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [CourtListener Scraper](https://apify.com/themineworks/courtlistener-court-records?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Socrata Open Data Scraper](https://apify.com/themineworks/socrata-open-data?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [OpenAlex Scraper](https://apify.com/themineworks/openalex-scholarly-works?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Jobs and hiring**

- [Foundit Monster India Jobs](https://apify.com/themineworks/foundit-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Hirist Jobs Scraper](https://apify.com/themineworks/hirist-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Jobs MCP](https://apify.com/themineworks/india-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naukri Jobs Scraper](https://apify.com/themineworks/naukri-jobs?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Company and business data**

- [Company Domain Finder](https://apify.com/themineworks/company-domain-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GST Taxpayer Lookup](https://apify.com/themineworks/gst-taxpayer-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Company KYB Resolver](https://apify.com/themineworks/company-identity-resolver?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [SEC EDGAR Filings Scraper](https://apify.com/themineworks/sec-edgar-filings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**E-commerce and marketplaces**

- [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Etsy Listings Scraper](https://apify.com/themineworks/etsy-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Food and local services**

- [NoBroker Scraper](https://apify.com/themineworks/nobroker-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Swiggy Restaurant Scraper](https://apify.com/themineworks/swiggy-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zomato Scraper](https://apify.com/themineworks/zomato-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Developer and AI tools**

- [Website to Markdown Crawler](https://apify.com/themineworks/rag-crawler?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Skill Finder](https://apify.com/themineworks/github-skill-discovery?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Repo Scraper](https://apify.com/themineworks/github-repo-intelligence?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Trending Scraper](https://apify.com/themineworks/github-trending-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**More tools**

- [G2 Reviews Scraper](https://apify.com/themineworks/g2-reviews-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naver Blog Scraper](https://apify.com/themineworks/naver-blog-posts-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [WeChat Article Scraper 微信公众号文章](https://apify.com/themineworks/wechat-article-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Taobao Products Scraper 淘宝 天猫](https://apify.com/themineworks/taobao-products-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

### Support

Found a video that should work and does not? Open an issue in the Issues tab with the link and the run ID, and we will look at it. For a new source or a field you need, email dmineworks@gmail.com.

*Paste YouTube video or Shorts links, choose top or newest and whether you want replies, and get every comment back as a clean row with its author, likes, flags and video title.*

# Actor input Schema

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

Public YouTube videos to read comments from, up to 1,000 per run. Video links (https://www.youtube.com/watch?v=..., https://youtu.be/..., mobile and music links), Shorts links (https://www.youtube.com/shorts/...), live and embed links, and 11 character video IDs all work. Channel and playlist links are skipped, listed in the run summary and never charged.

## `maxComments` (type: `integer`):

Most comment rows to return for each video, counting top level comments and replies together. YouTube serves 20 comments per request. From 10 to 20,000.

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

Top: the order YouTube shows by default, with the pinned comment and the most liked comments first. Newest: most recent comments first, useful for monitoring.

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

Also return the replies under each comment, right after the comment they answer. Each reply is its own row with parent_comment_id set, and counts toward Max comments per video.

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

Only with Include replies. Most replies to return under one comment. YouTube serves the first 10 replies in one request and about 50 in each later one. From 1 to 1,000.

## Actor input object example

```json
{
  "videos": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  ],
  "maxComments": 100,
  "sortBy": "top",
  "includeReplies": false,
  "maxRepliesPerComment": 10
}
```

# Actor output Schema

## `comments` (type: `string`):

No description

## `summary` (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"
    ],
    "maxComments": 100,
    "sortBy": "top",
    "includeReplies": false,
    "maxRepliesPerComment": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/youtube-comments-scraper").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"],
    "maxComments": 100,
    "sortBy": "top",
    "includeReplies": False,
    "maxRepliesPerComment": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/youtube-comments-scraper").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"
  ],
  "maxComments": 100,
  "sortBy": "top",
  "includeReplies": false,
  "maxRepliesPerComment": 10
}' |
apify call themineworks/youtube-comments-scraper --silent --output-dataset

```

## MCP server setup

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

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/pSOO7QB7ddtGBasiP/builds/KxsxejQut1Pifwz8l/openapi.json
