YouTube Channel Email & Lead Scraper avatar

YouTube Channel Email & Lead Scraper

Pricing

from $60.00 / 1,000 channel records

Go to Apify Store
YouTube Channel Email & Lead Scraper

YouTube Channel Email & Lead Scraper

Bulk-enrich YouTube channels with identity, activity stats, business email when public, and 8 social profile URLs. 97% reachable contact coverage across verified channels. Built for cold-outreach agencies and creator-economy sales teams.

Pricing

from $60.00 / 1,000 channel records

Rating

0.0

(0)

Developer

Nate Schnell

Nate Schnell

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

Share

Turn a list of YouTube channels into a clean lead-gen dataset. Pass channel handles, IDs, or URLs — get back identity, activity stats, business email (when public), and every social/website link the channel exposes.

Verified against 89 real channels (mega creators, mid-tier creators, edu, news, gaming, music) in May 2026:

  • 97% of channels yielded at least one reachable contact path
  • 12% had a plaintext business email in their description (e.g. business@MKBHD.com)
  • 55% had a gated business email signal (YouTube confirms an email exists behind sign-in — high-value triage signal for manual lookup)
  • 64% had Instagram, 62% had Twitter, 76% had a website link
  • 100% of valid channels yielded full identity (channel ID, handle, name, joined date, avatar)

What you get per channel

{
"channelId": "UCBJycsmduvYEL83R_U4JriQ",
"handle": "@mkbhd",
"name": "Marques Brownlee",
"subscriberCount": "21000000",
"videoCount": "1821",
"viewCount": "5395779547",
"country": "United States",
"businessEmail": "business@MKBHD.com",
"hasGatedBusinessEmail": "true",
"description": "MKBHD: Quality Tech Videos | YouTuber | Geek...",
"joinedDate": "Mar 21, 2008",
"vanityUrl": "http://www.youtube.com/@mkbhd",
"keywords": "MKBHD MarquesBrownlee Marques Brownlee",
"avatarUrl": "https://yt3.googleusercontent.com/...",
"rssUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=...",
"websiteUrl": null,
"instagramUrl": "http://instagram.com/MKBHD",
"twitterUrl": "http://twitter.com/MKBHD",
"tiktokUrl": null,
"facebookUrl": null,
"patreonUrl": null,
"linkedinUrl": null,
"discordUrl": "http://discord.gg/MKBHD",
"linksJson": "[{\"title\":\"Twitter\",\"url\":\"http://twitter.com/MKBHD\",\"host\":\"twitter.com\"}, ...]"
}

Numeric fields (subscriberCount, videoCount, viewCount) are normalized to integer strings — "21M subscribers" becomes "21000000". Compact suffixes (K, M, B), comma-grouped digits, and accessibility labels are all handled.

Social URLs are unwrapped from YouTube's /redirect proxy — you get the actual instagram.com/handle URL, not the obfuscated tracking link.

Common workflows

1. Cold outreach lead enrichment. Pass 1,000 creator handles → keep the 12% with plaintext email + the 55% with a gated email signal worth manual lookup + everyone with an Instagram/Twitter for DM outreach. Realistic conversion-ready list per 1,000 channels: ~600–700.

2. Influencer due-diligence. Verify a channel's join date, subscriber count, country, and social presence before sending a sponsorship offer. Useful for catching dead channels and bot inflation.

3. Creator-economy SaaS onboarding. Bulk-enrich a customer's competitor list with full social graph and activity stats — no manual copy-paste from YouTube About pages.

4. Newsletter / podcast partnership sourcing. Pull country + business email + website for a vertical (gaming, food, fitness) to build a tier-1 partnership pipeline.

Input

{
"channels": ["@mkbhd", "@veritasium", "UCBJycsmduvYEL83R_U4JriQ", "https://www.youtube.com/@kurzgesagt"],
"extractEmailOnly": false,
"maxItems": 1000,
"maxConcurrency": 4,
"requestTimeoutSecs": 45,
"proxyMode": "none"
}
FieldTypeDefaultNotes
channelsstring[]Handles (@mkbhd), channel IDs (UC...), or full URLs. The actor normalizes everything to a /about URL.
startUrlsobject[]Alternative input form. Standard Apify { "url": "..." } objects.
extractEmailOnlybooleanfalseIf true, only emit records where businessEmail is non-null.
maxItemsinteger100Hard cap on records pushed to the dataset.
maxConcurrencyinteger4Browser concurrency. Increase if you bump memory; decrease if you see CPU throttling.
requestTimeoutSecsinteger60Per-channel timeout. 404s fail in <1s regardless.
proxyModeenumnonenone works for YouTube at small/medium volume. Use apify_proxy_datacenter for higher throughput, apify_proxy_residential only if you see blocks.

Output

Dataset is plain JSON, one record per channel. Field reference:

  • Identity (100% reliable on valid channels): channelId, handle, name, vanityUrl, joinedDate, avatarUrl, rssUrl
  • Activity (97% reliable): subscriberCount, videoCount, viewCount, country, description, keywords
  • Contact (variable, see coverage notes): businessEmail, hasGatedBusinessEmail
  • Social graph: websiteUrl, instagramUrl, twitterUrl, tiktokUrl, facebookUrl, patreonUrl, linkedinUrl, discordUrl
  • Full link dump: linksJson — JSON string array of every external link with title, url, host

Every field is string | null. Numeric fields are normalized integer strings. Boolean fields are "true" / "false" strings (for clean CSV export compatibility).

What this actor does NOT do

  • It does not log in to YouTube. The plaintext businessEmail field is only populated when a creator puts their email in their public channel description (~12% of channels). When YouTube has a business email behind their "Sign in to see email address" gate, we surface hasGatedBusinessEmail: "true" — but we don't bypass the gate.
  • It does not scrape video lists, comments, or analytics. One channel = one record. If you need video-level data, use a dedicated YouTube Video Scraper actor.
  • It does not deduplicate. Pass each channel once.

Performance & cost

Validated on Apify cloud, May 2026, 100-channel run, 4096 MB:

  • 3.8s per channel average (single-CPU concurrency; bump memory to 8192 MB for 4-6× concurrent)
  • $0.001 per channel actual Apify compute cost
  • 404 / missing channels fail in <1s (no 30s timeout drag)
  • 0 crashes across 100 channels including 11 intentionally-bad handles

Quickstart

# Run locally (requires Apify CLI + node 22)
apify call --input '{"channels": ["@mkbhd", "@veritasium"]}'
# Or via the API
curl -X POST 'https://api.apify.com/v2/acts/<actor-id>/runs?token=<your-token>' \
-H 'Content-Type: application/json' \
-d '{"channels": ["@mkbhd", "@veritasium"]}'

Maintenance

If YouTube changes the embedded ytInitialData structure (specifically channelMetadataRenderer or aboutChannelViewModel), the parser may stop yielding some fields. The actor will degrade gracefully — channelId, handle, and at least one of identity/activity will still resolve — but I'll ship an update within 48 hours of detection. Open an issue on Apify Console for any field that suddenly drops below its baseline.