# YouTube Email Scraper (`seemuapps/youtube-email-scraper`) Actor

Find publicly-posted contact emails from any YouTube channel — scans channel descriptions and recent video descriptions in bulk.

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

## Pricing

from $50.00 / 1,000 youtube channel scanneds

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 Email Scraper

Find publicly-posted contact emails from any YouTube channel - scans channel About descriptions and recent video descriptions in bulk.

### What you get

For every YouTube channel you submit, one dataset row with:

- **emails** - deduplicated list of every email address found (lowercased, cleaned of trailing punctuation, no-reply/example/image-domain false positives filtered out)
- **emailSources** - audit trail showing whether each match came from the channel description or a specific video description (with the video's URL and title)
- **channelId, channelName, channelUrl** - canonical channel identity
- **channelDescription** - the channel's About description (truncated to 1000 chars)
- **subscriberCount** - public subscriber/follower count
- **videosScanned** - how many recent video descriptions were actually scanned
- **status** - `success` or `error`, plus an `error` message if something went wrong

### Use cases

- **Sponsorship outreach** - build a contact list of creators in your niche for brand deal pitches
- **Podcast booking** - find creators publishing their email so you can pitch them as guests
- **Sales prospecting** - identify creators who run businesses or agencies and reach the right inbox
- **Agency partnerships** - source talent for management or representation deals
- **Journalism and research** - contact creators directly for interviews, quotes, or story leads

### How to use

1. Paste channel URLs or handles into **YouTube Channel URLs** - `@mkbhd`, `https://www.youtube.com/@mkbhd`, `/c/`, `/user/`, or `/channel/UC...` formats all work
2. Set **Max Videos to Scan** (default 5) - how many recent video descriptions to check per channel; set 0 to scan only the About page
3. Leave **Proxy Mode** on **Residential** (default) - switch to **Auto** if you want to try cheaper paths first
4. Run the actor - one dataset row per channel appears in the **Dataset** tab
5. Export to JSON, CSV, or Google Sheets directly from the Apify console

### Output format

Each dataset record:

```json
{
  "inputUrl": "@mkbhd",
  "channelId": "UCBJycsmduvYEL83R_U4JriQ",
  "channelName": "Marques Brownlee",
  "channelUrl": "https://www.youtube.com/@mkbhd",
  "channelDescription": "MKBHD: Quality Tech Videos | YouTuber/Host…",
  "subscriberCount": 19500000,
  "emails": ["business@example.com"],
  "emailSources": [
    {
      "email": "business@example.com",
      "source": "videoDescription",
      "videoUrl": "https://www.youtube.com/watch?v=abc123",
      "videoTitle": "Video title here"
    }
  ],
  "videosScanned": 5,
  "proxyUsed": "residential",
  "status": "success",
  "error": null
}
```

### Notes & limits

- **Up to 10 channels per run.** For larger jobs, schedule multiple runs.
- **Only scrapes publicly-visible emails** - emails behind YouTube's "View email" captcha button on the channel About page are not accessible programmatically.
- **Email coverage depends on the creator** - some put their email in every video description, others only in the About page, and some don't post one at all. An empty `emails` list with `status: "success"` means we scanned the channel but found nothing public.
- **For best coverage, set Max Videos to 5-10** (default 5). Higher values find more emails but each run takes longer.
- **Channel descriptions are truncated to 1000 characters** in the output - emails are extracted from the full text before truncation.
- **Use the emails you find responsibly - comply with the recipient's stated contact preferences, the CAN-SPAM Act, GDPR, and YouTube's Terms of Service.**

### Related YouTube actors

Part of a complete YouTube toolkit - explore the rest of the suite:

- [YouTube Channel Videos Scraper](https://apify.com/seemuapps/youtube-channel-videos-scraper) - List every video on a channel with metadata
- [YouTube Video Metadata Scraper](https://apify.com/seemuapps/youtube-video-metadata-scraper) - Bulk video metadata - views, tags, chapters, more
- [YouTube Transcript Scraper](https://apify.com/seemuapps/youtube-transcript-scraper) - Full transcripts and timestamped captions
- [YouTube Comment Insights](https://apify.com/seemuapps/youtube-comment-insights) - Sentiment, keywords, and topics from comments
- [YouTube Channel Growth Analyzer](https://apify.com/seemuapps/youtube-channel-growth-analyzer) - Growth metrics, cadence, and best posting time
- [YouTube Similar Channels Finder](https://apify.com/seemuapps/youtube-similar-channels-finder) - Find similar and competitor channels
- [YouTube Sponsorship & Brand Deal Tracker](https://apify.com/seemuapps/youtube-sponsorship-tracker) - Extract sponsors, brand deals, and promo codes
- [YouTube Creator Contact Finder](https://apify.com/seemuapps/youtube-creator-contact-finder) - Find a creator's email and social links
- [YouTube Thumbnail Downloader](https://apify.com/seemuapps/youtube-thumbnail-downloader) - Download video thumbnails in every size
- [YouTube Video Downloader](https://apify.com/seemuapps/youtube-video-downloader) - Download videos as MP4 up to 1440p
- [YouTube to MP3 Converter](https://apify.com/seemuapps/youtube-to-mp3) - Convert videos to MP3 audio (128-320 kbps)
- [YouTube MCP Server](https://apify.com/seemuapps/youtube-mcp) - All YouTube tools for AI agents via MCP

# Actor input Schema

## `channelUrls` (type: `array`):

YouTube channel URLs or handles. Accepts @handle, /c/, /channel/, /user/, or full URL. Up to 10 per run.

## `maxVideosToScan` (type: `integer`):

Number of recent videos to scan per channel. 0 = scan only the About description. Higher values find more emails but take longer.

## `proxyMode` (type: `string`):

Residential is the default and works for most YouTube content. Auto tries no proxy first, then datacenter, then residential - useful only if you want to save proxy bandwidth on channels that happen to fetch without one.

## Actor input object example

```json
{
  "channelUrls": [
    "@mkbhd"
  ],
  "maxVideosToScan": 5,
  "proxyMode": "residential"
}
```

# Actor output Schema

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

One record per channel: inputUrl, channelId, channelName, channelUrl, channelDescription, subscriberCount, emails (deduplicated), emailSources (audit trail with source + video URL/title), videosScanned, proxyUsed, status (success|error), error.

# 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 = {
    "channelUrls": [
        "@mkbhd"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("seemuapps/youtube-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 = { "channelUrls": ["@mkbhd"] }

# Run the Actor and wait for it to finish
run = client.actor("seemuapps/youtube-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 '{
  "channelUrls": [
    "@mkbhd"
  ]
}' |
apify call seemuapps/youtube-email-scraper --silent --output-dataset

```

## MCP server setup

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