YouTube Channel Email Scraper
Pricing
from $12.00 / 1,000 email founds
YouTube Channel Email Scraper
Extract contact emails and social links from YouTube channel About pages. Input channel URLs or @handles, get email addresses, subscriber counts, video counts, and all linked social profiles. No proxy needed.
Pricing
from $12.00 / 1,000 email founds
Rating
0.0
(0)
Developer
Automation Lab
Maintained by CommunityActor stats
0
Bookmarked
397
Total users
26
Monthly active users
0.11 hours
Issues response
2 days ago
Last modified
Categories
Features
Share
๐ง YouTube Channel Email Scraper
Extract contact emails and social links from YouTube channel About pages in bulk. Provide known channel URLs, @handles, or IDs, or search a niche keyword to build a creator list of up to 500 channels per query. Results include contact details, country, join date, total views, a hidden-business-email flag, channel metadata, and source provenance โ with no proxy needed and no browser required.
๐ฏ What does it do?
YouTube Channel Email Scraper reads each channel's About page via the YouTube InnerTube API and extracts:
- ๐ Optional keyword-to-channel discovery that follows YouTube search pages (up to 500 channels per query)
- ๐ง Business contact email (the email listed in the channel's About section)
- ๐ All emails found across description, links, and social profiles
- ๐บ Channel name, @handle, and channel ID
- ๐ฅ Subscriber count, exact video count, and total channel views
- ๐ Whether the channel has a sign-in-only business email (
hasHiddenBusinessEmail) - ๐ Full channel description
- ๐ All linked social profiles and external URLs
- ๐ Country / location
- โ Verified channel status
- ๐ Channel join date
It works by calling the official YouTube InnerTube JSON API (the same API YouTube uses internally) โ no browser automation, no proxy, just a fast HTTP request per channel.
๐ฅ Who is it for?
Influencer marketers & brand managers โ Build a outreach list of YouTubers in your niche. Filter to only channels with emails so you can contact them directly without going through agents.
Talent agencies & MCNs โ Scout potential talent at scale. Download emails and social links for hundreds of channels in minutes instead of manually visiting each About page.
PR agencies โ Find journalists, reviewers, and content creators in specific niches for product seeding campaigns. Export directly to your CRM.
Recruiting / HR teams โ Identify and contact YouTube educators, trainers, or specialists in technical fields who may be open to consulting or full-time roles.
SaaS & tool builders โ Enrich your database of creator profiles with verified contact info for creator economy platforms, sponsor marketplaces, or outreach tools.
Researchers โ Collect channel metadata and contact info for academic studies on the creator economy, content strategy, or platform analysis.
๐ก Why use this actor?
- โ No proxy needed โ YouTube About pages are fully public. No anti-bot, no captcha, no IP blocks.
- โก Fast โ Two light JSON requests per channel, run in parallel; paying customers process thousands of channels per run.
- ๐ฐ Low per-email pricing โ Many alternatives charge higher per-email rates. This actor charges $0.02/email on the Bronze tier, with lower unit prices on higher plans.
- ๐ Multiple email sources โ Scans description text, About section, and linked social profiles for all email addresses.
- ๐ฏ Email-only filter โ Use
onlyWithEmail: trueto skip channels without emails and save only leads. - ๐งญ Auditable discovery โ
sourceTypeand nullablesourceQueryshow whether each channel came from direct input or keyword search. - ๐ Structured output โ Contact and channel fields are ready for spreadsheet or API export.
๐ What data does it extract?
| Field | Type | Description |
|---|---|---|
channelId | String | YouTube channel ID (UCxxxxxxxxx) |
sourceType | String | direct for supplied channels or search for discovered channels |
sourceQuery | String / null | Search query that first discovered the channel; null for direct input |
channelName | String | Display name of the channel |
channelHandle | String | @handle (e.g. @mkbhd) |
channelUrl | String | Full channel URL |
email | String / null | Primary contact email found |
emails | Array | All emails found (may include multiple) |
subscriberCount | Number / null | Total subscriber count |
videoCount | Number / null | Total published videos (exact count from the About panel) |
totalViews | Number / null | Total channel views; null when the About panel is unavailable |
hasHiddenBusinessEmail | Boolean / null | true when YouTube shows a "Sign in to see email address" button for the channel; null when the About panel is unavailable |
description | String | Full channel description text |
socialLinks | Array | List of {title, url} external links |
avatarUrl | String | Channel profile image URL |
isVerified | Boolean | Whether channel has verified badge |
country | String | Channel's listed country |
joinedDate | String | When the channel joined YouTube |
scrapedAt | String | ISO 8601 timestamp of when data was collected |
๐ต How much does it cost to scrape YouTube channel emails?
This actor uses pay-per-event (PPE) pricing โ you pay only for results:
| Event | Price |
|---|---|
| Actor start | $0.005 (one-time) |
| Per channel processed | $0.002 |
| Per email found | $0.02 |
From 2026-11-27 the paid plans follow one simple curve: the Free and Starter (Bronze) plans pay the prices above, Scale (Silver) pays 10% less ($0.018 per email, $0.0018 per channel), and Business (Gold) and higher pay 20% less ($0.016 per email, $0.0016 per channel). Until then, the current plan discounts apply.
Keyword discovery adds no separate charge event. Each unique channel actually processed uses the existing per-channel event, and duplicates are charged only once. With onlyWithEmail, channels without an email are still charged the per-channel event (they were processed) but are not saved. An empty or invalid input fails without any charge, and the run stops cleanly when it reaches your maximum cost per run.
Example costs:
- Scrape 100 channels, 30 have emails:
$0.005 + 100 ร $0.002 + 30 ร $0.02 = $0.805 - Scrape 500 channels, 150 have emails:
$0.005 + 500 ร $0.002 + 150 ร $0.02 = $4.005 - Scrape 50 channels with
onlyWithEmail=true, 20 emails found:$0.005 + 50 ร $0.002 + 20 ร $0.02 = $0.505
๐ก Competitor comparison: Many YouTube email scrapers charge higher per-email rates. This actor starts at $0.02 per email found on the Bronze tier, with volume discounts on higher plans.
Free plan estimate: The Apify free tier includes $5/month of compute credit. That's enough to find approximately 200+ emails per month at no cost.
๐ How to scrape YouTube channel emails โ step by step
- Create a free Apify account at apify.com
- Open the YouTube Channel Email Scraper actor page
- Add known channels, enter up to 10
searchQueries, or combine both - Set
maxChannelsPerQuery(1โ500, default 10) to choose how many channels each search query collects - Optionally enable Only output channels with email to get a clean lead list
- Click Start, then download results as JSON, CSV, or Excel โ or push them to your CRM via the API
โ๏ธ Input parameters
| Field | Type | Default | Description |
|---|---|---|---|
channels | Array of strings | Optional | Known YouTube channels. Accepts URLs, @handles, or channel IDs. |
searchQueries | Array of strings | Optional | Up to 10 trimmed, unique niche or keyword searches. The Actor follows YouTube's result pages until maxChannelsPerQuery or the end of results. |
maxChannelsPerQuery | Integer | 10 | Channels collected per query (1โ500). Used only when searchQueries is non-empty. |
onlyWithEmail | Boolean | false | Skip channels without emails. Only saves channels where at least one email was found. |
maxConcurrency | Integer | 5 | Max parallel requests (1โ20). Higher = faster but may rate-limit. |
Supported input formats
At least one non-empty channels entry or searchQueries entry is required. Direct channels are processed first, followed by discovered channels; duplicate resolved channel IDs retain their first source and are processed once.
All of the following are valid entries in the channels list:
@mkbhdโ @handlehttps://www.youtube.com/@mkbhdโ full channel URLhttps://www.youtube.com/channel/UCBJycsmduvYEL83R_U4JriQโ /channel/ URLUCBJycsmduvYEL83R_U4JriQโ raw channel ID
๐ฆ Output examples
Channel with email found
{"channelId": "UCBJycsmduvYEL83R_U4JriQ","sourceType": "search","sourceQuery": "technology reviewers","channelName": "Marques Brownlee","channelHandle": "@mkbhd","channelUrl": "https://www.youtube.com/channel/UCBJycsmduvYEL83R_U4JriQ","email": "business@mkbhd.com","emails": ["business@mkbhd.com"],"subscriberCount": 21400000,"videoCount": 1866,"totalViews": 5890987011,"hasHiddenBusinessEmail": true,"description": "MKBHD: Quality Tech Videos | YouTuber | Geek | Consumer Electronics | Tech Head | Internet Personality!\n\nbusiness@MKBHD.com\n\nNYC","socialLinks": [{ "title": "Twitter", "url": "http://twitter.com/MKBHD" },{ "title": "Instagram", "url": "http://instagram.com/MKBHD" },{ "title": "Discord", "url": "http://discord.gg/MKBHD" }],"avatarUrl": "https://yt3.googleusercontent.com/...","isVerified": true,"country": "United States","joinedDate": "Mar 21, 2008","scrapedAt": "2026-11-12T10:17:23.243Z"}
Channel without email
{"channelId": "UCLA_DiR1FfKNvjuUpBHmylQ","sourceType": "direct","sourceQuery": null,"channelName": "NASA","channelHandle": "@NASA","channelUrl": "https://www.youtube.com/channel/UCLA_DiR1FfKNvjuUpBHmylQ","email": null,"emails": [],"subscriberCount": 15100000,"videoCount": 6202,"totalViews": 1135465298,"hasHiddenBusinessEmail": false,"description": "NASA's mission is to pioneer the future in space exploration...","socialLinks": [{ "title": "nasa.gov", "url": "https://www.nasa.gov" },{ "title": "X", "url": "https://x.com/nasa" }],"avatarUrl": "https://yt3.googleusercontent.com/...","isVerified": true,"country": "","joinedDate": "Jun 3, 2008","scrapedAt": "2026-11-12T11:12:05.566Z"}
๐ก Tips for best results
Building targeted lead lists
Start with searchQueries such as sustainable fashion creators or B2B SaaS reviews, then use onlyWithEmail: true for a clean list of actionable contacts. Discovery is anonymous, follows result pages up to maxChannelsPerQuery (max 500), and does not crawl videos. You can also supply channels in the same run; direct entries keep priority when duplicates occur.
Finding emails that aren't in the About section
Some creators include their business email in the channel description text rather than the "contact" field. This actor scans both locations, so you don't miss those.
Bulk processing large lists
The default maxConcurrency of 5 balances speed and reliability. You can request a higher maximum for small and medium lists; for lists of 100 or more channels, the actor automatically limits active channel workers to preserve memory headroom while still processing every requested channel.
Identifying channels to skip
Channels that have no email tend to be: large corporate brands, news channels, government accounts, and very large creators who route all business through management. Small to mid-size creators (1Kโ500K subscribers) have the highest rate of public business emails.
Exporting to Google Sheets
Use the Apify โ Google Sheets integration or download as CSV. Each field maps cleanly to a column since all fields are flat primitives.
๐ Integrations
CRM enrichment
Push scraped emails directly into your CRM using the Apify โ Zapier integration or Apify โ Make (Integromat):
- Run this actor via the API with your channel list
- Use a Zap/scenario to watch for new dataset items
- Automatically create new contacts or update existing records in HubSpot, Salesforce, or Pipedrive
Email outreach automation
Connect with email platforms like Instantly.ai or Lemlist:
- Export results as CSV
- Import into your email sequences tool
- Filter on
email != nullto ensure all contacts are reachable
Influencer marketing platforms
Enrich your influencer database by running this actor on a list of channels from your existing database, then pushing the email data back via the Apify dataset API.
Google Sheets live dashboard
Use the Apify Google Sheets Actor to stream results directly into a spreadsheet as they're scraped. Great for team collaboration on influencer outreach.
๐ ๏ธ API usage
Node.js (JavaScript)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('automation-lab/youtube-channel-email-scraper').call({channels: ['@mkbhd'],searchQueries: ['technology reviewers'],maxChannelsPerQuery: 10,onlyWithEmail: true,maxConcurrency: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Found ${items.filter(i => i.email).length} channels with emails`);for (const item of items) {if (item.email) console.log(`${item.channelName}: ${item.email}`);}
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("automation-lab/youtube-channel-email-scraper").call(run_input={"channels": ["@mkbhd"],"searchQueries": ["technology reviewers"],"maxChannelsPerQuery": 10,"onlyWithEmail": True,"maxConcurrency": 10,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsfor item in items:if item.get("email"):print(f"{item['channelName']}: {item['email']}")
cURL
curl -X POST "https://api.apify.com/v2/acts/automation-lab~youtube-channel-email-scraper/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"channels": ["@mkbhd"],"searchQueries": ["technology reviewers"],"maxChannelsPerQuery": 10,"onlyWithEmail": true,"maxConcurrency": 10}'
๐ค MCP โ Use with Claude AI
This actor works as an MCP (Model Context Protocol) server, letting you run it directly from Claude Code, Claude Desktop, or any MCP-compatible AI tool.
Setup โ Claude Code / Cursor / VS Code
$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/youtube-channel-email-scraper"
Setup โ Claude Desktop / Cursor / VS Code
Add to your claude_desktop_config.json (or equivalent MCP config):
{"mcpServers": {"youtube-email-scraper": {"type": "http","url": "https://mcp.apify.com?tools=automation-lab/youtube-channel-email-scraper","env": {"APIFY_TOKEN": "YOUR_API_TOKEN"}}}}
Example prompts for Claude
- "Scrape the contact emails for these 20 tech YouTube channels: [list]"
- "Find business emails for fitness YouTubers with over 100K subscribers: [channel list]"
- "Get contact info for all channels in this list and filter to only those with emails"
- "What's the contact email for @mkbhd?"
โ๏ธ Legality: is it legal to scrape YouTube channel emails?
Yes. The email addresses extracted by this actor are publicly posted by channel owners in their About section. They choose to make their contact information visible to anyone who visits their YouTube channel page. Collecting publicly available contact information for legitimate business outreach is lawful in most jurisdictions.
This actor only reads data that is publicly accessible โ it does not access private data, bypass authentication, or collect data from restricted sections. The YouTube Terms of Service permit automated access to public data for personal and non-commercial use. For commercial use at scale, review YouTube's API Terms of Service.
Important: Always use scraped contact data responsibly. Do not use it for spam. Comply with anti-spam laws (CAN-SPAM, GDPR, CASL) when sending commercial emails.
The actor stores results only in the run's Apify dataset and does not maintain a separate external copy. Dataset and log retention follow your Apify account settings. Progress logs report only whether an email was found, not the address itself.
Failed operations send sanitized diagnostic input, exceptions and Actor, build and run IDs to our private GlitchTip service so we can repair faults. Secret fields and URL queries are removed, and reports are retained for 30 days.
YouTube is a trademark of Google LLC. This actor is independent and is not affiliated with, endorsed by, or sponsored by YouTube or Google.
โ FAQ
Q: How does keyword discovery work?
A: The actor sends each searchQueries value to YouTube's anonymous WEB InnerTube search endpoint (channel results only) and follows result pages until it has maxChannelsPerQuery channels or YouTube has no more. If a query returns fewer channels than you asked for, the final status message says so. It does not scrape videos, log in, use cookies, solve CAPTCHAs, or crawl external sites. A failed query is skipped with a warning so other queries and direct channels can continue.
Q: Why is the email field null for some channels?
A: Not all YouTube creators list a public business email. Large brands, news organizations, government channels, and many of the biggest creators don't expose an email on their About page. Creators in the 1Kโ500K subscriber range tend to have the highest rate of public emails (~30โ40%).
Q: How accurate are the emails? A: Very high โ the actor extracts emails exactly as written by the channel owner in their About section or description. It doesn't guess, generate, or construct emails. If an email is shown, it was posted by the creator.
Q: Can I scrape thousands of channels? A: Yes. For very large lists (1000+), consider splitting them into bounded runs. The actor automatically lowers active concurrency on lists of 100 or more channels to reduce memory failures; it does not drop requested channels.
Q: Will this work on channels with custom URLs like /c/channelname?
A: Yes. The actor uses YouTube's URL resolution API, which handles all URL formats: /c/, /channel/, /@handle, and bare handles.
Q: The actor processed a channel but found no email โ could the email be there?
A: If the creator has the "View email address" button on their About page (which requires a YouTube account login to see), the email is intentionally hidden from unauthenticated viewers and cannot be extracted without logging in. The actor only finds emails that are publicly visible without authentication, but it marks those channels with hasHiddenBusinessEmail: true so you know a business contact exists and can request it on YouTube yourself.
Q: I'm getting fewer results than expected. What should I check? A: Verify your input handles/URLs are correct. Invalid or deleted channel handles will be silently skipped with a warning in the logs. You can view run logs in the Apify console under the Runs tab.
๐ Related scrapers
- ๐บ YouTube Channel Scraper โ Full channel metadata, video listings, subscriber counts. No email focus.
- ๐ฌ YouTube Scraper โ Search-based YouTube video and channel scraping at scale.
- ๐ฌ YouTube Comments Research โ Extract and analyze video comment threads.
Server API: get a YouTube channel's email over HTTP
YouTube Channel Email Scraper is also a Server Actor. Besides normal runs, it answers short HTTP requests directly, without starting a run for each lookup. Copy the server URL from the Actor's Server tab (do not build it from the Actor name) and authenticate with your Apify token. Use normal Actor runs for many channels or queries, more than 20 channels per search, and the onlyWithEmail filter.
curl -sS "$SERVER_URL/channel?channel=%40mkbhd" -H "Authorization: Bearer $APIFY_TOKEN"curl -sS "$SERVER_URL/search?query=cooking%20tips&maxChannels=10" -H "Authorization: Bearer $APIFY_TOKEN"
| Method and path | Input | Output and charge |
|---|---|---|
GET / | None | ready: true, the routes and limits; no scraping or charge |
GET /channel | Query channel: one channel URL, @handle or channel ID (UC...) | {ok,count,results} with one record, the same as a normal run's dataset item; one Channel scraped event (channel-scraped), plus one Email found event (email-found) when the channel has a public email; no start fee |
GET /search | Query query: search text (1โ200 characters); optional maxChannels 1โ20 (default 10) | {ok,count,results} with the found channels in YouTube's order; one channel-scraped event per returned channel, plus one email-found event per returned channel with an email; no start fee |
An unknown channel or a search with no channels returns an error and is free. Each request has a 60-second deadline and a 1 MiB response cap, and one server works on at most eight requests at once. Nothing is cached. Errors use { "ok": false, "error": { "code": "...", "message": "...", "retryable": false } }: 400 INVALID_INPUT; 402 spending limit; 404 CHANNEL_NOT_FOUND, NO_RESULTS or unknown route; 405 wrong method; 413 RESPONSE_TOO_LARGE; 502 BLOCKED, UPSTREAM_ERROR or charging failure; 503 server busy or stopping; 504 TIMEOUT. Failed requests are free. Retry only when retryable is true. If one of the two charges fails after the other succeeded, the results still arrive with warning.code: CHARGE_INCOMPLETE. The Server tab shows the full OpenAPI description.