# Youtube Channel Scraper V2 \[FAST] | Subs, Stats & Contact (`apizy/youtube-channel-scraper-v2`) Actor

Scrape YouTube channel subscribers, views, engagement rate, email, and social links — 2x faster than previous version. Transparent pay-per-success pricing — $0.005 per channel, only when it succeeds. Never charged for failures. 100 channels = $0.50. No subscriptions, no hidden fees.

- **URL**: https://apify.com/apizy/youtube-channel-scraper-v2.md
- **Developed by:** [Apizy](https://apify.com/apizy) (community)
- **Categories:** Social media, Lead generation, Videos
- **Stats:** 98 total users, 24 monthly users, 100.0% runs succeeded, 10 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $4.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## YouTube Channel Scraper Fast

Scrape any YouTube channel and get complete data including subscribers, engagement stats, contact info, and social links. Runs about 2x faster than the standard version. Works on any channel URL format and returns clean JSON in seconds.

[![Introduction to YouTube Channel Scraper](https://img.youtube.com/vi/CJykusoOJ1s/0.jpg)](https://youtu.be/CJykusoOJ1s?si=Lx24ZB8Bq_ilVjda "Introduction to YouTube Channel Scraper")

You are only charged for channels that come back with real data. Failed requests and empty results are free.

### What does YouTube Channel Scraper Fast do?

YouTube Channel Scraper Fast pulls complete channel data using a lightweight approach that skips heavy browser rendering where it is not needed. Same output as the standard version, significantly less waiting.

It can extract:

- Channel name, handle, channel URL, channel ID, and verification status
- Subscriber count, total videos, and all-time total views
- Engagement rate, average views per video, estimated monthly views, and upload frequency
- Country, join date, and full channel description
- Recent video activity and last upload date
- Contact info: email, Instagram, Twitter, TikTok, Facebook, and LinkedIn (optional)

### Why Use the Fast Version?

When you are scraping dozens or hundreds of channels in one run, the difference between 12 seconds and 6 seconds per channel adds up fast. This version is built for throughput: quick screening, large lists, and automation pipelines where waiting is the bottleneck.

If you need the highest possible data accuracy or are running a small batch where speed is not a concern, the standard [YouTube Channel Scraper](https://apify.com/apizy/youtube-channel-scraper) is the better pick.

Here are some ways you could use this data:

- Screen large lists of channels quickly before doing deeper research
- Build lead lists for influencer marketing or brand outreach at scale
- Find channels in specific niches for sponsorship targeting
- Track competitor channels and monitor their growth over time
- Feed channel data into CRMs, spreadsheets, or automation tools like Make, n8n, or Zapier
- Score and rank channels by engagement rate before reaching out

### How to Use

Scraping a YouTube channel takes about 6 seconds per channel. No setup needed beyond the channel URL.

1. Click **Try for free**
2. Enter one or more YouTube channel URLs
3. Optionally enable **Extract Contact Info** to pull email and social links from the channel page
4. Click **Run**
5. When done, preview or download your data from the Dataset tab

For runs over 100 channels, set **No timeout** in Run options so the run is not cut off early.

[![How to Use YouTube Channel Scraper](https://img.youtube.com/vi/VuPg-AKlThA/0.jpg)](https://www.youtube.com/watch?v=VuPg-AKlThA "How to Use YouTube Channel Scraper")

### Input

```json
{
  "startUrls": ["https://www.youtube.com/@mkbhd"]
}
```

**Batch with contact info**

```json
{
  "startUrls": [
    "https://www.youtube.com/@mkbhd",
    "https://www.youtube.com/@LinusTechTips",
    "https://www.youtube.com/channel/UCIEv3lZ_tNXHzL3ox-_uUGQ"
  ],
  "extractContactInfo": true
}
```

#### Input Fields

| Field                | Type    | Default | Description                                                                                      |
| -------------------- | ------- | ------- | ------------------------------------------------------------------------------------------------ |
| `startUrls`          | array   | none    | YouTube channel URLs **(required)**. Supports `/@handle`, `/channel/ID`, `/c/name`, `/user/name` |
| `extractContactInfo` | boolean | `true`  | Extract email and social links from the channel page                                             |

### Output

Each channel is saved as one item in the Dataset. The run summary goes to the Key-Value Store under `OUTPUT`.

**Channel item**

```json
{
  "channelName": "Marques Brownlee",
  "handle": "@mkbhd",
  "channelUrl": "https://www.youtube.com/@mkbhd",
  "channelId": "UCBJycsmduvYEL83R_U4JriQ",
  "isVerified": true,
  "country": "United States",
  "joinedDate": "2008-03-21",
  "description": "MKBHD: Quality Tech Videos | YouTuber | Geek | Consumer Electronics | Tech Head | Internet Personality!\n\nbusiness@MKBHD.com\n\nNYC",
  "stats": {
    "subscribers": 20900000,
    "totalVideos": 1811,
    "totalViews": 5327446410,
    "avgViewsPerVideo": 2941715,
    "estimatedMonthlyViews": 24710406,
    "uploadFrequencyPerMonth": 8.4,
    "engagementRate": 14.08,
    "lastUploadDate": "2026-03-30"
  },
  "contactInfo": {
    "email": "business@MKBHD.com",
    "instagram": "https://instagram.com/MKBHD",
    "twitter": "https://twitter.com/MKBHD",
    "tiktok": null,
    "facebook": null,
    "linkedin": null
  },
  "scrapedAt": "2026-03-31T13:12:21.407Z"
}
```

**Run summary**

```json
{
  "summary": {
    "total": 3,
    "successCount": 3,
    "failedCount": 0,
    "totalCharged": 0.015,
    "startedAt": "2026-06-28T10:00:00.000Z",
    "finishedAt": "2026-06-28T10:01:00.000Z",
    "totalDurationSeconds": 60
  }
}
```

#### Output Fields

**Channel identity**

| Field         | Description                                 |
| ------------- | ------------------------------------------- |
| `channelName` | Display name of the channel                 |
| `handle`      | YouTube handle (e.g. `@mkbhd`)              |
| `channelUrl`  | Canonical channel URL                       |
| `channelId`   | YouTube internal channel ID                 |
| `isVerified`  | Whether the channel has a verified badge    |
| `country`     | Country set by the channel owner            |
| `joinedDate`  | Date the channel was created (`YYYY-MM-DD`) |
| `description` | Full channel description text               |
| `scrapedAt`   | ISO timestamp of when the data was scraped  |

**Stats** (nested inside each channel item)

| Field                     | Description                                              |
| ------------------------- | -------------------------------------------------------- |
| `subscribers`             | Total subscriber count as an integer                     |
| `totalVideos`             | Total published videos (exact count)                     |
| `totalViews`              | All-time total views                                     |
| `avgViewsPerVideo`        | `totalViews / totalVideos`                               |
| `estimatedMonthlyViews`   | Estimated average monthly views                          |
| `uploadFrequencyPerMonth` | Average uploads per month since channel creation         |
| `engagementRate`          | `(avgViewsPerVideo / subscribers) x 100`, capped at 100% |
| `lastUploadDate`          | Date of the most recent video (`YYYY-MM-DD`)             |

**Contact info** (nested, only when `extractContactInfo` is `true`)

| Field       | Description                       |
| ----------- | --------------------------------- |
| `email`     | Email extracted from channel page |
| `instagram` | Instagram profile URL             |
| `twitter`   | Twitter/X profile URL             |
| `tiktok`    | TikTok profile URL                |
| `facebook`  | Facebook page URL                 |
| `linkedin`  | LinkedIn profile URL              |

### Pricing

Pay per successfully scraped channel. Failed requests are free.

| Channels | Cost  | Est. time |
| -------- | ----- | --------- |
| 10       | $0.05 | ~1 min    |
| 100      | $0.50 | ~7 min    |
| 500      | $2.50 | ~35 min   |
| 1,000    | $5.00 | ~70 min   |

$0.005 per channel.

For runs over 100 channels, set **No timeout** in Run options.

### Notes

- All channel URL formats work: `/@handle`, `/channel/ID`, `/c/name`, `/user/name`.
- Subscriber and video counts are exact integers (`20900000`), not rounded strings like `"20M"`. Ready to sort, filter, and calculate without extra parsing.
- Contact info extraction is email-first. Emails are pulled directly from the channel page, useful for outreach without additional enrichment tools.
- Output is structured JSON, directly compatible with Make, n8n, Zapier, and Google Sheets.
- Invalid URLs are skipped and logged. The run continues without interruption.
- If you need higher data reliability over speed, use [YouTube Channel Scraper](https://apify.com/apizy/youtube-channel-scraper) instead.

### More Actors You Might Like

Built by the same team and backed by the same transparent pricing philosophy: no hidden attempts, no wasted credits, no charge for failed results.

| Actor                                                                                | Description                                                                                          |
| ------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------- |
| [YouTube Channel Scraper](https://apify.com/apizy/youtube-channel-scraper)           | Same channel data with higher accuracy. Better when data quality matters more than speed.            |
| [YouTube Video Scraper](https://apify.com/apizy/youtube-video-scraper)               | Scrape all videos from a channel with views, durations, thumbnails, and per-video insights.          |
| [YouTube Video Detail Scraper](https://apify.com/apizy/youtube-video-detail-scraper) | Full video metadata: views, likes, comments, keywords, duration, and engagement insights.            |
| [YouTube Comment Scraper](https://apify.com/apizy/youtube-comment-scraper)           | Scrape comments from any video with author details, like counts, reply counts, and engagement flags. |
| [YouTube Transcript Scraper](https://apify.com/apizy/youtube-transcript-scraper)     | Extract the full transcript from any YouTube video, with optional timestamps per segment.            |

### Get in Touch

Have questions, need custom scraping solutions, or want to integrate with your existing stack? We're here to help!

- **Email:** apizy.studio@gmail.com

We build custom scraping solutions tailored to your specific needs that are fast, reliable, and transparent.

# Actor input Schema

## `startUrls` (type: `array`):

List of YouTube channel URLs or handles to scrape. Supports /@handle, /channel/ID, /c/name formats.

## `extractContactInfo` (type: `boolean`):

Extract emails, social links, and website from channel description.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.youtube.com/@mkbhd",
    "https://www.youtube.com/@LinusTechTips"
  ],
  "extractContactInfo": true
}
```

# Actor output Schema

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

Dataset containing enriched data per scraped YouTube channel.

## `output` (type: `string`):

Complete run output including summary and all channel results.

# 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 = {
    "startUrls": [
        "https://www.youtube.com/@mkbhd",
        "https://www.youtube.com/@LinusTechTips"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("apizy/youtube-channel-scraper-v2").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 = { "startUrls": [
        "https://www.youtube.com/@mkbhd",
        "https://www.youtube.com/@LinusTechTips",
    ] }

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

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://www.youtube.com/@mkbhd",
    "https://www.youtube.com/@LinusTechTips"
  ]
}' |
apify call apizy/youtube-channel-scraper-v2 --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=apizy/youtube-channel-scraper-v2",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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