# YouTube Email Scraper (Profile, Website, Social, Email) (`futurizerush/youtube-email-scraper`) Actor

Find publicly available YouTube channel contact info for outreach and research. Provide channel URLs or search by keyword to collect business emails, website links, social profiles, and channel stats from public channel pages and linked websites.

- **URL**: https://apify.com/futurizerush/youtube-email-scraper.md
- **Developed by:** [Rush](https://apify.com/futurizerush) (community)
- **Categories:** Lead generation, Social media
- **Stats:** 543 total users, 9 monthly users, 82.4% runs succeeded, 14 bookmarks
- **User rating**: 2.23 out of 5 stars

## Pricing

from $25.00 / 1,000 results

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 Email Scraper (Profile, Website, Social, Email)

Extract comprehensive contact information from YouTube channels — including business emails, website links, social media profiles, and channel statistics — for legitimate outreach and partnerships.

### What Does This Scraper Do

YouTube Email Scraper automatically discovers YouTube channels and extracts their publicly available business contact information. It searches channel descriptions, About pages, and linked websites to find publicly displayed email addresses for partnership opportunities and professional outreach.

#### What You Can Extract

**Emails:**

- Business emails displayed in channel information
- Contact emails from channel descriptions and About pages
- Emails from creators' linked external websites

**Other contact data:**

- Public social media profile links (Instagram, Twitter/X, Discord, etc.)
- External website URLs from the channel description
- Channel location, subscriber count, view count, video count, and join date

**What it cannot reach:**

- Emails behind the "View email address" button (requires YouTube login)
- Protected or private contact information
- Any contact details requiring human verification

> Email availability depends on what each creator chooses to publish.

### Video Tutorial

Watch a short tutorial for this scraper:
[Apify Tutorial: Scrape YouTube Channel Emails — Short Guide](https://youtube.com/shorts/KQaDH-9vAmo)

### Key Features

- **Two ways to find channels** — Provide a list of channel URLs, or discover channels by keyword search.
- **Multi-source email extraction** — Reads the channel's About page, description, and linked external websites.
- **Channel statistics** — Subscriber count, lifetime views, video count, join date, location, and public channel description.
- **Social profiles** — Captures Instagram, Twitter/X, Facebook, TikTok, Discord, and other profile links the creator has linked.
- **Built-in email filtering** — Removes obvious noise (placeholder, no-reply, monitoring service, and known disposable patterns) before saving results.
- **Three pre-built views** — Overview, Contact Details, and Channel Profiles, accessible from the Output tab in Apify Console.
- **JSON or CSV export** — Download results in either format for spreadsheets, CRMs, or your own pipeline.

### Quick Start

This scraper has two modes. Pick the one that matches what you already have.

#### Mode 1 — You already have channel URLs

```json
{
  "inputMode": "directUrls",
  "channelUrls": [
    "https://www.youtube.com/@nateherk",
    "https://www.youtube.com/@LiamOttley"
  ]
}
```

#### Mode 2 — You want to discover channels by keyword

```json
{
  "inputMode": "keywordSearch",
  "searchKeywords": ["AI automation", "tech review"],
  "maxChannelsPerKeyword": 50,
  "maxResults": 100,
  "locale": "US"
}
```

> Each run uses one mode. To process both lists and keywords, run the scraper twice and merge the datasets.

### Input Parameters

| Parameter | Type | Description | Default |
|-----------|------|-------------|---------|
| **Input Mode** | Select | Choose "Direct Channel URLs" or "Search by Keywords" | Direct Channel URLs |
| **Channel URLs** | List | YouTube channel URLs to process | — |
| **Search Keywords** | List | Keywords to find relevant channels | — |
| **Max Channels per Keyword** | Number | How many channels to find per keyword (1–200) | 50 |
| **Maximum Results** | Number | Total maximum channels to process (1–500) | 100 |
| **Search Region** | Select | Which region's search results to prioritize — a ranking hint, not a country filter | United States |

#### Supported Regions

Over 100 countries are supported. Popular options include:

| Code | Country | Code | Country |
|------|---------|------|---------|
| US | United States | GB | United Kingdom |
| CA | Canada | AU | Australia |
| DE | Germany | FR | France |
| JP | Japan | KR | South Korea |
| TW | Taiwan | IN | India |
| BR | Brazil | ES | Spain |

See the full list in the input form dropdown.

> The region guides which channels YouTube ranks first for keyword search. It is a ranking hint, not a hard country filter — channels from other regions can still appear in the results, and many channels do not publicly list a country of their own.

### Output Data

Each channel produces a detailed record with the following information:

#### Output Example

```json
{
  "channelName": "Liam Ottley",
  "channelUrl": "https://www.youtube.com/@LiamOttley",
  "subscriberCount": "772.0K",
  "viewCount": 29011596,
  "videoCount": 247,
  "joinDate": "May 29, 2018",
  "location": "New Zealand",
  "channelDescription": "AI automation expert sharing strategies, tutorials, and insights for building AI-powered businesses...",
  "emails": ["info@morningside.ai", "support@aaaaccelerator.com"],
  "emailCount": 2,
  "hasEmails": true,
  "websites": [
    "https://www.morningside.ai",
    "https://aaaaccelerator.com",
    "https://www.skool.com/learn-ai"
  ],
  "socialMedia": {
    "instagram": "https://www.instagram.com/liamottley",
    "twitter": "https://www.twitter.com/liamottley_",
    "youtube": "https://www.youtube.com/@LiamOttleyVLOGs/featured"
  },
  "contactInfo": {
    "emails": ["info@morningside.ai", "support@aaaaccelerator.com"],
    "websites": ["https://www.morningside.ai", "https://aaaaccelerator.com", "https://www.skool.com/learn-ai"],
    "socialMedia": {
      "instagram": "https://www.instagram.com/liamottley",
      "twitter": "https://www.twitter.com/liamottley_",
      "youtube": "https://www.youtube.com/@LiamOttleyVLOGs/featured"
    }
  },
  "descriptionUrls": [],
  "searchKeyword": "AI automation",
  "processingSuccess": true,
  "isPartial": false,
  "extractedAt": "2026-04-28T12:31:14.000Z"
}
```

> Numeric fields (`viewCount`, `videoCount`) are integers or `null` when unavailable. `subscriberCount` is a formatted string (e.g. `"772.0K"`, `"20.90M"`) based on the public count, or `"Unknown"` when unavailable. Channels that cannot be collected are listed in the Run Summary; they do not create a result row. Values shown above are illustrative — actual current channel stats vary as creators grow.

#### Output Fields

| Field | Type | Description |
|-------|------|-------------|
| `channelId` | String | Stable public YouTube channel identifier |
| `channelName` | String | Name of the YouTube channel |
| `channelUrl` | String | URL of the channel |
| `subscriberCount` | String | Formatted subscriber count (e.g., `"772.0K"`, `"20.90M"`) |
| `viewCount` | Number or null | Public total lifetime channel views, when available |
| `videoCount` | Number or null | Public number of published videos, when available |
| `joinDate` | String or null | Date when the channel was created |
| `location` | String or null | Channel's listed country or region |
| `channelDescription` | String | Public channel description text, when available |
| `emails` | Array | Public email addresses found; ownership and deliverability are not verified |
| `emailCount` | Number | Number of emails found |
| `hasEmails` | Boolean | `true` if any emails were found, useful for filtering |
| `websites` | Array | External website URLs linked from the channel |
| `socialMedia` | Object | Social media profile links keyed by platform |
| `contactInfo` | Object | Grouped object containing `emails`, `websites`, and `socialMedia` |
| `descriptionUrls` | Array | URLs found inline within the description text |
| `searchKeyword` | String or null | The keyword used to discover this channel (keyword mode only; `null` in directUrls mode) |
| `processingSuccess` | Boolean | `true` if the channel was scraped without errors |
| `extractedAt` | String | ISO timestamp of when the channel was scraped |
| `isPartial` | Boolean | Some linked websites could not be checked; available details are preserved |

#### Output Views

The Output tab in Apify Console provides three specialized views:

1. **Overview** — Quick summary with channel name, subscribers, email count, and websites
2. **Contact Details** — Focused on emails, websites, social media, and location
3. **Channel Profiles** — Full statistics including views, videos, join date, and description

Results can also be downloaded as JSON or CSV. Open **Run Summary** to see saved channels, incomplete checks, and channels that could not be collected. A channel with no public email can still have a complete profile result; an incomplete contact check is marked `isPartial`.

### Use Cases

- **Influencer Marketing** — Find YouTubers in your niche and reach out for collaborations
- **Business Development** — Connect with content creators for partnerships and sponsorships
- **Lead Generation** — Build targeted contact lists from specific industries or topics
- **Market Research** — Analyze competitor collaborations and creator landscapes
- **PR & Media Outreach** — Find relevant channels for product launches and press coverage
- **Talent Recruitment** — Discover and contact creators for talent networks

### Best Practices

1. **Start small** — Test with a handful of channels or keywords before scaling up to verify the results match what you need.
2. **Use specific keywords** — Niche phrases like *"AI productivity tools"* surface more relevant creators than broad terms like *"AI"*.
3. **Filter on `hasEmails`** — When you only need leads, filter the dataset to `hasEmails: true` to skip channels without public contact info.
4. **Pick the right region** — Set the region to where your target audience is most active so YouTube surfaces those channels first. It biases ranking, not membership: results can still include channels from other regions.
5. **Use the right output view** — Contact Details for outreach lists, Channel Profiles for research, Overview for quick scans.

### Requirements

- Apify account
- No API keys or external accounts needed
- Supports direct YouTube channel URLs and localized keyword search across the regions listed in the input form

### Integrations

Connect this scraper with your existing tools:

- **Google Sheets** — Automatically export results to a spreadsheet
- **API** — Access results programmatically via the Apify API
- **Zapier / Make** — Automate workflows with scraped contact data

### FAQ

**How many channels can I scrape per run?**
Direct URL mode accepts up to 100 channel URLs per run. Keyword search mode can process up to 500 total channels per run, depending on the keywords and channel cap you set.

**Does it find emails for every channel?**
No. Many creators choose not to display a public email, and some have it gated behind YouTube's "View email address" button (which requires login). A channel can return useful public profile details without an email address.

**What types of emails does it find?**
Publicly displayed email addresses from channel descriptions, About sections, and linked websites. A linked website can list customer support or service contacts; each address should be reviewed for relevance before outreach. The Actor does not access private or login-protected information.

**What happens if a run stops early?**
Available saved results remain in the dataset. The Run Summary explains whether processing was limited or some channels were unavailable. An uncertain delivery is preserved for review instead of automatically writing the same channel again. Older saved runs may require a support review before they can continue safely.

**Are email addresses verified?**
Addresses are checked for syntax and obvious noise. The scraper does not send email or verify mailbox ownership or deliverability.

**Can I use it with other Apify tools?**
Yes. Results are available through Apify storage, API exports, and third-party integrations like Google Sheets, Zapier, and Make.

### Support

For questions or feature requests, please use the support options on the [Apify platform](https://console.apify.com).

### Disclaimer

This actor collects public channel information and public contact details from linked websites. It does **not** access private contact data, bypass login walls, or click YouTube's protected "View email address" button. You are responsible for using collected data in accordance with applicable laws (GDPR, CAN-SPAM, CCPA, etc.) and YouTube's [Terms of Service](https://www.youtube.com/t/terms). Use this data for legitimate outreach, partnerships, and research — not unsolicited bulk email.

### More from this developer

Browse [more scrapers and AI agents](https://apify.com/futurizerush) covering social media, lead generation, e-commerce, and more.

***

Keywords: youtube email scraper, business email finder, influencer outreach, lead generation, channel contact information, social media email discovery, OpenClaw, Codex, Claude Code, Gemini, Antigravity, ChatGPT.

# Actor input Schema

## `inputMode` (type: `string`):

Pick one: scrape a list of channel URLs you already have, or search YouTube by keyword and scrape the channels found.

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

Used when "I have channel URLs" is selected. Paste YouTube channel URLs, one per line. Handle URLs and common channel tabs such as /videos or /about are accepted.

## `searchKeywords` (type: `array`):

Used when "Search YouTube by keyword" is selected. Each keyword runs a separate search; specific niches (e.g. "productivity tools for designers") yield more relevant matches than broad terms.

## `maxChannelsPerKeyword` (type: `integer`):

How many channels to gather from each search keyword before scraping them. Only applies in keyword search mode.

## `maxResults` (type: `integer`):

Hard cap on total channels processed in this run. Stops scraping once reached.

## `locale` (type: `string`):

Which region's YouTube results to prioritize when searching by keyword. This biases how results are ranked toward the selected region — it does not restrict results to channels based in that country, so channels from other regions can still appear. Applies to keyword search only.

## Actor input object example

```json
{
  "inputMode": "directUrls",
  "channelUrls": [
    "https://www.youtube.com/@nateherk"
  ],
  "searchKeywords": [
    "AI automation",
    "tech review"
  ],
  "maxChannelsPerKeyword": 50,
  "maxResults": 100,
  "locale": "US"
}
```

# Actor output Schema

## `overview` (type: `string`):

All scraped channels with key contact metrics

## `contactDetails` (type: `string`):

Detailed contact information including emails, websites, and social media

## `channelProfiles` (type: `string`):

Full channel profile data with statistics and descriptions

## `allResults` (type: `string`):

Complete dataset with all fields in JSON format

## `csvExport` (type: `string`):

Export all results as a CSV file for spreadsheets

## `runSummary` (type: `string`):

Check saved results, incomplete items, and channels that could not be collected.

# 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 = {
    "inputMode": "directUrls",
    "channelUrls": [
        "https://www.youtube.com/@nateherk"
    ],
    "searchKeywords": [
        "AI automation",
        "tech review"
    ],
    "maxChannelsPerKeyword": 50,
    "maxResults": 100,
    "locale": "US"
};

// Run the Actor and wait for it to finish
const run = await client.actor("futurizerush/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 = {
    "inputMode": "directUrls",
    "channelUrls": ["https://www.youtube.com/@nateherk"],
    "searchKeywords": [
        "AI automation",
        "tech review",
    ],
    "maxChannelsPerKeyword": 50,
    "maxResults": 100,
    "locale": "US",
}

# Run the Actor and wait for it to finish
run = client.actor("futurizerush/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 '{
  "inputMode": "directUrls",
  "channelUrls": [
    "https://www.youtube.com/@nateherk"
  ],
  "searchKeywords": [
    "AI automation",
    "tech review"
  ],
  "maxChannelsPerKeyword": 50,
  "maxResults": 100,
  "locale": "US"
}' |
apify call futurizerush/youtube-email-scraper --silent --output-dataset

```

## MCP server setup

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