# YouTube Channel Contact Finder - Business Emails, Pay Per Email (`hllerdgn80/youtube-channel-contact-finder`) Actor

Business e-mail addresses from YouTube channels, charged only when an e-mail is actually delivered. Search a niche or paste channels; get the e-mail, subscriber count, links and description. No browser, so runs finish in seconds.

- **URL**: https://apify.com/hllerdgn80/youtube-channel-contact-finder.md
- **Developed by:** [Halil Erdogan](https://apify.com/hllerdgn80) (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 $50.00 / 1,000 business e-mail delivereds

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 Contact Finder

Business e-mail addresses from YouTube channels. **You are charged only when an e-mail is actually delivered** — channels that publish none are still listed, with the reason, and cost you nothing.

No browser, so a run finishes in seconds rather than minutes.

### What you get per channel

| Field | Example |
|---|---|
| `businessEmail` | `business@MKBHD.com` |
| `channelName` | Marques Brownlee |
| `handle` | @mkbhd |
| `channelUrl` | https://www.youtube.com/channel/UCBJycsmduvYEL83R\_U4JriQ |
| `subscribers` | 21300000 |
| `videoCount` | 1800 |
| `description` | the channel's full description |
| `links` | any links the creator put in the description |
| `keywords` | the channel's own keywords |
| `emailSource` | `description`, or `payload` if it was found elsewhere |
| `error` | why a channel produced no e-mail, instead of vanishing |

### Two ways to use it

**Find creators in a niche.** Put terms in `searchQueries` — `home fitness`, `woodworking`, `personal finance` — and each one is expanded into channels which are then checked for an e-mail.

**Check channels you already have.** Put them in `channels`. URLs, `@handles` and raw `UC…` ids all work, mixed together.

Use both at once if you like. `minSubscribers` skips channels below a size, and `maxChannels` is a hard stop so a broad search cannot run away.

### Honest expectations

**Roughly one channel in four publishes a business e-mail.** Measured on 13 September 2026 across eight niches, twelve channels each, 96 channels in total: **23% overall**. It varies a lot by niche:

| Niche | Channels with an e-mail |
|---|---|
| tech review | 42% |
| woodworking | 42% |
| personal finance | 25% |
| home fitness | 17% |
| vegan recipes | 17% |
| travel vlog | 17% |
| skincare | 17% |
| gaming setup | 8% |

That is why the charge is per delivered e-mail rather than per channel checked: you can point it at a thousand speculative channels and pay only for the ones that produce something usable. Niches where creators take sponsorships tend to publish e-mails more often.

### What it does not do

It reads what creators have chosen to publish on their own channel. It does not guess addresses, does not try permutations against a mail server, and does not go behind YouTube's "view e-mail address" verification. If a creator has not published an e-mail, this Actor reports that honestly instead of inventing one.

### Pricing

**$0.05 per business e-mail delivered**, plus a $0.001 flat fee per run. A channel with no e-mail is free. A channel that cannot be read is free.

### Notes

Addresses are matched strictly, so asset filenames (`logo@2x.png`), YouTube's own domains and other payload noise are filtered out rather than sold to you as leads. Where an e-mail appears in the channel description, that one wins — it is the one the creator wrote for business contact.

Contact details published by a business for business contact are still personal data in some jurisdictions. Use the output in line with the rules that apply to you, including GDPR and the CAN-SPAM Act.

# Actor input Schema

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

Find channels by topic, e.g. "home fitness" or "vegan cooking". Each term is expanded into channels and then checked for a business e-mail.

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

Channel URLs, @handles or UC... ids. Mixed formats are fine.

## `maxChannelsPerQuery` (type: `integer`):

How many channels to take from each search term before moving on.

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

A hard stop so a broad search cannot run away.

## `minSubscribers` (type: `integer`):

Skip channels below this size. 0 keeps everything.

## `onlyChannelsWithEmail` (type: `boolean`):

Off by default so you can see which channels were checked and found to publish nothing. Either way, you are only charged for delivered e-mails.

## `concurrency` (type: `integer`):

How many channels to look up at the same time. Higher is faster; lower is gentler on the source.

## Actor input object example

```json
{
  "searchQueries": [
    "home fitness"
  ],
  "channels": [
    "@mkbhd"
  ],
  "maxChannelsPerQuery": 25,
  "maxChannels": 200,
  "minSubscribers": 0,
  "onlyChannelsWithEmail": false,
  "concurrency": 5
}
```

# Actor output Schema

## `channels` (type: `string`):

Dataset with one item per channel: channelId, channelName, handle, channelUrl, businessEmail, emailSource, otherEmails, subscribers, subscribersText, videoCount, description, links, keywords, rssUrl, availableCountries, input, error.

## `runStats` (type: `string`):

Key-value store record RUN\_STATS: channels requested, resolved, with an e-mail, without one, failed and charged.

# 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 fitness"
    ],
    "channels": [
        "@mkbhd"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("hllerdgn80/youtube-channel-contact-finder").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 fitness"],
    "channels": ["@mkbhd"],
}

# Run the Actor and wait for it to finish
run = client.actor("hllerdgn80/youtube-channel-contact-finder").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 fitness"
  ],
  "channels": [
    "@mkbhd"
  ]
}' |
apify call hllerdgn80/youtube-channel-contact-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hllerdgn80/youtube-channel-contact-finder"
        }
    }
}
```

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/6suw12TIc7JzmnHom/builds/lpqLuAz27UGGeqbD8/openapi.json
