YouTube Scraper With Creator Contact & Lead Enrichment avatar

YouTube Scraper With Creator Contact & Lead Enrichment

Pricing

from $0.00005 / actor start

Go to Apify Store
YouTube Scraper With Creator Contact & Lead Enrichment

YouTube Scraper With Creator Contact & Lead Enrichment

YouTube Scraper helps you extract public YouTube data quickly. Collect videos, channels, comments, subscribers, views, likes, and metadata for competitor research, content analysis, lead generation, influencer discovery, and marketing intelligence.

Pricing

from $0.00005 / actor start

Rating

0.0

(0)

Developer

API Empire

API Empire

Maintained by Community

Actor stats

0

Bookmarked

12

Total users

1

Monthly active users

15 days ago

Last modified

Share

YouTube Scraper — Extract Creator Leads, Emails and Videos as JSON

YouTube Scraper With Creator Contact & Lead Enrichment discovers YouTube creators by niche keyword or direct URL and returns one row per channel — subscriber/view totals, country, join date, and, when published, a business email, phone, and structured social links. A legacy mode also returns per-video search results with transcripts and filters. Every response is typed, normalized JSON — no HTML, no parsing. After reading this, you'll be able to configure discovery keywords, enrich creator leads with contact data, and route outreach-ready results into a CRM or agent pipeline.

What is YouTube Scraper With Creator Contact & Lead Enrichment?

YouTube Scraper With Creator Contact & Lead Enrichment is an Apify Actor that turns YouTube into a creator lead list. Point it at niche keywords or a list of channel URLs/@handles and it opens each channel's public About page, then returns one row per creator with subscriber/view/video totals, country, join date, verification status, and — only when the creator has actually published one — a business email, phone number, and structured social links. No YouTube account or Google API key is required to run it. A legacy per-video search mode (scrapeMode: "videos") is also built in, reproducing the original per-video search engine's output unchanged for existing integrations.

  • Discover creator channels by niche keyword, or enrich a known list of channel URLs/@handles/IDs directly
  • Extract real, published business email and phone number from each channel's About page — never guessed or fabricated
  • Structure external links into website, Linktree, Instagram, TikTok, X/Twitter, Facebook, and Discord fields
  • Filter to leads that actually carry contact info with requireEmail / requirePhone
  • Run the legacy per-video search engine (search terms, quality/date filters, transcripts) from the same input schema

What data does YouTube Scraper With Creator Contact & Lead Enrichment collect?

The Actor returns two structurally different row types depending on scrapeMode: channel-level creator leads (default) and legacy per-video search rows.

Data TypeKey FieldsJSON Field Names
Creator leads (channel-level)channel name/URL/ID, subscriber/view/video totals, country, join date, verificationchannelName, channelUrl, numberOfSubscribers, totalViews, totalVideos, country, joinedDate, isVerified
Contact & social enrichmentbusiness email, phone, website, and per-platform social handles found on the About pageemail, phone, website, linktreeUrl, instagramHandle, tiktokHandle, twitterHandle, facebookUrl, discordUrl, hasContactInfo
Per-video search results (legacy mode)title, view count, likes, duration, hashtags, subtitles/transcripttitle, viewCount, likes, duration, hashtags, subtitles, transcript

Need more YouTube data?

If you only need channel discovery with lighter contact extraction — no subscriber/view breadth, no legacy per-video engine — YouTube Channel Finder With Contact Info Extraction is a narrower, purpose-built alternative for that single job. For comment-level data instead of channel or video data, YouTube Comments Scraper: Comment Analytics & Keyword Search pulls per-video comments plus channel- and playlist-wide engagement rollups. And if what you actually need from a video is the spoken content rather than the channel behind it, YouTube Transcript Scraper With AI Insights collects transcripts with optional AI summaries, key points, and topic tags.

How does YouTube Scraper With Creator Contact & Lead Enrichment differ from the official YouTube API?

The YouTube Data API v3 gives you structured metadata through Google-approved endpoints under a quota; it does not expose a creator's business email, phone number, or social links through any public field. YouTube Scraper With Creator Contact & Lead Enrichment reads the same About page a human visitor sees and extracts whatever contact info the creator has actually chosen to publish there.

FeatureYouTube Data API v3YouTube Scraper With Creator Contact & Lead Enrichment
Contact/lead data (email, phone, social)Not exposed by any resource or endpointRegex-extracted from the channel's own published About-page text and links, left null when unpublished
SetupGoogle Cloud project + API key/OAuth, Data API enabledInput JSON on Apify — no Google credentials
Daily allocationDefault 10,000 units/day per project (Google's getting-started docs)No quota-unit system; size controlled by maxLeadsPerKeyword / maxChannelsTotal
Entity coverageChannel and video metadata resources, queried separatelyChannel leads (contact + social) and legacy per-video search/transcripts, one Actor
Output consistencyRaw API JSON; fields can change across API versionsActor-normalized JSON, field set documented in this README
Approval processKey is self-serve; quota increases need a Google review formNone; scales through Apify's own usage

The official API suits teams that already have a Google Cloud project and only need standard public metadata within quota. This Actor suits creator contact/lead generation, or per-video search with filters and transcripts, without building that pipeline yourself.

Why do developers and teams scrape YouTube?

For marketers and influencer/brand teams

Sponsorship and partnership teams use discoveryKeywords to pull a shortlist of creators in a niche (e.g. "fitness coach", "crypto trading") and immediately see numberOfSubscribers, totalViews, and country for size and geography fit, alongside email and website when the creator has published outreach contacts. Instead of manually opening dozens of About pages, a single run with enrichContactInfo: true and requireEmail: true produces a shortlist of creators who are actually reachable, ready to load into an outreach sequence or spreadsheet without further cleanup.

For sales and business development teams

Teams selling tools, services, or sponsorships to creators use creatorChannels to enrich a known list of prospects, or discoveryKeywords to build a fresh pipeline from a target niche. The hasContactInfo flag and discoveryMethod/sourceKeyword fields make it easy to filter a dataset down to contactable leads and trace each one back to the search that found it, which matters when reporting pipeline source and conversion by niche back to a CRM. Setting requireEmail: true before export means the list a rep works from never contains a dead-end row with no way to make contact.

For AI engineers and agent builders

An outreach or research agent can call this Actor as a tool, pass in a niche keyword, and receive typed JSON rows — channelName, email, phone, instagramHandle — with no HTML or selector logic in the agent loop. Because every field is either a real value or null (never fabricated), an agent can safely branch on hasContactInfo to decide whether to draft an outreach message or fall back to a different discovery step, without a parsing layer between the tool call and the LLM context.

For researchers and analysts

Creator-economy researchers use discoveryKeywords across several niches to build a public dataset of channel size (numberOfSubscribers, totalViews, totalVideos) alongside joinedDate and country, useful for studying niche growth or geographic concentration over time. Because the Actor only reads each channel's own public About page, the resulting dataset is limited to information the channel owner has chosen to make publicly visible — the same scope any visitor to that page could see. Running the same keyword set on a schedule turns this into a longitudinal panel of niche-level growth rather than a single snapshot.

How to scrape YouTube (step by step)

  1. Open YouTube Scraper With Creator Contact & Lead Enrichment on its Apify Store listing and click Try for free (or Start, if already added to your account).
  2. Provide either discoveryKeywords (niche keywords to search) or creatorChannels (direct channel URLs/@handles/IDs) — leave scrapeMode at its default "leads" for channel-level creator leads.
  3. Set maxLeadsPerKeyword and maxChannelsTotal to control run size, and toggle requireEmail / requirePhone if you only want contactable leads. For the legacy per-video engine instead, set scrapeMode to "videos" and fill in searchTerms/startUrls.
  4. Click Start to run the Actor. proxyConfiguration can be left at its default; the Actor escalates its own connection automatically if YouTube blocks a request.
  5. Download results as JSON, CSV, Excel, or the other export formats Apify's dataset view supports, or read them back over the API.

What to do when YouTube changes its structure

The Actor is maintained, and the field names and types documented in this README are the contract integrations are built against — a page-structure change on YouTube's end is expected to be absorbed by an Actor update rather than a change to your downstream code. No specific turnaround time is promised for any given fix.

⬇️ Input

No input field is required — every parameter has a default, and the Actor falls back to a demo keyword if you provide nothing at all.

ParameterRequiredTypeDescriptionExample Value
discoveryKeywordsNoarrayNiche/topic keywords used to discover creator channels via YouTube search; also accepts the base actor's searchTerms key["fitness coach"]
creatorChannelsNoarrayDirect YouTube channel URLs, @handles, or channel IDs (UC...) to enrich directly, skipping discovery; also accepts the base actor's startUrls key["https://www.youtube.com/@MrBeast"]
maxLeadsPerKeywordNointegerUnique channels to discover and enrich per discovery keyword. Default 5, min 1, max 2005
maxChannelsTotalNointegerGlobal cap on total channel leads across all keywords/channels combined. Default 0, min 0, max 5000 (0 = unlimited)0
enrichContactInfoNobooleanRegex-scan the About page for a business email and/or phone number. Default truetrue
enrichSocialLinksNobooleanClassify About-page external links into website/Linktree/Instagram/TikTok/X/Facebook/Discord fields. Default truetrue
requireEmailNobooleanSkip channels where no email could be found, instead of emitting a null-email row. Default falsefalse
requirePhoneNobooleanSkip channels where no phone number could be found. Default falsefalse
scrapeModeNostring (enum: leads, videos)leads = this Actor's channel-level creator-lead mode; videos = the original per-video search engine, base-compatible. Default "leads""leads"
searchTermsNoarrayYouTube search keywords, used only when scrapeMode = "videos"; ignored in leads mode["Crawlee"]
startUrlsNoarrayDirect YouTube URLs scraped only when scrapeMode = "videos"; ignored in leads mode["https://www.youtube.com/watch?v=dQw4w9WgXcQ"]
maxVideosNointegerRegular (non-Shorts, non-live) videos to scrape per search term in per-video mode. Default 10, min 0, max 9999 (0 = skip)10
maxShortsNointegerShorts to collect per keyword in per-video mode. Default 0, min 0, max 9999 (0 = skip)0
maxStreamsNointegerLive/upcoming streams to scrape per search term in per-video mode. Default 0, min 0, max 9999 (0 = skip)0
downloadSubtitlesNobooleanDownload video subtitles/transcripts when available (per-video mode only). Default falsefalse
saveSubtitlesToKvsNobooleanStore every downloaded transcript in the run's key-value store under its own key. Default falsefalse
subtitlesLanguageNostring (enum, 20 languages)Primary subtitle/transcript language. Default "en""en"
preferAutoGeneratedNobooleanPrefer auto-generated captions over manually uploaded ones. Default falsefalse
subtitlesFormatNostring (enum: srt, text, timestamp)SRT, plain text, or timestamped JSON. Default "srt""srt"
sortingOrderNostring (enum: ``, relevance, date, viewCount, rating)Sort the final per-video dataset by relevance, date, view count, or rating. Default """"
dateFilterNostring (enum: ``, hour, today, week, month, year)YouTube's built-in upload-date filter. Default """"
videoTypeFilterNostring (enum: ``, video, channel, playlist, movie)Filter to only standard videos (exclude Shorts). Default """"
lengthFilterNostring (enum: ``, short, medium, long)YouTube's length presets. Default """"
publishedAfterNostring (date)Only include videos published after this date (per-video mode). Default """2025-01-01"
sortByNostring (enum: ``, date, viewCount, likes)Sort the final per-video dataset view by date, view count, or likes. Default """"
isHDNobooleanOnly include HD videos (720p+). Default falsefalse
hasCCNobooleanOnly include videos with a proper closed-caption track. Default falsefalse
isCreativeCommonsNobooleanFilter for Creative Commons licensed videos. Default falsefalse
is3DNobooleanOnly stereoscopic 3D videos. Default falsefalse
isLiveNobooleanRestrict to live/live-style content. Default falsefalse
isPurchasedNobooleanBest-effort filter for purchased/paid content. Default falsefalse
is4KNobooleanOnly videos offering a 2160p (4K) stream. Default falsefalse
is360NobooleanOnly immersive 360° videos. Default falsefalse
hasLocationNobooleanOnly videos with explicit location metadata. Default falsefalse
isHDRNobooleanOnly High Dynamic Range videos. Default falsefalse
isVR180NobooleanOnly VR180 immersive content. Default falsefalse
proxyConfigurationNoobjectStarting proxy setup. Auto-escalates none → Apify datacenter → residential (up to 3 retries) if YouTube blocks a request, applied to both modes{"useApifyProxy": false}

Example JSON input:

{
"discoveryKeywords": ["fitness coach"],
"creatorChannels": ["https://www.youtube.com/@MrBeast"],
"maxLeadsPerKeyword": 5,
"maxChannelsTotal": 0,
"enrichContactInfo": true,
"enrichSocialLinks": true,
"requireEmail": false,
"requirePhone": false,
"scrapeMode": "leads",
"searchTerms": [],
"startUrls": [],
"maxVideos": 10,
"maxShorts": 0,
"maxStreams": 0,
"downloadSubtitles": false,
"saveSubtitlesToKvs": false,
"subtitlesLanguage": "en",
"preferAutoGenerated": false,
"subtitlesFormat": "srt",
"sortingOrder": "",
"dateFilter": "",
"videoTypeFilter": "",
"lengthFilter": "",
"publishedAfter": "",
"sortBy": "",
"isHD": false,
"hasCC": false,
"isCreativeCommons": false,
"is3D": false,
"isLive": false,
"isPurchased": false,
"is4K": false,
"is360": false,
"hasLocation": false,
"isHDR": false,
"isVR180": false,
"proxyConfiguration": { "useApifyProxy": false }
}

The most common input mistake is mixing input shapes without setting scrapeMode explicitly: if both discoveryKeywords/creatorChannels and searchTerms/startUrls are present, the Actor resolves to leads mode and silently ignores the per-video fields — always set scrapeMode yourself when combining an old per-video input JSON with the new lead-discovery fields.

⬆️ Output

Every run pushes typed, normalized JSON rows to the Actor's dataset — no HTML, no manual parsing. Results can be exported as JSON, CSV, Excel, or the other formats Apify's dataset view supports. The row shape depends on scrapeMode: leads mode produces one creator-lead row per channel, videos mode produces one row per video/Short/stream.

Scraped creator lead (scrapeMode: "leads")

{
"type": "channelLead",
"channelName": "Example Fitness Co.",
"channelUrl": "https://www.youtube.com/@examplefitnessco",
"channelId": "UCxxxxxxxxxxxxxxxxxxxxxx",
"channelUsername": "examplefitnessco",
"numberOfSubscribers": 482000,
"totalViews": 61500000,
"totalVideos": 312,
"country": "US",
"joinedDate": "Feb 3, 2016",
"isVerified": true,
"avatarUrl": "https://yt3.googleusercontent.com/abc123.jpg",
"bannerUrl": "https://yt3.googleusercontent.com/def456.jpg",
"description": "Certified coach sharing fitness programs. Business: hello@examplefitnessco.com",
"email": "hello@examplefitnessco.com",
"phone": "+14155550123",
"website": "https://examplefitnessco.com",
"linktreeUrl": "https://linktr.ee/examplefitnessco",
"instagramHandle": "examplefitnessco",
"tiktokHandle": "examplefitnessco",
"twitterHandle": "examplefit",
"facebookUrl": "https://facebook.com/examplefitnessco",
"discordUrl": "https://discord.gg/examplefit",
"otherLinks": [
{ "title": "Merch store", "url": "https://examplefitnessco.store" }
],
"hasContactInfo": true,
"discoveryMethod": "keywordSearch",
"sourceKeyword": "fitness coach"
}

Scraped video (scrapeMode: "videos", legacy per-video mode)

{
"title": "Full Body Fitness Routine for Beginners",
"type": "video",
"id": "abc123XYZ89",
"url": "https://www.youtube.com/watch?v=abc123XYZ89",
"thumbnailUrl": "https://i.ytimg.com/vi/abc123XYZ89/hq720.jpg",
"viewCount": 954211,
"date": "2025-11-02T00:00:00.000Z",
"likes": 41230,
"location": null,
"channelName": "Example Fitness Co.",
"channelUrl": "https://www.youtube.com/channel/UCxxxxxxxxxxxxxxxxxxxxxx",
"channelUsername": "examplefitnessco",
"channelId": "UCxxxxxxxxxxxxxxxxxxxxxx",
"numberOfSubscribers": 482000,
"duration": "00:14:32",
"commentsCount": 1876,
"text": "A full-body beginner routine you can do at home. No equipment needed. #fitness #homeworkout",
"descriptionLinks": [
{ "url": "https://www.youtube.com/hashtag/fitness", "text": "#fitness" },
{ "url": "https://www.youtube.com/hashtag/homeworkout", "text": "#homeworkout" }
],
"subtitles": ["en", "es"],
"order": 0,
"commentsTurnedOff": false,
"fromYTUrl": "https://www.youtube.com/results?search_query=fitness+coach",
"hashtags": ["#fitness", "#homeworkout"],
"isCreativeCommons": false,
"isPurchased": false,
"transcript": "1\n00:00:00,000 --> 00:00:03,500\nWelcome back to the channel...\n",
"transcriptLanguage": "en",
"transcriptFormat": "srt"
}

How many results can you scrape with YouTube Scraper With Creator Contact & Lead Enrichment?

In leads mode, there is no hard cap in the Actor itself unless you set one: maxLeadsPerKeyword bounds discovery to 1–200 unique channels per keyword (default 5), and maxChannelsTotal optionally caps the combined total across all keywords and direct channels at up to 5,000 (0 = unlimited). Keyword discovery paginates the YouTube search endpoint internally up to 20 pages per keyword while collecting unique channels. In legacy per-video mode, maxVideos, maxShorts, and maxStreams each accept 0–9,999 per search term, and the search-result pagination for a single query stops after a built-in safety limit of 50 pages regardless of the limits set. There is no platform-side result cap beyond what YouTube's own search index returns for a given query. Larger runs simply take proportionally longer since each channel lead requires its own About-page fetch and each video requires its own metadata fetch.

Integrate YouTube Scraper With Creator Contact & Lead Enrichment and automate your workflow

YouTube Scraper With Creator Contact & Lead Enrichment works with any language or tool that can send an HTTP request.

REST API integration

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_API_TOKEN>")
run = client.actor("youtube-scraper-with-creator-contact-lead-enrichment").call(
run_input={
"discoveryKeywords": ["fitness coach"],
"maxLeadsPerKeyword": 5,
"requireEmail": True,
}
)
for lead in client.dataset(run["defaultDatasetId"]).iterate_items():
print(lead["channelName"], lead.get("email"))

Works in Python, Node.js, Go, Ruby, cURL — anything that can call the Apify API.

MCP for AI agents

This Actor is reachable through Apify's own Actors MCP Server (https://mcp.apify.com), which exposes any Actor by its store ID as a callable tool for MCP-compatible clients (Claude Desktop, Cursor, VS Code with GitHub Copilot). Add it with a tools query parameter, e.g. https://mcp.apify.com?tools=<your-username>/youtube-scraper-with-creator-contact-lead-enrichment, or install the local stdio server with npx -y @apify/actors-mcp-server.

Automation platforms (n8n, Make)

Apify publishes an official n8n integration that lets an "Apify" node run this Actor and pass its dataset items into the rest of an n8n workflow — useful for piping fresh creator leads straight into a CRM node on a schedule. Apify's Make integration works the same way: an "Apify" module runs the Actor and returns its dataset results as a Make scenario step, so a new batch of creator leads can trigger downstream modules (email, spreadsheet, CRM) automatically.

Scraping publicly accessible YouTube pages is generally lawful; this Actor only reads channel About pages and search results that any visitor can already see without logging in — it does not access private, login-gated, or restricted content. That said, the email addresses and phone numbers this Actor extracts are personal data under regulations like GDPR and CCPA once you store or use them, even though the creator chose to publish them. Having a lawful basis for further processing (e.g. legitimate interest for B2B outreach, honoring opt-out/deletion requests) is your responsibility as the data controller, not the Actor's. Consult legal counsel for commercial use cases involving bulk personal data, especially outreach campaigns run at scale across multiple jurisdictions.

Frequently asked questions

Does YouTube Scraper With Creator Contact & Lead Enrichment work without a YouTube account?

Yes. The Actor reads public channel About pages and YouTube's search endpoint directly; no YouTube account, login, or Google API key is required to run it.

How often is the scraped data updated?

Every run performs a live fetch against YouTube at the time it executes — there is no cache layer, so results reflect the channel or video's public state as of that run.

What happens if a creator hasn't published an email or phone number?

The email and phone fields are left null for that lead rather than guessed or fabricated. Set requireEmail and/or requirePhone to true if you only want leads that actually carry that contact signal — channels without one are skipped entirely instead of appearing as a null-value row.

Can I scrape private or restricted YouTube channels?

No. Only publicly accessible channel About pages and public search results are returned. Channels that are terminated, region-locked, or otherwise inaccessible without authentication will fail to fetch and are logged as a skipped target rather than returned as empty data.

Does YouTube Scraper With Creator Contact & Lead Enrichment work for AI agent workflows and LLM pipelines?

Yes. It's callable as a plain HTTP endpoint through the Apify API from any agent framework, and it's also reachable through Apify's Actors MCP Server for MCP-compatible clients. Every response is typed JSON with a stable field set, so there's no parsing step before passing results into an LLM context or agent tool call.

How does this Actor handle YouTube's anti-bot defenses?

Requests start with no proxy and automatically escalate to Apify datacenter proxy, then residential proxy, on a 403/429 response, retrying the residential connection up to 3 times before locking onto whichever level worked for the rest of the run. This applies to both channel About-page fetches and the legacy per-video search engine.

Does this Actor return data in a format LLMs can use directly?

Yes. Output is typed, normalized JSON with stable field names — no HTML, no selectors, no parsing. It can be passed directly into an LLM context window, indexed into a vector store, or routed through an agent tool call.

Can I use this Actor without managing proxies?

Yes. The Actor handles its own proxy escalation (none → datacenter → residential) automatically. You can still supply your own proxyConfiguration if you want to start from a specific proxy group instead of the default.

What happens when YouTube changes its structure or blocks the scraper?

The Actor is maintained, and its output schema is designed to stay stable — field names and types on your end don't change even when the underlying page structure does. No specific turnaround time is promised for any given fix.

Your feedback

Found a bug or missing a field? We want to know. Open an issue through the Issues tab on this Actor's Apify Store page, or reach out through Apify Console's support channel — reports like this directly shape what gets fixed and maintained next.