YouTube Channel Email Scraper

Find public contact emails displayed by YouTube channels and export source-attributed emails, links, social profiles, and channel metadata.

Data fields

FieldTypeDescription
inputstringValue exported as input.
channelUrlstringValue exported as channelUrl.
channelIdstring | nullValue exported as channelId.
handlestring | nullValue exported as handle.
titlestring | nullValue exported as title.
descriptionstring | nullValue exported as description.
subscriberCountTextstring | nullValue exported as subscriberCountText.
subscriberCountinteger | nullValue exported as subscriberCount.

Input preview

channelUrlsYouTube channel URLs, handles, or IDs *
maxChannelsMaximum channels
onlyWithEmailSave only channels with public emails
includePublicLinkedWebsitesCrawl linked public websites for contacts
maxExternalPagesPerChannelMaximum external pages per channel
contactPageKeywordsContact page keywords

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Find public business and contact emails explicitly displayed by YouTube channels. Export source-attributed emails together with channel metadata, outbound websites, social profiles, and clear no-contact or failure statuses.

Use this YouTube email scraper and YouTube contact scraper for creator outreach, partnership research, sponsorship prospecting, and contact-list enrichment from channels you already know. It works as a YouTube creator email finder or YouTube influencer email finder only for addresses displayed on public pages. It does not log in, reveal CAPTCHA-protected addresses, or infer email addresses.

Example input

{
  "channelUrls": [
    "https://www.youtube.com/@rebeccazamolo",
    "@imjennim",
    "UCTgwcoeGGKmZ3zzCXN2qo_A"
  ],
  "maxChannels": 3,
  "onlyWithEmail": false,
  "includePublicLinkedWebsites": false,
  "includePhones": false
}

Example output

{
  "input": "@imjennim",
  "channelUrl": "https://www.youtube.com/@imjennim/about",
  "channelId": "UCgWfS_47YPVbKx5EK4FLm4A",
  "handle": "@imjennim",
  "title": "Jenn Im",
  "description": "Business Inquiries: jenn@rare.global ...",
  "subscriberCountText": "3.23M subscribers",
  "subscriberCount": 3230000,
  "videoCountText": "794 videos",
  "videoCount": 794,
  "viewCountText": "1,555,888 views",
  "viewCount": 1555888,
  "country": "United States",
  "joinedDateText": "Joined Feb 28, 2010",
  "verified": false,
  "externalLinks": [],
  "socialLinks": [],
  "websiteLinks": [],
  "emails": [{
    "value": "jenn@rare.global",
    "sourceUrl": "https://www.youtube.com/@imjennim/about",
    "sourceType": "channel_about",
    "confidence": "high"
  }],
  "phones": [],
  "contactStatus": "FOUND_PUBLIC_CONTACT",
  "hiddenEmailUnsupported": false,
  "pagesChecked": 0,
  "pagesSkipped": 0,
  "errorCode": null,
  "errorMessage": null,
  "scrapedAt": "2026-08-13T12:11:26.764Z"
}

Input settings

Field Type Description
channelUrls string[] YouTube channel URLs, About URLs, @handles, bare handles, or UC... channel IDs.
maxChannels integer Maximum unique channels to process (1–500).
onlyWithEmail boolean Save only rows containing at least one public email.
includePublicLinkedWebsites boolean Also inspect a bounded number of publicly linked website pages for displayed contacts.
maxExternalPagesPerChannel integer Maximum linked website pages checked per channel (0–10).
contactPageKeywords string[] Optional paths such as contact, about, or press considered during website inspection.
includePhones boolean Also collect explicitly displayed public phone numbers.
proxyConfiguration object Optional Apify Proxy configuration. Direct requests are used by default.

Duplicate inputs are normalized and processed once. Valid rows are saved progressively, so one unavailable channel does not discard successful siblings.

Who is it for?

  • Creator partnership and sponsorship teams building source-auditable outreach lists.
  • Agencies researching public contact routes for known channels.
  • Sales and market-research teams enriching channel lists with public metadata.
  • Developers and AI-agent builders who need structured JSON through API or MCP.

Input recipes

Creator outreach list

Set onlyWithEmail to true and submit up to 100 known channel handles. Every retained email includes its public source URL.

Channel metadata audit

Set onlyWithEmail to false to retain channels without public contacts and compare metadata and outbound profiles.

Public website contact enrichment

Enable includePublicLinkedWebsites, keep maxExternalPagesPerChannel low, and optionally enable includePhones. Website availability and robots/access policies may vary.

API usage

curl -X POST "https://api.apify.com/v2/acts/anna%2Fyoutube-channel-email-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"channelUrls":["@imjennim"],"maxChannels":1}'

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/youtube-channel-email-scraper').call({ channelUrls: ['@imjennim'], maxChannels: 1 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python:

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/youtube-channel-email-scraper').call(run_input={'channelUrls': ['@imjennim'], 'maxChannels': 1})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

MCP and AI agents

Connect the Apify MCP server at:

https://mcp.apify.com/?tools=fetch_cat/youtube-channel-email-scraper

Add it to Claude Code:

claude mcp add --transport http apify https://mcp.apify.com/?tools=fetch_cat/youtube-channel-email-scraper

Or use this MCP configuration:

{"mcpServers":{"apify":{"type":"http","url":"https://mcp.apify.com/?tools=fetch_cat/youtube-channel-email-scraper"}}}

Example prompts: “Find publicly displayed emails for these five YouTube handles and return source URLs” or “Compare metadata for these channels and retain rows without email.” Keep tokens and contact data out of prompts or logs that do not need them.

Tips and limits

  • Start with a few known channels, then expand the batch.
  • Channel pages change over time; absent metadata is returned as null, not guessed.
  • Some business emails are protected behind login or CAPTCHA. Those are intentionally not revealed.
  • External website checks are opt-in, bounded, and can be slower or unavailable.
  • Use public contact details responsibly and comply with applicable privacy, anti-spam, platform, and marketing laws.
  • The Actor discovers contacts from supplied channels; it does not search YouTube by keyword.

Support

For reproducible issues, open the Actor's Issues tab and include a redacted input, run ID, expected behavior, and actual behavior. Never post private credentials or non-public contact data.

Common questions

Questions and answers reused from the canonical actor README.

Does it reveal YouTube's protected “View email address” value?

No. It exports only contact details already displayed on anonymous public surfaces. It does not log in, solve CAPTCHA, bypass controls, or infer addresses.

Why does a successful row have no email?

Many channels do not publish one. Keep onlyWithEmail off to receive NO_PUBLIC_CONTACT rows and useful channel metadata.

Can I use it through the API or MCP?

Yes. Use the Actor API from any Apify client or add the actor-specific MCP URL above to an MCP-compatible agent.

Does it validate mailbox deliverability?

No. It preserves publicly displayed values and their source evidence; mailbox verification is a separate workflow.

What happens if one channel fails?

The row contains CHANNEL_ERROR and diagnostics while other channels continue. Results are stored progressively.