# YouTube Email Scraper (Creator Emails & Socials) (`juliob.rangel/youtube-email-scraper`) Actor

Find public business emails of YouTube creators: search channels by keyword or paste a list, and get the email from the channel About text or the creator's website, plus subscribers, views, country and Instagram/TikTok/X links. You only pay for channels with an email.

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

## Pricing

from $7.00 / 1,000 channel with emails

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 Email Scraper (Creator Emails & Socials)

Find the public business email of YouTube creators in bulk. Type a niche keyword such as "home workout" or "skincare routine", or paste a list of channels, and this YouTube email scraper returns each creator's email together with subscribers, total views, country, website and Instagram, TikTok and X links. It is built for influencer marketing, sponsorship outreach and creator lead lists, and you can export the YouTube creator emails to Excel, CSV or Google Sheets.

You only pay for channels where an email was found.

### What does YouTube Email Scraper do?

For every channel, the scraper:

1. Finds the channel. You can give **keywords** (it uses YouTube's own channel search) or a **list of channels** as `@handles`, channel URLs (`youtube.com/@name`, `youtube.com/channel/UC...`) or channel IDs.
2. Reads the channel's About section: name, handle, subscribers, total views, video count, joined date, country, description and the external links the creator lists.
3. Looks for an email written in the About text. It also understands simple obfuscation like `name [at] domain [dot] com`.
4. If the About text has no email and the creator lists their own website, it opens the website's homepage and its `/contact` page and looks for an email there. Only the creator's own addresses are kept: an address on the same domain as the website, or a personal mailbox (Gmail, Outlook, Yahoo, iCloud, Proton and similar). Emails of shop plugins, agencies or platforms embedded in a page are dropped.
5. Returns one row per channel with the email, where it was found, and the social profiles.

It does **not** open YouTube's hidden "View email address" button, which needs a logged-in account and a captcha. It only collects emails the creator published openly.

### What data can you extract?

| Field | What it is | Example |
|---|---|---|
| `email` | First email found for the channel | `hello@thegamingsetup.com` |
| `emails` | All emails found for the channel | `["hello@thegamingsetup.com"]` |
| `emailSource` | Where the email was found: `channel description` or `website` | `website` |
| `channelName` | Channel name | `The Gaming Setup` |
| `handle` | Channel @handle | `@TheGamingSetupYT` |
| `url` | Channel URL | `https://www.youtube.com/@TheGamingSetupYT` |
| `channelId` | YouTube channel ID | `UCgXDSUnuFx-4JY17t27Lsrw` |
| `subscribers` | Subscriber count as a number | `1700` |
| `subscribersText` | Subscriber count as YouTube shows it | `1.7K subscribers` |
| `totalViews` | Total channel views | `2092663` |
| `videoCount` | Number of videos | `105` |
| `joinedDate` | Date the channel was created | `Mar 1, 2019` |
| `country` | Country set by the creator | `Canada` |
| `website` | The creator's own website, if listed | `https://thegamingsetup.com` |
| `socials` | Social profiles from the channel links: `instagram`, `tiktok`, `twitter`, `facebook`, `linkedin`, `twitch`, `discord`, `patreon`, `threads` | `{"twitter": "https://twitter.com/thegamingsetup"}` |
| `links` | All external links on the channel, with their titles | `[{"title": "Website", "url": "https://thegamingsetup.com"}]` |
| `description` | Channel About text | `Reviewing gaming mice, keyboards…` |
| `keywords` | Channel keywords | `""` |
| `isVerified` | Channel has the verified badge | `false` |
| `isFamilySafe` | YouTube's family-safe flag | `true` |
| `avatar` | Channel picture URL | `https://yt3.googleusercontent.com/…` |
| `banner` | Channel banner URL | `https://yt3.googleusercontent.com/…` |
| `input` | What you gave as input for this row (a channel ID when it came from a keyword search) | `UCgXDSUnuFx-4JY17t27Lsrw` |
| `scrapedAt` | When the row was collected | `2026-10-16T18:30:40.123Z` |

### How to use YouTube Email Scraper

1. Click **Try for free**.
2. In **Find channels by keyword**, type one niche per line (for example `home workout`, `personal finance`). Or paste channels in **Or paste channels**. You can use both.
3. Set **Max channels per keyword**. This is how many channels are checked, not how many emails you get.
4. Keep **Only return channels with an email** on to get a clean lead list.
5. Click **Start**. When the run finishes, open the **Output** tab and export as Excel, CSV, JSON or HTML.

### Input

- `searchQueries` (list of keywords): one search per line. Each keyword finds up to `maxChannelsPerSearch` channels with YouTube's channel search.
- `maxChannelsPerSearch` (number, default 50, max 500): how many channels to check per keyword.
- `channels` (list): @handles, channel URLs or channel IDs to check directly.
- `scanWebsites` (true/false, default true): when the About text has no email, also check the creator's own website.
- `onlyWithEmail` (true/false, default true): when on, only channels with an email are returned. When off, channels without an email are returned too, with `email: null`.
- `proxy`: Apify Proxy settings. The default works.

```json
{
  "searchQueries": ["home workout", "skincare routine"],
  "maxChannelsPerSearch": 100,
  "channels": ["@mkbhd"],
  "scanWebsites": true,
  "onlyWithEmail": true
}
```

### Output example

```json
{
  "channelName": "The Gaming Setup",
  "handle": "@TheGamingSetupYT",
  "url": "https://www.youtube.com/@TheGamingSetupYT",
  "channelId": "UCgXDSUnuFx-4JY17t27Lsrw",
  "email": "hello@thegamingsetup.com",
  "emails": ["hello@thegamingsetup.com"],
  "emailSource": "website",
  "subscribers": 1700,
  "subscribersText": "1.7K subscribers",
  "totalViews": 2092663,
  "videoCount": 105,
  "joinedDate": "Mar 1, 2019",
  "country": "Canada",
  "website": "https://thegamingsetup.com",
  "socials": {
    "twitter": "https://twitter.com/thegamingsetup",
    "facebook": "https://www.facebook.com/The-Gaming-Setup-1059590034205031/?ref=bookmarks"
  },
  "description": "Reviewing gaming mice, keyboards, controllers and other stuff. …",
  "isVerified": false,
  "scrapedAt": "2026-10-16T18:30:40.123Z"
}
```

### How much does it cost?

This scraper uses pay per event. Platform usage is included in the price.

| Event | Price on the Free plan |
|---|---|
| Channel with an email | $0.01 each ($10 per 1,000) |
| Channel without an email (only when `onlyWithEmail` is off) | $0.001 each ($1 per 1,000) |

Paid Apify plans get a discount on every event: Bronze -10%, Silver -20%, Gold and higher -30%.

Examples on the Free plan:

- You check 1,000 channels and 200 have an email: you pay $2.00. With `onlyWithEmail` off you also pay $0.80 for the other 800 rows.
- 50 creator emails for a sponsorship campaign cost $0.50.

What is not charged: channels without an email when `onlyWithEmail` is on, the same channel found twice, and error rows (channel not found or not loaded).

How many emails to expect: in our tests on mid-size channels, about 13% to 25% of channels had a public email, depending on the niche. Business niches (fitness, beauty, finance, tech reviews) usually have more.

### Use cases

- **Influencer marketing:** build a list of creators in your niche with their contact email and size.
- **Sponsorship outreach:** find channels to sponsor and reach them directly.
- **Agency prospecting:** find creators who may need editing, thumbnails or management services.
- **Brand partnerships and UGC:** shortlist small and mid-size creators by country and subscribers.
- **Creator research:** map who is active in a topic, with their websites and other social profiles.
- **CRM enrichment:** add emails and social links to a list of channels you already have.

### Tips and limits

- **Public emails only.** The scraper never logs in and never opens the hidden "View email address" button. Channels that only show their email behind that button come back without an email.
- **Website check.** Only the homepage and `/contact` of the creator's own website are checked, and only when the About text has no email. Link-in-bio pages such as Linktree are checked; course and shop platforms such as Skool, Gumroad, Teachable and Kajabi are skipped because their pages show the platform's email.
- **Website emails can be generic** (`info@`, `support@`, `sales@`). `emailSource` tells you where each email came from.
- **Keyword search depth.** YouTube's channel search returns channels page by page; very broad keywords may return fewer channels than `maxChannelsPerSearch` when YouTube runs out of results.
- **Duplicates are removed** across keywords and pasted channels, and you are not charged twice for the same channel.
- **Errors.** When a channel cannot be found or loaded, you get a row with an `error` field and you are not charged for it.

### Use it from the API, Python or JavaScript

JavaScript:

```js
const { ApifyClient } = require('apify-client');
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('juliob.rangel/youtube-email-scraper').call({ searchQueries: ['home workout'], maxChannelsPerSearch: 100 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

Python:

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('juliob.rangel/youtube-email-scraper').call(run_input={'searchQueries': ['home workout'], 'maxChannelsPerSearch': 100})
items = client.dataset(run['defaultDatasetId']).list_items().items
```

It also works with Make, Zapier, n8n, Google Sheets export, webhooks and AI agents through the Apify MCP server.

### FAQ

**Do I need a YouTube account, API key or cookies?** No. The scraper reads public channel pages and does not use the YouTube Data API, so there is no quota.

**Can I export the emails to Excel or Google Sheets?** Yes. Export the dataset as Excel or CSV, or connect it to Google Sheets.

**How many emails will I get?** It depends on the niche. In our tests, 13% to 25% of channels had a public email. Use a higher `maxChannelsPerSearch` to get more emails.

**Why did a channel come back without an email when YouTube shows one?** That email is probably behind the "View email address" button, which requires a login and a captcha. This scraper only collects openly published emails.

**Is scraping YouTube emails legal?** The scraper only collects data the creator chose to publish. You are responsible for following YouTube's terms and privacy and anti-spam laws such as GDPR, LGPD and CAN-SPAM. Use the emails for relevant business contact, include an opt-out, and do not send bulk unsolicited messages.

**Why did I get an error row?** The channel was not found (wrong handle or URL) or could not be loaded. Run it again later; error rows are free.

### Related scrapers

- [YouTube Channel Info Scraper (Subscribers, Views, Links)](https://apify.com/juliob.rangel/youtube-channel-info)
- [YouTube Channel Videos Scraper (Fast & Cheap)](https://apify.com/juliob.rangel/youtube-channel-videos)
- [Website Contact Details Scraper (Emails, Phones, Socials)](https://apify.com/juliob.rangel/website-contact-details-scraper)
- [Instagram Profile Stats Scraper (Followers, Bio, Posts)](https://apify.com/juliob.rangel/instagram-profile-stats)
- [TikTok Profile Stats Scraper (Followers, Likes, Bio)](https://apify.com/juliob.rangel/tiktok-profile-stats)

## Extrator de e-mails de criadores do YouTube

Encontra o e-mail comercial público de criadores do YouTube por palavra-chave ou por lista de canais, junto com inscritos, visualizações, país, site e redes sociais. Você só paga pelos canais em que um e-mail foi encontrado.

# Actor input Schema

## `searchQueries` (type: `array`):

One keyword per line, e.g. 'home workout', 'skincare'. The scraper finds channels for each keyword with YouTube's channel search.

## `maxChannelsPerSearch` (type: `integer`):

How many channels to check for each keyword (not how many emails). Up to 500.

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

@handles, channel URLs (youtube.com/@name, /channel/UC...) or channel IDs.

## `scanWebsites` (type: `boolean`):

When the About text has no email, open the creator's own website (homepage and /contact) and look for one there.

## `onlyWithEmail` (type: `boolean`):

On: you get (and pay for) only channels with an email. Off: channels without an email are also returned, at a lower price.

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

Apify Proxy settings.

## Actor input object example

```json
{
  "searchQueries": [
    "home workout"
  ],
  "maxChannelsPerSearch": 30,
  "scanWebsites": true,
  "onlyWithEmail": true,
  "proxy": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (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 = {
    "searchQueries": [
        "home workout"
    ],
    "maxChannelsPerSearch": 30
};

// Run the Actor and wait for it to finish
const run = await client.actor("juliob.rangel/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 = {
    "searchQueries": ["home workout"],
    "maxChannelsPerSearch": 30,
}

# Run the Actor and wait for it to finish
run = client.actor("juliob.rangel/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 '{
  "searchQueries": [
    "home workout"
  ],
  "maxChannelsPerSearch": 30
}' |
apify call juliob.rangel/youtube-email-scraper --silent --output-dataset

```

## MCP server setup

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