# YouTube Channel Email Scraper — Verified Contacts (`korado_labs/youtube-channel-email-scraper`) Actor

Find business emails for YouTube channels: scrapes channel about pages, crawls linked websites and socials, then verifies deliverability. Export scraped data, run the scraper via API, schedule and monitor runs, or integrate with other tools.

- **URL**: https://apify.com/korado\_labs/youtube-channel-email-scraper.md
- **Developed by:** [Korado Labs](https://apify.com/korado_labs) (community)
- **Categories:** Lead generation, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 channel scrapeds

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?

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 Email Scraper — Emails, Socials & Full Channel Stats

Turn a list of YouTube channels into a clean contact + analytics sheet. For each
channel you give it (handle, URL, or channel ID) this Actor returns the creator's
**contact emails**, their **website and every social link**, and **full channel
stats** — subscribers, videos, total views, country, join date, description and
avatar — in one structured record.

No logged-in Google accounts. No CAPTCHA solving. It reads the public channel
`/about` page and crawls the creator's own website for emails, so it stays cheap
and reliable instead of breaking when account fleets get flagged.

### What you get per channel

| Field | Example |
|---|---|
| `title`, `handle`, `channelId` | `Marques Brownlee`, `@mkbhd`, `UCBJyc…` |
| `subscriberCount`, `videoCount`, `totalViews` | `21200000`, `1800`, `3535540` |
| `country`, `joinedDate` | `United States`, `Mar 21, 2008` |
| `description`, `avatar` | full about text, avatar image URL |
| `website` | the creator's own site (not a social link) |
| `links` | every external link with its label (Twitter, Instagram, Discord, store…) |
| `emails` | all contact emails found (deduped, own-domain first) |

### Input

```json
{
  "channels": ["@MrBeast", "https://www.youtube.com/@mkbhd", "UCXuqSBlHAE6Xw-yeJA0Tunw"],
  "scrapeWebsiteEmails": true
}
```

- `channels` — @handles, channel URLs, or `UC…` IDs (mixed freely).
- `scrapeWebsiteEmails` — crawl each creator's website for emails (default `true`).
- `maxChannels` — optional cap. `requestTimeoutSecs` — per-request timeout.
- `proxy` — optional; **not required** (channel pages work from datacenter IPs).

Run with no input and it demos on three well-known channels, so you can see the
output shape immediately.

### Pricing (pay per result, not per attempt)

| Event | Price |
|---|---|
| Channel scraped (full metadata + links) | **$0.02** |
| Email found (channel yields ≥1 email) | **$0.08** |

A channel with a contact email costs **$0.10** — less than the common **$0.12/email**
elsewhere — and you also get full stats, every social link, and *all* emails found,
not just one. Channels with no email cost only $0.02. **Failed runs charge nothing.**

Example: 1,000 channels, 600 with an email → 1,000 × $0.02 + 600 × $0.08 = **$68**.

### How it finds emails (honest note)

Emails come from **(1)** the creator's linked website (homepage + contact/about
pages) and **(2)** any email published in the channel description. This finds more
contacts for creators who list a website, and it never depends on logged-in
accounts. It does **not** click YouTube's login-gated "View email address" reveal,
so for a creator who exposes an email *only* behind that button and lists no
website, `emails` may be empty — you still get their full stats and social links to
reach them another way.

### Use cases

- Influencer & sponsorship outreach — build creator contact lists at scale.
- Agency lead gen — channel → website → verified email pipelines.
- Creator analytics — subscribers, video counts, views and country for scoring.
- Enrich an existing handle list with emails, socials and stats in one pass.

# Actor input Schema

## `channels` (type: `array`):

Channels to scrape. Accepts @handles (e.g. "@MrBeast"), channel URLs (https://www.youtube.com/@MrBeast or /channel/UC...), or raw channel IDs (UC...).

## `scrapeWebsiteEmails` (type: `boolean`):

For channels that link to their own website, crawl the homepage + contact/about pages and extract contact emails. Turn off to only read emails published in the channel description.

## `maxChannels` (type: `integer`):

Optional hard cap on how many channels to process from the list (0 = no cap).

## `requestTimeoutSecs` (type: `integer`):

Per-request timeout for channel pages and website crawls.

## `proxy` (type: `object`):

Optional. YouTube /about pages work from datacenter IPs, so a proxy is NOT required. Enable it only for very large lists where IP rotation helps avoid rate limits.

## Actor input object example

```json
{
  "channels": [
    "@MrBeast",
    "@mkbhd",
    "https://www.youtube.com/@LinusTechTips"
  ],
  "scrapeWebsiteEmails": true,
  "maxChannels": 0,
  "requestTimeoutSecs": 25,
  "proxy": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

One record per channel with metadata, links and emails.

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

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

# Run the Actor and wait for it to finish
run = client.actor("korado_labs/youtube-channel-email-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 '{
  "channels": [
    "@MrBeast",
    "@mkbhd",
    "https://www.youtube.com/@LinusTechTips"
  ]
}' |
apify call korado_labs/youtube-channel-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,korado_labs/youtube-channel-email-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/r4TQoZYiRe84cQglD/builds/r8vdlW2Ivivzxdcr4/openapi.json
