YouTube Channel Email Finder
Pricing
from $21.25 / 1,000 channel with emails
YouTube Channel Email Finder
Find the email addresses YouTube channels publish in plain text on their about page or linked website, with the source of each. Give channels or search by theme and subscriber range. No login. You pay for a channel with an address, each search term read, and the run start.
Pricing
from $21.25 / 1,000 channel with emails
Rating
0.0
(0)
Developer
Mamba Labs
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 hours ago
Last modified
Categories
Features
Share
Give YouTube channels, or a search term with a subscriber range, and get the email addresses those channels publish in plain text, with the page that shows each one. You pay only for a channel where an address was found.
Features
- The about page by default, the linked website when you ask. The actor reads the channel's about page text. Set
check_websitestoyesto also read the website the channel links to (home page and one contact or about page); it is off by default. The run stops at the first source with an address unless you turn oncheck_all_sources. Video descriptions are a third source you can turn on withvideos_to_check. - Domain match flag. Each row with an address carries
email_domain,website_domain, andemail_domain_matches_website. See Domain match flag below. - Every address has a source.
email_sourceandemail_source_urlshow where it was published, so you can check it.emailslists every address found. - Find channels by theme.
search_termsreads YouTube's channel search, andmin_subscribersandmax_subscribersfilter the results. - Free when there is nothing. A channel with no published address is a free row that lists what was checked.
- Cost guards. A maximum charge per run, and the actor stops 90 seconds before the run's timeout and delivers what it has.
How the data is read
The actor reads the public pages a logged out visitor sees, through the Apify proxy, with no YouTube login and no key.
It does not press the "View email address" button on a channel page. That button needs a signed in account and a captcha, and this actor uses neither. An address a channel shows only behind that button is not returned, and that is the main reason a rival that signs in can find more.
Domain match flag
An address a channel publishes is not always on the channel's own domain. It can be a mail provider address (gmail.com), a management agency, or, on a linked website, another site owner's address. In testing, one channel's linked website returned an address on a different company's domain.
Each row with an address compares the domain of email with the websites the channel links on its about page. Social, shop, and link in bio sites do not count as the channel's website.
email_domain_matches_website | Meaning |
|---|---|
true | The email domain is a linked website's domain or a subdomain of it |
false | The channel links a website, and the address is on another domain. Check email_source_url before you use it |
| empty | The channel links no website, so there is nothing to compare |
false is not an error. A creator who uses a gmail.com address or an agency reads as false. Use the flag to sort and review, not to drop rows.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
channels | array | Channel URLs, @handles, or UC channel IDs, up to 500 a run. Clay users: wrap a column in a one item list. | |
search_terms | array | Optional. Themes to find channels by, such as home espresso. Search results come from YouTube's channel search, up to the maximum per search below. | |
max_channels_per_search | string | 20 | Number as text, 1 to 200. Default 20. |
min_subscribers | string | Optional. Number as text. YouTube rounds subscriber counts, so this filter is approximate. | |
max_subscribers | string | Optional. Number as text. YouTube rounds subscriber counts, so this filter is approximate. | |
check_websites | string | no | no (default) or yes. yes reads the home page and one contact or about page on a site the channel links to, obeying robots.txt. It finds more addresses and costs more pages per run. |
videos_to_check | string | 0 | Number as text, 0 to 10. Default 0, which is off. YouTube answered most video page reads with a sign in gate in testing, so this finds little and takes longer. Read only when no address has been found yet. |
check_all_sources | string | no | no (default) stops at the first source with an address. yes reads them all, which takes longer. |
max_charge_usd | string | Optional. The run stops before a charge would pass this amount. |
Give at least one channel or search term. Number and yes or no inputs are text fields, which is what Clay sends.
Output
| Field | Type | What it holds |
|---|---|---|
row_type | string | One of: channel, search, run_summary. run_summary is the one free row written when the input is refused. |
input | string | The channel URL, @handle, ID, or search result that produced this row. |
found_by_search_term | string | The search term that found this channel. Empty for a channel you listed. |
channel_id | string | The UC channel ID. |
title | string | The channel name. |
handle | string | The @handle. |
channel_url | string | The channel address. |
email | string | The first published address, from the source read first. |
email_source | string | Where that address was published: about_page, linked_website, or video_description. |
email_source_url | string | The page that shows the address, so you can check it. |
email_domain | string | The domain of the address in email. |
website_domain | string | The channel's linked website that matches the email domain, else the first one it links. Social, shop, and link in bio sites are not counted. Empty when the channel links no such site. |
email_domain_matches_website | boolean | true when the email domain is the channel's linked website or a subdomain of it. false when the channel links a website and the address is on another domain, such as a mail provider, an agency, or another site owner. Empty when the channel links no website. |
emails | array | Every address found, each with email, source, and source_url. |
subscribers | integer | Subscriber count as a number. YouTube rounds it. |
subscribers_text | string | The count as YouTube shows it. |
video_count | integer | Videos on the channel. |
view_count | integer | Total views on the channel. |
country | string | The country the channel states. |
description | string | The about page description. |
links | array | The links the channel lists on its about page. |
sources_checked | array | What was read for this channel, including anything that could not be read. |
row_status | string | ok, or why this row carries no data: no_results, no_change, partial, blocked, or error. |
error_reason | string | Why the row is not ok. A refused input reads input_invalid: followed by what to fix. |
billable_events_json | string | What this row was billed as, for example {"channel-email":1}. {} means free. |
scraped_at | string | When the row was written, UTC. |
Pricing
Pay per event. You pay for each channel where an address was found, for each search term read, and for the run start. A channel with no published address, a refused page, and a refused input are free. A search term is charged once whether or not it finds channels in your subscriber range, because the search pages are read either way; a refused search page is free.
| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
channel-email, one channel with a published email address found | $0.025 | $0.02375 | $0.0225 | $0.02125 |
search-term, one search term read, with or without matching channels | $0.0025 | $0.002375 | $0.00225 | $0.002125 |
apify-actor-start, once per run (one per GB of memory; the default 512 MB is one) | $0.018 | $0.018 | $0.018 | $0.018 |
Per 1,000 rows of channel-email: $25.00 on the free plan, $21.25 on Gold.
Free plan cap: 1.50 USD of evaluation a month, about 60 rows. Any paid Apify plan removes the cap, and it resets on the 1st. The run stops before a charge that passes your maximum charge per run in Apify or your max_charge_usd input.
Mamba Labs pays the platform costs of your run, Apify proxy traffic included.
Usage examples
Apify Console or API.
{"search_terms": ["home espresso"],"max_channels_per_search": "20","min_subscribers": "10000","max_subscribers": "500000","check_websites": "yes"}
Clay. Number and yes or no inputs are text fields, which is what Clay sends. A list input takes a JSON list, so put the column inside a one item list.
MCP. The Mamba Labs MCP server @mambalabsdev/mcp-youtube-channel-email-finder exposes this actor to Claude and other MCP clients.
Error handling
| Case | What you get |
|---|---|
| Missing or unreadable input | One free row, row_type run_summary, error_reason starting input_invalid: with what to fix. The run ends successfully and charges nothing but the run start |
| A value that is not a channel | One free row with row_status error, and the other channels still run |
| A channel that does not exist | One free row with row_status no_results |
| A search term | One search row per term, charged as search-term, with row_status ok when it found channels in range and no_results when it found none. A refused search page is a free blocked row |
| No published address | One free row with row_status no_results, the channel stats, and sources_checked |
| YouTube refuses a page | No retry. A free row with row_status blocked. After 5 refused channels in a row the run stops |
| A request fails or a website refuses | No retry. The channel row lists it in sources_checked as not read |
| The run is close to its timeout | The actor stops starting new work 90 seconds before the timeout and delivers what it has |
| The run stops early | One free run_summary row with row_status partial says why and how many channels were not read |
Limitations
- Most channels return no address. In a measured sample of 129 channels found by search across 11 themes, with website checks on, 21 (16 percent) published an address these sources could read: 10 on the about page and 11 on a linked website. With website checks off, the default, expect about half as many hits. Your list can differ, and you pay only for the hits.
- Addresses behind the "View email address" button are not returned. See How the data is read.
- Only plain text is read. "name at example dot com", an address inside an image, and an address encoded on a web page are not returned, and none is guessed. A site that needs JavaScript to show its address reads as no address.
- Video descriptions are off by default. In testing, YouTube answered most video page reads with a sign in gate, which the actor treats as not read, and they found no address. An address in a description can also belong to a sponsor, not the channel.
- A linked website can belong to someone else, such as a course platform or a partner, so its address may not be the creator's own. Check
email_source_urlandemail_domain_matches_website, and treatlinked_websitewith more care thanabout_page. - Speed: about 60 channels in 7 minutes. Set the run timeout to fit a long list.
- An address is what the channel published. It is not tested for delivery.
- Links to social, shop, and link in bio sites are not followed. A linked website that refuses, or whose robots.txt bars the page, reads as not checked, and
sources_checkedsays so. - Subscriber counts are rounded by YouTube, so the subscriber filter is approximate.
- A run stops when channels with no address pass 20 plus 12 for each channel with one. Free rows cost pages to read, so this limit keeps a list with almost no addresses from running without end.
- YouTube's terms restrict automated access and collecting information that might identify a person. Read them and the email rules that apply to you, such as CAN-SPAM and GDPR, before you contact anyone. Honor a request to stop.
Changes
- 2026-11-09: each search term read is one
search-termevent (0.0025 USD), with onesearchrow per term. A run of many terms that find nothing paid only the start before. The start price went from 0.014 USD to 0.018 USD. - 2026-11-08: a refused or failed page is no longer retried; it is a free row at once. Website checks are off by default; set
check_websitestoyesto turn them on. New fieldsemail_domain,website_domain, andemail_domain_matches_website.
Mamba Labs actor suite
Built by Mamba Labs.