YouTube Channel Email Finder avatar

YouTube Channel Email Finder

Pricing

$30.00 / 1,000 emails

Go to Apify Store
YouTube Channel Email Finder

YouTube Channel Email Finder

Finds business contact emails for YouTube channels. Measured hit rate of 35.4%, published with its method; billed only for channels that yield an address.

Pricing

$30.00 / 1,000 emails

Rating

0.0

(0)

Developer

Matheus Oliveira

Matheus Oliveira

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Features

Limited permissions

Share

A Portuguese version of this page (README.pt.md) ships with the source.

YouTube Channel Email Finder

Finds the business contact email published by YouTube channels, from a list of channels or from a niche keyword. Billing applies only to channels where an address is found.

Measured rate: 35.4% of channels yield an address (124 of 350 sampled across 25 niches). That figure is published here, with its confidence intervals and the method behind it, because the usual promise of "verified emails in bulk" tells a buyer nothing about what a run will actually return.

What it is for

  • Building an outreach list for influencer or creator marketing, by niche
  • Enriching an existing list of channels with contact details
  • Sponsorship prospecting, filtered to a subscriber range
  • Competitive research into which creators a category is reaching out to
  • Feeding a CRM or a sheet through the API on a schedule

What a run costs

$0.03 per channel that yields an address. Channels that come back empty are not billed.

At the measured rate, 1,000 channels scanned return around 354 addresses and cost about $10.60, which is $0.03 per usable address.

Several actors in this category bill per channel scanned instead. At $0.075 per channel, 1,000 channels cost $75 and return around 117 addresses if only the About tab is read — about $0.64 per usable address. The headline figure and the real one diverge, and the gap is invisible until the run finishes.

Cheaper options do exist, and the comparison table further down names them.

Where the addresses come from

Three sources, checked in order of cost, stopping at the first hit. A channel that publishes its address in the About tab therefore costs a single request.

SourceChannels with an address, cumulative
1. The channel's About tab21.1%
2. Descriptions of recent videos27.1%
3. The creator's own website and its contact page35.4%

Source 2 exists because many creators put "business inquiries" in a video description rather than in the About tab; it found addresses on 21 channels where source 1 came up empty. Source 3 follows the link the channel itself publishes, resolving shortened links, and checks the usual contact pages. It accounted for another 29.

Both can be switched off with scanVideoDescriptions and enrichFromLinkedSite, for a faster pass that reads only the About tab.

Why 35% is the ceiling, not a starting point

Widening the public sources was tested on 80 channels that currently come back empty: reading videos 3 through 8 instead of just the first two converted 1 of them, and following link aggregators converted none. Projected over the whole sample that is +0.8 points, for several times the requests.

Roughly two thirds of YouTube channels publish no reachable contact address anywhere. That is a property of YouTube, and it is the reason billing is tied to results rather than to channels scanned.

How addresses belonging to someone else are excluded

A creator's website carries addresses that are not the creator's: the form builder behind the contact page, the shop platform, a Patreon no-reply address, occasionally a standards body quoted in the page markup. Under per-result billing, each of those would appear as a billable find.

An address found on a linked site is kept only when its domain matches the site it was found on, or when it belongs to a mailbox provider such as Gmail or Outlook. hello@tally.so sitting on a dermatologist's website is a form builder, not a contact, so it is dropped. The rule removes the category rather than maintaining a list of names.

What the measurements show

The type of niche matters more than anything else. Niches built around sponsorship publish contact details, because they receive offers and want to be reachable. Hobby and craft niches mostly do not.

Type of nicheChannels with an address95% confidence
Products, money, travel — skincare, beauty, personal finance, real estate, travel, van life, pet care55/98 = 56%46–66%
Instructional and professional — tech reviews, language learning, gardening, podcasts, cooking, chess30/84 = 36%26–46%
Hobby, craft and gaming — woodworking, guitar, fitness, coffee, 3D printing, photography, drones, cars, meditation, gaming, knitting39/168 = 23%17–30%

Channel size separates less than might be expected, and really only at the bottom of the range:

SubscribersChannels with an address95% confidence
100K or more81/194 = 42%35–49%
10K to 100K24/59 = 41%29–53%
under 10K18/84 = 21%14–31%

The minSubscribers filter exists for this reason: a floor around 10,000 keeps a run away from the part of the range where addresses are scarce.

Why no per-niche figures appear here

The same 350 channels were measured twice during development, with two versions of the extraction code. The overall rate barely moved, 35.1% to 35.4%. Individual niches moved a great deal: van life 64% to 50%, gaming 7% to 29%, knitting 0% to 14%.

Each niche in that sample holds 14 channels, and at that size a result near 50% carries a confidence interval about 45 points wide. "Van life: 64%" would mean "somewhere between 39% and 84%", which is not precise enough to publish as guidance. Grouped into the three families above the samples hold still: 56%, 36% and 23% in the second run against 57%, 39% and 20% in the first.

The full 25-niche breakdown, both runs side by side with intervals, is in SAMPLE.md.

Measuring a specific niche

Most niches are not in that sample, and a measurement of the real target is worth more than any average published here. Since only found addresses are billed, a pilot costs very little:

{
"mode": "search",
"searchQueries": ["the niche in question"],
"maxChannelsPerQuery": 50,
"minSubscribers": 10000,
"includeChannelsWithoutEmail": true
}

The run log closes with a line in the form scanned=50 with_email=19 hit_rate=38.0%. That is the real rate for that niche, and the empty channels listed in the dataset carry no charge.

How long a run takes

Measured at concurrency 10, with all three sources enabled:

ChannelsApproximate time
30under a minute
1001 to 2 minutes
5006 to 10 minutes
1,00012 to 20 minutes

Channels that yield an address in the About tab finish in well under a second. The time is spent on the ones that do not, since those trigger the video and website lookups. A run with scanVideoDescriptions and enrichFromLinkedSite switched off is roughly three times faster and finds roughly 40% fewer addresses.

The API endpoint run-sync-get-dataset-items has a 300-second limit, so runs above about 300 channels suit the asynchronous endpoint or a schedule better.

Input

Searching a niche:

{
"mode": "search",
"searchQueries": ["skincare routine", "van life"],
"maxChannelsPerQuery": 25,
"maxChannels": 200,
"minSubscribers": 10000
}

Working from an existing list. Channel URLs, @handles and raw UC... ids are all accepted, and can be mixed:

{
"mode": "channels",
"channels": [
"@mkbhd",
"https://www.youtube.com/@LinusTechTips",
"UCBJycsmduvYEL83R_U4JriQ"
]
}

Settings

FieldDefaultEffect
modechannelschannels for an existing list, search to find them by keyword
channels—URLs, handles or ids
searchQueries—niche keywords, used in search mode
maxChannelsPerQuery20channels taken from each query
maxChannels100hard ceiling for the run, so a broad query cannot run away
minSubscribers—skips channels below this size
maxSubscribers—skips channels above it, for smaller creators
scanVideoDescriptionstruesource 2; runs only when the About tab came up empty
enrichFromLinkedSitetruesource 3; runs only when sources 1 and 2 came up empty
includeChannelsWithoutEmailfalselists the empty channels too, showing everything checked. Never billed
language / countryen / USaffects which channels search returns
concurrency5parallel scans, 1 to 10

Output

One row per channel. A real row from a search run:

{
"channelId": "UC9YAqNOtA38qIymbvf3o_aQ",
"channelUrl": "https://www.youtube.com/channel/UC9YAqNOtA38qIymbvf3o_aQ",
"title": "sasa",
"subscribers": 696000,
"subscribersText": "696K",
"videoCountText": "149",
"emails": ["sasa@starlinemgmt.com", "sasastudio25@gmail.com"],
"primaryEmail": "sasa@starlinemgmt.com",
"emailCount": 2,
"emailSource": "about",
"sourceUrl": null,
"externalLinks": ["https://us.selflessbyhyram.com/"],
"queryMatched": "skincare routine",
"hasEmail": true
}
FieldContents
channelId, channelUrlstable identifier and direct link
titlechannel name
subscribersinteger, for sorting and filtering
subscribersTextthe same figure as YouTube displays it
videoCountTextpublishing volume, an indicator of an active channel
emailsevery address found, business-style inboxes first
primaryEmailthe best candidate, for a single-column export
emailCounthow many were found
emailSourceabout, video_description or linked_site
sourceUrlfor linked_site, the exact page it was read from
externalLinksthe creator's own links, affiliate and shortened links last
queryMatchedwhich query surfaced the channel
hasEmailboolean, for quick filtering

emailSource together with sourceUrl makes every result checkable against its origin. In a product billed per result, that matters: it is possible to verify what was charged.

When something goes wrong

SituationBehaviourBilled
No address foundOmitted from the dataset, or included with hasEmail: false when includeChannelsWithoutEmail is onNo
Outside the subscriber filterOmitted, counted as filtered in the logNo
Network or parsing failure on one channelOmitted, counted as failed, logged as a warningNo
Handle cannot be resolvedLogged as a warning, the run continuesNo
maxChannels reachedRun stops at the ceilingOnly for addresses found

The final log line always reports scanned, with_email, hit_rate, filtered and failed, so a run that returns little can be told apart from a run that went wrong.

How this compares

Prices as listed on the Apify Store in November 2026, with each actor's own charging event:

ActorPriceCharges forStore rating
This actor$0.03channel with an address foundnew
haketa/youtube-contact-scraper$0.003dataset item5.0 (1 review)
exporter24/youtube-email-bulk-scraper$0.03dataset item5.0 (3 reviews)
automation-lab/…-email-scraper$0.023 + $0.0023address found, plus every channel processedno reviews
khadinakbar/…-email-extractor$0.05 + $0.12address found, plus a paid unlock3.0 (1 review)
endspec/youtube-instant-email-scraper$0.075every channel parsed1.0 (2 reviews)
creatorlens/social-media-email-scraper-2026$0.10address found1.41 (5 reviews)
dataovercoffee/…-Business-Email-Scraper$0.12each email returned4.4 (30 reviews)

Charging only for results is not unusual here, and this actor does not claim it as an invention. haketa is ten times cheaper per item, and the category leader has thirty reviews and a 4.4 rating.

What is specific to this one: the hit rate is measured and published with its confidence intervals, the sources are documented and switchable, every address carries the source it came from, and the niches where it performs badly are named rather than omitted. Nothing here depends on taking a claim on trust.

Questions

Why do some channels come back empty? Around two thirds of channels publish no reachable address. Widening the search was tested and converted 1 of 80 empty channels, so this is a ceiling rather than something a setting can fix. Empty channels are not billed.

Can it get the address behind the "View email address" button? No. That field is absent from anonymous responses: it requires a logged-in Google session and solving a captcha. Supporting it would mean handling the session credentials of whoever runs the actor, and working around a protection put in place specifically to stop automated collection. Everything read here is published openly by the channel.

Are the addresses verified? No. They are returned exactly as published. A verification pass before a large send is a sensible precaution.

Does it need a proxy, a login or cookies? None of the three. 350 channels were scanned back to back without a block, which is what keeps the cost per run low.

How current is the data? Every run reads YouTube live. Nothing is cached or resold between runs.

Can it run on a schedule? Yes, through Apify schedules, and results can be sent onward by webhook or to Google Sheets, Slack, S3 and similar.

How do the results get exported? The dataset exports as JSON, JSONL, CSV, XLSX, XML, HTML or RSS, from the Console or the API, with fields to pick columns.

Is this legal? The addresses are published by the creators themselves for business contact, and only public channel data is read. Responsibility for use lies with whoever uses them: bulk outreach falls under GDPR, CAN-SPAM and comparable rules depending on jurisdiction.

What happens if YouTube changes something? It reads YouTube's internal interface, so a change there can break it until it is updated. The final log line makes a breakage obvious: the hit rate collapses while scanned stays normal.

Support

Issues go to the Issues tab on this actor's page, which is monitored. A report that includes the run id and the input used is the fastest to act on. Breakage after a YouTube change is treated as a priority.


Notes on the code, the local test tools and how to reproduce every figure above are in DEVELOPMENT.md.