YouTube Creator Email & Lead Scraper (Pay Per Email Found) avatar

YouTube Creator Email & Lead Scraper (Pay Per Email Found)

Pricing

from $10.00 / 1,000 email founds

Go to Apify Store
YouTube Creator Email & Lead Scraper (Pay Per Email Found)

YouTube Creator Email & Lead Scraper (Pay Per Email Found)

Scrape publicly listed business emails and social links from YouTube channels. Feed channel/@handle/video URLs or niche keywords; a video URL resolves to its owning channel. You pay only when an email is actually found — no email, no charge.

Pricing

from $10.00 / 1,000 email founds

Rating

0.0

(0)

Developer

Jaxx

Jaxx

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

6 days ago

Last modified

Share

Turn a list of YouTube channels — or a single niche keyword — into a clean contact list of publicly listed creator business emails and social profiles. You pay only when an email is actually found. No email, no charge.

Feed the actor channel URLs, @handles, channel IDs, video URLs, or niche keywords. It reads each channel's public surfaces — About-page text, the classified link list, the creator's most recent video descriptions, and one hop to the creator's own linked website / Linktree — and returns the business email and social links it can find, one tidy record per channel.

  • 📧 Publicly listed creator business emails, with provenance (about / video / website / linktree)
  • 🔗 Social profiles: Instagram, TikTok, X, LinkedIn, Facebook, Discord, Telegram, website
  • 📊 Channel stats: subscriber / view / video counts, country, join date, handle, ID
  • 💰 Pay-per-result — priced per email found, not per subscription. A channel with no email costs you nothing.

🎯 Best for

Self-identify in two seconds — this actor is built for:

  • Sponsorship & brand-deal prospecting — build a list of creators to pitch, with their contact email attached.
  • Influencer / creator outreach — go from a shortlist of channels to reachable inboxes.
  • Agency lead generation — turn a niche keyword into a queue of creator leads for a client.
  • Creator partnerships & collab sourcing — find and contact channels in an adjacent niche.
  • UGC / media-buying creator sourcing — surface creators and their public business contact.
  • Sales prospecting into the creator economy — enrich a channel list with email + socials before you reach out.

🔒 What makes this scraper different (and safer)

Some YouTube email tools rely on logged-in Google accounts that click YouTube's gated "View email address" button and solve its CAPTCHA. That approach touches your Google login and runs the kind of authenticated automation that is grounds for account bans.

This actor deliberately does the opposite. It runs signed out and reads only public surfaces. There is no Google login, no CAPTCHA clicking, and nothing that puts a Google account at risk — that's simply how the engine is built.

What it deliberately does NOT do

  • Does not log into Google and does not click YouTube's "View email address" CAPTCHA button. Emails a creator exposes only behind that gated button won't appear here. Emails they put in their bio/description, their About-page links, their recent video descriptions, or their own linked website will.
  • Does not read comments (including pinned comments). Unlike the video description, a video's comments — pinned or not — are not present in the signed-out watch-page HTML; they lazy-load through rotating internal continuation tokens, exactly the fragile, ban-adjacent surface this actor avoids. An email that lives only in a pinned comment is out of scope.

Where the emails come from

Public surfaces, signed out:

  1. the channel About-page description text,
  2. the classified link list on the About page,
  3. the creator's most recent video descriptions (optional) — where a "For business inquiries: …" email often lives even when the About page omits it, and
  4. the creator's own linked website / Linktree (one hop, optional).

⚙️ How it works

Engine: Playwright (Chromium) driven by Crawlee's PlaywrightCrawler, on Apify's maintained apify/actor-node-playwright-chrome image.

Instead of chasing fragile CSS classes, the actor reads YouTube's own hydration blob, window.ytInitialData, and walks it by key name — key names change far less often than DOM structure, so extraction stays stable through cosmetic redesigns.

Built-in resilience:

  • up to 3 retries per request,
  • a regex fallback that recovers ytInitialData from the inline page script if the JS global is unavailable,
  • best-effort consent-wall dismissal for EU redirects,
  • honest error output — a request that ultimately fails is written to the dataset as { "status": "error", "errorDetail": "...", "channelUrl": "..." } rather than silently dropped, so you always see exactly what did not resolve.

▶️ How to use (no code required)

  1. Create a free Apify account.
  2. Open this actor and paste your channel URLs / @handles / channel IDs / video URLs into Start URLs — or type niche keywords into Search keywords.
  3. (Optional) Set a Minimum subscribers floor and cap Max channels per keyword to control cost.
  4. Click Start.
  5. Watch rows appear in the Output tab, then export the dataset as JSON, CSV, Excel, XML, or HTML — or pull it via the API.

📥 Input

FieldTypeDefaultNotes
startUrlsarrayChannel URLs, @handles (e.g. https://www.youtube.com/@mkbhd), 24-char UC… channel IDs, or video URLs. A video URL resolves to its owning channel.
searchKeywordsarray of strings[]Optional. Each keyword runs a YouTube channel search and queues the discovered channels for email extraction. Billed per search query.
maxChannelsPerKeywordinteger50How many channels to collect from each keyword search. Min 1, max 500.
minSubscribersinteger0Skip channels below this subscriber count (cost control). 0 = no minimum.
scanLinkedWebsitesbooleantrueFollow the website / Linktree / Beacons link on the About page one hop and extract mailto: and plain-text emails.
scanVideoDescriptionsbooleantrueAlso read the channel's most-recent video descriptions and extract emails from them (tagged source: "video"). Catches the "For business inquiries: …" email many creators put in every video but not on their About page.
maxVideosPerChannelinteger3How many recent videos to read descriptions from per channel when scanVideoDescriptions is on. Min 0 (off), max 10.
includeSocialLinksbooleantrueReturn the channel's linked social profiles (Instagram, TikTok, X, LinkedIn, Facebook, Discord, Telegram, website).
dedupeEmailsbooleantrueOne record per channel, with emails deduped across all sources.
maxConcurrencyinteger5How many pages to process in parallel. Min 1, max 20. Lower this if you hit rate limits.

Example input

{
"startUrls": [
{ "url": "https://www.youtube.com/@mkbhd" },
{ "url": "https://www.youtube.com/@GoogleDevelopers" }
],
"searchKeywords": ["home barista", "van life"],
"maxChannelsPerKeyword": 50,
"minSubscribers": 10000,
"scanLinkedWebsites": true,
"scanVideoDescriptions": true,
"maxVideosPerChannel": 3,
"includeSocialLinks": true,
"dedupeEmails": true,
"maxConcurrency": 5
}

📤 Output

One record per channel, written to the dataset as results come in. Export it as JSON, CSV, Excel, XML, or HTML, or read it through the API.

{
"channelName": "Marques Brownlee",
"channelHandle": "@mkbhd",
"channelId": "UCBJycsmduvYEL83R_U4JriQ",
"channelUrl": "https://www.youtube.com/@mkbhd",
"subscriberCount": 19800000,
"videoCount": 1700,
"viewCount": 4200000000,
"country": "United States",
"joinedDate": "Joined Mar 21, 2008",
"description": "…channel description text…",
"thumbnailUrl": "https://yt3.googleusercontent.com/…",
"emails": [
{ "email": "team@brand.co", "source": "about", "domain": "brand.co" },
{ "email": "contact@brand.co", "source": "video", "domain": "brand.co" }
],
"bestEmail": "team@brand.co",
"hasEmail": true,
"socialLinks": {
"website": "https://…",
"instagram": "https://instagram.com/…",
"tiktok": "https://tiktok.com/@…",
"x": "https://x.com/…",
"linkedin": "https://linkedin.com/…",
"facebook": "https://facebook.com/…",
"discord": "https://discord.gg/…",
"telegram": "https://t.me/…"
},
"sourceMode": "direct",
"sourceVideoUrl": null,
"sourceKeyword": null,
"scrapedAt": "2026-07-10T00:00:00.000Z",
"status": "ok",
"errorDetail": null
}

Field notes:

  • emails — every email found for the channel, each tagged with its source (about, video, website, or linktree) and domain. Only sources the actor actually read are emitted. When the same address appears in more than one source, it is kept once at its highest-trust source (About > video description > website hop).
  • bestEmail — a single pick, preferring a business domain over a freemail address (Gmail, Outlook, etc.).
  • hasEmailtrue when at least one email was found. It's the gate for billing — no email, no charge — but the email-found event is priced per unique email, so a channel with two emails is two events (see the worked example under Pricing).
  • sourceMode"direct" (you supplied the channel/video) or "keyword" (discovered via a keyword search). sourceVideoUrl is set when the channel was reached from a video; sourceKeyword is set when reached from a keyword.
  • status"ok" for a successful record, "error" for a request that failed (with a human-readable errorDetail). Error rows are kept, not dropped.

💰 Pricing (pay-per-event)

You are charged a fixed price per result event — not for platform usage or compute time.

EventPricePer 1,000When you're charged
email-found$0.02$20 / 1,000Once per unique email found. A channel with no email is free.
keyword-search$0.01$10 / 1,000Once per keyword search query executed.

No-find-free is the core trust mechanic: you never pay for a channel that yields nothing. If a page fails, it comes back as a status: "error" row — never as a phantom charge for data that does not exist.

What a run costs — a worked example: you scan 500 channels, 180 have a business email (and 40 of those list two) → 220 unique emails × $0.02 = $4.40. Add 2 keyword searches at $0.01 → $0.02. Total: $4.42 — and the 320 channels with no email cost nothing.

The prices above are exactly what you're billed — nothing for platform usage or compute on top. Comparable Store actors price differently; compare the live listings and pick what fits your volume.


❓ FAQ

Do I pay for channels that don't have an email? No. You are charged only when an email is actually found (hasEmail: true). A channel that yields nothing — or a request that errors — costs you nothing for the email event.

Can I test with a small list first? Yes. Start with two or three channel URLs, confirm the output looks right, then scale up. The maxChannelsPerKeyword and minSubscribers inputs let you cap volume and cost on keyword runs.

How do I maximize the hit rate? Point it at channels that are likely to list a public business email — established creators, brand-adjacent channels, and channels with a linked website or Linktree. Keep scanLinkedWebsites and scanVideoDescriptions on so the actor follows the one-hop website link and reads recent video descriptions (many creators put a "For business inquiries: …" email in every video but not on their About page), and use minSubscribers to skip tiny channels that rarely publish contact info.

Why don't you pull the email from behind YouTube's "View email address" button? Because that gated flow requires a logged-in Google account and CAPTCHA solving — authenticated automation that is grounds for account bans. This actor stays signed out and reads only public surfaces on purpose. It is the account-safe, ToS-cleaner choice; the tradeoff is that emails exposed only behind that button are out of reach.

What exactly does it read? Four public surfaces: the About-page description text, the classified links on the About page, the channel's most-recent video descriptions, and — one hop — the creator's own linked website or Linktree. Nothing behind a login, and no comments (pinned or otherwise).

Do you read pinned comments? No. A creator's pinned comment can carry contact info, but comments are not in the signed-out watch-page HTML — they load through rotating internal continuation tokens, the fragile surface this actor deliberately avoids. The video description is in the page HTML and is read; a pinned comment is not.

Can I run it on a schedule or from my own code? Yes. Apify lets you run this actor from the Console UI, schedule it, call it via the Apify API, drive it with the apify-client SDKs for JavaScript and Python, run it from the Apify CLI, or connect it through an MCP server — and wire the output into Make, Zapier, Slack, Google Sheets, or a webhook.

Is it legal to scrape this? The actor reads only publicly available data, signed out. That said, some output fields are personal data (e.g. an email address). You should have a legitimate basis for collecting and using it and should comply with applicable law (GDPR/CCPA, YouTube's terms, and anti-spam rules like CAN-SPAM). If you are unsure whether your use is legitimate, consult your own legal counsel.

What happens when a page can't be parsed? The request is retried up to 3 times, then written to the dataset as a { "status": "error", "errorDetail": "…" } row. You get an honest record of what failed instead of a silently missing channel.


🔌 API-ready

This actor is a drop-in piece of a pipeline. Apify auto-generates integration snippets for it — JavaScript (apify-client), Python (apify-client), the Apify CLI, the REST API, an OpenAPI spec, and an MCP server — so you can call it from your own stack or an agent workflow. See the API tab on the actor page.


Maintainer

Published by Jaxx. Categories: Lead generation · Social media.

Found a channel that should have parsed but didn't, or a field you'd like added? Open an issue on the actor's Issues tab — bug reports and extraction edge cases are actively reviewed.