# YouTube Channel Email Scraper: Hidden Business Emails (`creatorlens/youtube-channel-email-scraper`) Actor

Reveal the real business email behind YouTube's "View email address" button, from channel URLs, @handles or IDs. From $0.10 per email found, nothing charged when there is no email.

- **URL**: https://apify.com/creatorlens/youtube-channel-email-scraper.md
- **Developed by:** [CreatorLens](https://apify.com/creatorlens) (community)
- **Categories:** Lead generation, Social media
- **Stats:** 6 total users, 4 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $100.00 / 1,000 email (cached)s

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 Channel Email Scraper: Hidden Business Emails

![Reveal the email behind YouTube's "View email address" button](https://api.apify.com/v2/key-value-stores/gAlbyeZrHZvUFkmBd/records/hero-a0fa68ed.png)

Get the **real business email** YouTube creators publish for sponsorships and inquiries: the one hidden behind the **"View email address"** button on their channel page.

Most YouTube email scrapers only read what is visible on the page: descriptions, link lists, guesses. The business email is not visible. It needs a signed-in Google account and a reCAPTCHA solve. This actor does both for you, **from $0.10 per email found**. Channels without an email cost nothing.

### 🎬 See it in action

A real, unedited reveal (sped up 1.6×): the About dialog, the "View email address" button, the reCAPTCHA solved automatically, then the email.

![A live reveal: About dialog, reCAPTCHA solved automatically, business email shown](https://api.apify.com/v2/key-value-stores/gAlbyeZrHZvUFkmBd/records/demo-fc57e25f.gif)

### 🎯 Who it's for

- **Influencer marketing**: build contact lists of creators for brand deals and product seeding
- **Sponsorship sales**: reach channels in your niche with the address they set up for exactly this
- **Agencies**: enrich client creator lists in bulk, on a schedule or through the API
- **Creator platforms and CRMs**: keep creator contact data fresh

### ⚙️ How it works

![How it works](https://api.apify.com/v2/key-value-stores/gAlbyeZrHZvUFkmBd/records/how-it-works-e2eaad18.png)

1. **Paste channels.** Channel URLs, @handles or channel IDs, up to 1,000 per run. Start as many runs in parallel as you need.
2. **We reveal the email.** Signed-in accounts open each channel, click "View email address" and solve the CAPTCHA. Channels we checked recently come back in seconds; new ones are revealed live.
3. **Export and reach out.** Each row has the email plus subscribers, views, country and more. Download CSV, Excel or JSON, or read the dataset through the Apify API.

**No paying for idle runs.** Channels we already know come back right away. If the queue is free and your batch is small, the run waits a few minutes and delivers the live reveals too. Otherwise channels that need a live reveal are queued and marked `EMAIL_PENDING`, the run ends at once, and the log tells you when they should be ready. **Resurrect** the run later (one click, or `POST /v2/actor-runs/{runId}/resurrect` from your code) and it collects them, without submitting or charging anything twice.

### 📤 What you get

![Sample output](https://api.apify.com/v2/key-value-stores/gAlbyeZrHZvUFkmBd/records/output-87283d9a.png)

```json
{
  "Avatar": "https://yt3.googleusercontent.com/...",
  "Query": "https://www.youtube.com/@TheDiaryOfACEO",
  "ChannelId": "UCGq-a57w-aPwyi3pW7XLiHw",
  "Email": "bookings@stevenbartlett.com",
  "Status": "EMAIL_AVAILABLE",
  "EmailSource": "CACHE",
  "ChannelHandle": "@TheDiaryOfACEO",
  "SubscriberCount": 20400000,
  "ChannelName": "The Diary Of A CEO",
  "Country": "United Kingdom",
  "TotalViews": 1910797932,
  "TotalVideosCount": 927,
  "ChannelUrl": "https://www.youtube.com/channel/UCGq-a57w-aPwyi3pW7XLiHw"
}
```

| Status | Meaning | Charged |
|---|---|---|
| `EMAIL_AVAILABLE` | Email found, see `EmailSource` | ✅ $0.10 or $0.20 |
| `EMAIL_NOT_FOUND` | The channel has no business email | Free |
| `EMAIL_PENDING` | Queued for a live reveal when the run ended. Resurrect the run to collect it | $0.20, paid now; the email is delivered free later |
| `CHANNEL_NOT_FOUND` | The URL or handle does not match any channel | Free |
| `COST_LIMIT_REACHED` | Skipped: your **Maximum cost per run** could not cover a live reveal. Raise it and run again | Free |
| `DAILY_LIMIT_REACHED` | Skipped: over the daily limit of 20,000 channels per account. Run it tomorrow or contact us | Free |

| EmailSource | Where the email comes from | Price |
|---|---|---|
| `CACHE` | Revealed from "View email address" in the last 30 days | $0.10 |
| `PROFILE` | The channel's profile information (only with **Include profile emails** on) | $0.10 |
| `LIVE_REVEAL` | Revealed live from "View email address" for your run | $0.20 |

### 📝 Input

| Field | Description |
|---|---|
| **YouTube channels** | Channel URLs, @handles or channel IDs, 1–1,000 per run |
| **Include profile emails** | Off by default. Also return the email we already know from the channel's profile information, instantly at $0.10, including for channels with no hidden business email. It can differ from the "View email address" one (about 1 in 4 channels): leave it off when you need exactly that address |
| **Force Fresh Email Scrape** | Re-reveal every channel live, even ones checked in the last 30 days. Every email found is $0.20 |

Accepted formats:

- **Channel IDs** (most reliable): `UCX6OQ3DkcsbYNE6H8uQQuVA`
- **Channel URLs**: `https://www.youtube.com/@MrBeast`, `https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA`
- **Handles**: `@MrBeast`

```json
{
  "channels": ["@MrBeast", "https://www.youtube.com/@TheDiaryOfACEO", "UCR5k7bm0qgpP7-QX1uIx7cQ"],
  "use_profile_emails": false,
  "scrape_fresh_emails": false
}
```

### 💰 Pricing

![Pricing](https://api.apify.com/v2/key-value-stores/gAlbyeZrHZvUFkmBd/records/pricing-bd547112.png)

| | Price |
|---|---|
| Email from cache or profile (`CACHE`, `PROFILE`) | **$0.10** ($100 per 1,000) |
| Email revealed live (`LIVE_REVEAL`), and every email of a Force Fresh run | **$0.20** ($200 per 1,000) |
| Queued channel (`EMAIL_PENDING`): YouTube shows it has an email, so the live price is charged when it is queued | **$0.20**, nothing more when you collect it |
| Channel without email, or not found | Free |
| Asking again for a channel you paid for in the last 30 days (Resurrect or a new run) | Free |

No subscription and no per-seat fees. You never pay twice for the same channel within 30 days, however often you check on it. Set **Maximum cost per run** high enough for the emails you expect: once the limit is reached the run stops and the remaining channels are not charged.

### 🏢 For high-volume teams

- **Parallel runs**: 1,000 channels per run, as many runs as you like.
- **Fair queue**: live reveals are served round robin between customers, so a large batch from someone else never holds up yours.
- **Schedules**: run your creator lists daily or weekly with Apify Schedules. Turn on Force Fresh before a send to catch creators who changed their address.
- **API and integrations**: start runs and read results from your own pipeline, Make, Zapier or n8n.

### ❓ FAQ

**Do I pay for channels without a business email?**
No. You pay for rows with `EMAIL_AVAILABLE`, and for channels queued for a live reveal (`EMAIL_PENDING`), which YouTube shows have an email. Rarely (about 3%) a queued channel turns out to have none; that one stays charged.

**Why are some channels `EMAIL_PENDING`?**
They need a live reveal, which takes from a few minutes to a few hours for large batches. They stay in the queue after the run ends, and the run log shows when they should be ready. They were charged once ($0.20) when they were queued, since YouTube shows these channels have an email. Resurrect the run (not "Re-run from start") to collect them at no extra cost; already delivered rows are not repeated. Running the same channels again within 30 days is free too: you never pay twice for a channel. In the rare case the live reveal then finds no email, the row comes back as `EMAIL_NOT_FOUND`. From code, call `POST https://api.apify.com/v2/actor-runs/{runId}/resurrect`, wait for it to finish and read the dataset. Each channel gets one `EMAIL_PENDING` row and later one final row: keep the last row per `ChannelId`.

**When should I use Force Fresh Email Scrape?**
Rarely. Results up to 30 days old are reused at $0.10, which is usually fine for building lists. Use Force Fresh ($0.20 per email) right before a campaign if you need the creator's current address.

**What are profile emails?**
Emails we already know for a channel from its profile information: the channel description and links, and our creator database. With **Include profile emails** on they come back instantly at $0.10, also for channels that have no hidden business email. About 1 in 4 differ from the "View email address" one, for example a manager's address instead of the creator's; `EmailSource` tells you which is which. When a channel has a hidden email revealed in the last 30 days, that one is returned instead.

**Can I test with a few channels first?**
Yes. Try 5–10 channels to see the output before running a large list.

**How do I get the best hit rate?**
Submit channels that are likely to work with brands, such as creators that already run sponsorships. Very small or inactive channels rarely set a business email.

**Is this data public?**
The business email is published by the creator on their own YouTube channel for business inquiries. YouTube only shows it to signed-in users. Use it for relevant business outreach and follow the anti-spam laws that apply to you (CAN-SPAM, GDPR and similar).

**Something not working?**
Open an issue on this actor's page with your run ID and we'll look into it.

# Actor input Schema

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

Channel URLs, @handles or channel IDs (UC...), one per line, up to 1000 per run. Channel IDs are the most reliable, since handles can change.

## `use_profile_emails` (type: `boolean`):

Also use the email we already have for a channel from its profile information (description, links and our creator database). Comes back instantly at the cached price ($0.10), also for channels without a hidden business email. It may differ from the address behind "View email address" (about 1 in 4 channels), so leave it off when you need exactly that one. Ignored with Force Fresh.

## `scrape_fresh_emails` (type: `boolean`):

Ignore results from the last 30 days and reveal every channel live. Every email found is charged at the live price ($0.20). Most users don't need this.

## Actor input object example

```json
{
  "channels": [
    "@MrBeast",
    "https://www.youtube.com/@TheDiaryOfACEO",
    "UCR5k7bm0qgpP7-QX1uIx7cQ"
  ],
  "use_profile_emails": false,
  "scrape_fresh_emails": false
}
```

# Actor output Schema

## `emails` (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 = {
    "channels": [
        "@MrBeast",
        "https://www.youtube.com/@TheDiaryOfACEO",
        "UCR5k7bm0qgpP7-QX1uIx7cQ"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("creatorlens/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",
        "https://www.youtube.com/@TheDiaryOfACEO",
        "UCR5k7bm0qgpP7-QX1uIx7cQ",
    ] }

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,creatorlens/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/ixkzhpMKdLtLtyPWg/builds/wzCoG28mF7AUk7NqW/openapi.json
