YouTube Channel Email & Sponsor Lead Scraper avatar

YouTube Channel Email & Sponsor Lead Scraper

Pricing

from $4.00 / 1,000 creator leads

Go to Apify Store
YouTube Channel Email & Sponsor Lead Scraper

YouTube Channel Email & Sponsor Lead Scraper

Find YouTube creator emails, phones, websites, socials, engagement signals, sponsor history, and lookalike channels from URLs or niche searches.

Pricing

from $4.00 / 1,000 creator leads

Rating

0.0

(0)

Developer

Kelopr_bk

Kelopr_bk

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

3

Monthly active users

6 hours ago

Last modified

Share

YouTube creator email, sponsor and lookalike intelligence

Turn public YouTube channel data into outreach-ready creator leads. Find public business emails, phones, websites and social profiles; verify a channel's published country against your target region; identify recent-video content languages; measure recent audience activity; verify sponsor signals with source videos; or discover explainable lookalike creators โ€” without a YouTube login, cookies, or a browser.

Choose one simple workflow, set the number of creators you need, and press Start. Every workflow returns the same clean creator record, so results are easy to export to CSV, Excel, JSON, an API, a webhook, or your CRM.

๐Ÿงญ How the Actor works

Choose one source
โ”œโ”€ ๐Ÿ”— channelContacts โ†’ channel URLs, @handles, IDs, or video URLs
โ”œโ”€ ๐Ÿ” keywordDiscovery โ†’ niches and search phrases
โ””โ”€ ๐Ÿงฌ lookalikeDiscovery โ†’ example channels
โ”‚
โ–ผ
Discover + deduplicate creators
โ”‚
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Enrich public data โ”‚
โ”‚ ๐Ÿ“บ channel and audience metrics โ”‚
โ”‚ ๐ŸŽฌ recent videos and pinned comment โ”‚
โ”‚ ๐Ÿ“ง public emails + domain validation โ”‚
โ”‚ ๐Ÿ“ž phones, websites and public profiles โ”‚
โ”‚ ๐Ÿค sponsor signals + evidence videos โ”‚
โ”‚ ๐Ÿงฌ similarity score + matching reasons โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚
โ–ผ
Apply contact, size and activity filters
โ”‚
โ–ผ
Leads โ€ข Contacts โ€ข Sponsors โ€ข Lookalikes โ€ข Full details

๐Ÿš€ How to use the Actor

Step 1 โ€” Choose a workflow

Open the Input tab and select How should we find creators?

WorkflowChoose it whenโ€ฆFill in this field
๐Ÿ”— Enrich channels I already knowYou already have channel URLs, handles, IDs, or video URLsYouTube channels or videos
๐Ÿ” Discover creators by nicheYou want creators from a topic such as fitness, finance, SaaS, or gamingKeywords or niches
๐Ÿงฌ Find similar creatorsYou have one or more example channels and want relevant alternativesExample channels

Only the source field for the selected workflow is used. You can paste one item or many items, one per line.

Step 2 โ€” Add your starting point

Accepted channel inputs:

  • @demo_creator
  • https://www.youtube.com/@demo_creator
  • https://www.youtube.com/channel/UC_EXAMPLE_ID
  • https://www.youtube.com/watch?v=DEMO_VIDEO_ID

For niche discovery, use focused phrases such as personal finance creators, home fitness, or B2B SaaS tutorials. Several focused searches usually produce better leads than one broad word such as business.

Step 3 โ€” Choose the region behavior

YouTube search region localizes YouTube discovery for the selected market. Then choose how exact the result must be:

  • ๐ŸŒ Localized discovery โ€” recommended uses the selected market as a ranking hint and keeps relevant creators even when their published country is different or unavailable.
  • ๐Ÿ“ Strict country match saves only channels whose public YouTube country exactly matches the selected region. Channels that hide their country are excluded rather than guessed.

Every saved row explains the outcome through targetRegion, channelCountryCode, regionMatch, and regionMatchStatus. The run summary shows matched, different, and unknown coverage.

Step 4 โ€” Choose the result size and depth

  • Maximum creators to save is the final global limit after duplicates are removed.
  • โšก Fast is best for quick screening: light channel and recent-video analysis, without external website scans.
  • โš–๏ธ Balanced is recommended: recent videos, pinned comments, linked websites, public profiles, email-domain checks, and sponsor intelligence.
  • ๐Ÿ”ฌ Deep checks more recent videos and linked pages, public secondary channels, older contact-oriented uploads, structured/obfuscated website data, common contact paths and public contact forms. Use it when completeness matters more than speed.

Step 5 โ€” Apply optional lead filters

  • Creators with any contact is the recommended default. It avoids saving completely contactless rows.
  • Creators with an email keeps only email-ready leads.
  • Subscriber, recent-view, activity, and Sponsor Readiness filters can narrow the list before it is saved.
  • Use 0 to disable a numeric filter.

Step 6 โ€” Start and open the right result view

Press Start. As soon as results are saved, the Leads table is the first output shown. You can switch to another view when needed:

  • Leads โ€” the quickest CRM-ready shortlist with lead tier, best contact route, regional match, and qualification reasons.
  • Contacts โ€” emails, phones, evidence URLs, websites, and social profiles.
  • Sponsor intelligence โ€” sponsor brands, evidence videos, activity, reach, and scores.
  • Lookalike creators โ€” similarity score, shared topics, and clear matching reasons.
  • Channel details โ€” the widest technical record.
  • Run summary โ€” saved/filtered/failed counts, contact coverage, warnings, duration, and suggested next steps.

๐ŸŽฏ Ready-to-run examples

Find sponsor-ready creators in a niche

{
"scrapeType": "keywordDiscovery",
"searchQueries": ["personal finance creators", "technology reviews"],
"region": "US",
"maxResults": 50,
"contactFilter": "emailOnly",
"enrichmentDepth": "balanced",
"minSubscribers": 10000,
"minSponsorReadinessScore": 40
}

Enrich a list of channels

{
"scrapeType": "channelContacts",
"channels": [
"@demo_creator",
"https://www.youtube.com/channel/UC_EXAMPLE_ID"
],
"maxResults": 50,
"contactFilter": "contactableOnly",
"enrichmentDepth": "balanced"
}

Find lookalike creators

{
"scrapeType": "lookalikeDiscovery",
"seedChannels": ["@demo_tech_channel"],
"maxResults": 30,
"contactFilter": "allChannels",
"enrichmentDepth": "fast",
"minSubscribers": 10000,
"activeWithinDays": 120
}

The lookalike score is an explainable heuristic based on public topics, the discovery query, and relative audience size. It does not claim access to private audience-overlap data. similarityReasons names the shared topics, the seed-derived search a channel came from, and how its audience compares in subscribers; similarityBreakdown gives each signal's contribution to the score, so a low score says which signal was missing rather than leaving it unexplained.

Channels YouTube generates itself โ€” the - Topic audio pages and other auto-generated entries โ€” are dropped during discovery in both search modes. They publish no owner and can never sponsor anyone, so enriching them wasted a result slot; candidateSupply.autoGeneratedSkipped reports how many were skipped.

๐Ÿ“ฆ Output schema โ€” what data do you get?

One dataset row represents one successfully processed creator. The schema stays consistent across all three workflows.

Schema groupFields
๐Ÿ“บ IdentitychannelId, channelName, channelHandle, channelUrl, avatarUrl, isVerified, description, keywords, country, joinedDate, channelLinkTitles, channelLinkUrls
๐ŸŒ Region verificationtargetRegion, channelCountryCode, regionMatch, regionMatchStatus, regionMatchSource
๐Ÿ—ฃ๏ธ Content languageprimaryContentLanguage, contentLanguages, contentLanguageConfidencePercent, contentLanguageCoveragePercent, contentLanguageSource
๐Ÿ”Ž Discovery sourcesourceMode, sourceInput, sourceQuery, sourceSeedChannel, sourceSeedChannelId, searchRank
๐Ÿ“Š AudiencesubscriberCount, totalViews, videoCount, avgRecentViews, viewRatePercent, uploadFrequencyPerMonth, latestVideoDate
๐Ÿ“ง EmailsprimaryEmail, primaryEmailRole, primaryEmailValidation, primaryEmailConfidence, primaryEmailSourceType, primaryEmailSourceUrl, emails, emailCount, emailRoles, emailValidations, emailSourceTypes, emailSourceUrls
๐Ÿ“ž Other contactsphones, phoneCount, primaryPhone, phoneSourceTypes, phoneSourceUrls, websiteUrl, websiteUrls, websiteCount, socialUrls, socialLinkCount, instagramUrl, xUrl, tiktokUrl, linkedinUrl, githubUrl, discordUrl, telegramUrl, whatsappUrl, facebookUrl, twitchUrl
๐Ÿค SponsorssponsorReadinessScore, contactPriorityScore, sponsoredVideosFound, sponsoredVideoRatePercent, sponsorBrands, sponsorshipSignals, latestSponsoredAt, sponsorEvidence, sponsorEvidenceUrls
๐Ÿ† Lead qualificationleadTier, leadStatus, recommendedContactMethod, qualificationReasons, qualificationMethod
๐Ÿงฌ LookalikessimilarityScore, similarityBreakdown, sharedTopics, similarityReasons, audienceSimilarity, similarityMethod
๐ŸŽฌ EnrichmentrecentVideosScanned, recentVideosDetailed, recentVideoIds, recentVideoTitles, videoEnrichmentStatus, pinnedCommentStatus, pinnedCommentVideoId, pinnedCommentAuthor, pinnedCommentText, pinnedCommentUrls
๐Ÿ› ๏ธ Quality statuscontactStatus, hasEmail, hasAnyContact, hasLinks, externalLinkCount, hasHiddenEmail, protectedEmailStatus, alternativeEmailSourceTypes, contactFormUrl, contactFormUrls, secondaryChannelScanStatus, secondaryChannelsScanned, archivedContactSearchStatus, archivedContactVideosScanned, contactEnrichmentStatus, contactPagesScanned, contactSourcesAttempted, contactSourceFailures, status, scrapedAt

Example output object

All values below are fictional examples.

{
"channelName": "Demo Creator",
"channelUrl": "https://www.youtube.com/@demo_creator",
"subscriberCount": 184000,
"avgRecentViews": 42600,
"targetRegion": "US",
"channelCountryCode": "US",
"regionMatchStatus": "matched",
"primaryContentLanguage": "en",
"primaryEmail": "partnerships@example.test",
"emailCount": 1,
"primaryEmailRole": "partnerships",
"primaryEmailValidation": "not_checked",
"phones": ["+12025550104"],
"phoneCount": 1,
"contactStatus": "EMAIL_AVAILABLE",
"websiteUrls": ["https://example.test/contact"],
"sponsorReadinessScore": 84,
"sponsoredVideosFound": 2,
"sponsoredVideoRatePercent": 40.0,
"sponsorBrands": ["Example Brand"],
"sponsorEvidenceUrls": ["https://www.youtube.com/watch?v=DEMO_VIDEO_ID"],
"leadTier": "A",
"recommendedContactMethod": "email",
"similarityScore": 91,
"sharedTopics": ["camera", "reviews", "technology"],
"similarityReasons": ["Shares 3 public topic(s) with the seed: camera, reviews, technology"],
"status": "success"
}

Each sponsorEvidence item has this shape:

{
"videoId": "DEMO_VIDEO_ID",
"videoTitle": "Example sponsored video",
"videoUrl": "https://www.youtube.com/watch?v=DEMO_VIDEO_ID",
"publishedAt": "2026-08-01T00:00:00+00:00",
"brands": ["Example Brand"],
"signals": ["sponsored by", "paid promotion disclosure"],
"confidence": 95,
"evidenceText": "Sponsored by Example Brand."
}

How contact fields should be read

  • primaryEmail is the highest-priority public email found, not simply the first address on a page.
  • primaryEmailRole labels likely use: partnerships, business, management, booking, creator, personal, press, support, jobs, legal, or unknown.
  • primaryEmailValidation checks the email domain/MX setup. It does not send a message and cannot guarantee that an individual mailbox accepts mail. primaryEmailValidationScope states this on every row: domain_mail_records_only when the check ran, not_checked when it did not.
  • The Creators with an email filter keeps only creators whose address sits on a domain that can receive mail. Addresses on domains with no mail records, and disposable domains, no longer satisfy the filter; they are still listed as secondary evidence when a deliverable address exists. Inconclusive checks (a DNS timeout) count as deliverable, because a timeout is not evidence against an address.
  • primaryEmailSourceUrl and phoneSourceUrls let you verify contact evidence at its public source.
  • channelLinkTitles stays aligned with channelLinkUrls, preserving the labels published on the channel.
  • websiteUrls and socialUrls separate public creator sites from social profiles; the count fields make CRM filtering easier.
  • hasHiddenEmail: true means YouTube indicates a protected business-email form exists. YouTube's logged-out response contains only โ€œSign in to see email addressโ€; the exact protected value is not present, so the Actor does not claim to reveal it or bypass login/CAPTCHA.
  • In Deep mode, protectedEmailStatus: alternative_public_email_found means the Actor found an independently public email in channel/video text, a linked secondary channel, a creator-linked site/profile, structured page data, or an older contact-oriented upload. The corresponding primaryEmailSourceUrl remains the evidence.
  • protectedEmailStatus: youtube_protected_only means all bounded public alternatives were checked but no current source-backed email was found. The Actor keeps social links, websites and contactFormUrl as alternative outreach routes.
  • Stale third-party email lists and guessed mailbox patterns are not promoted into primaryEmail.
  • Creator-owned websites found in public video descriptions can be checked when their domain matches the channel identity. Unrelated sponsor sites are not treated as creator contact sources.

How sponsor evidence works

Recent video metadata and descriptions are checked for paid-promotion disclosure and phrases such as sponsored by, paid partnership, affiliate link, use code, and #ad.

Always review the evidence URL before making a business decision: these are strong public signals, not a legal determination that a sponsorship occurred.

โš™๏ธ Input schema

The normal Input screen intentionally shows only the settings most users need. Older API integrations can still send the advanced fields listed below.

FieldTypeMeaning
scrapeTypestringchannelContacts, keywordDiscovery, or lookalikeDiscovery
channelsstring[]Channel/video sources used by channelContacts
searchQueriesstring[]Topics used by keywordDiscovery
seedChannelsstring[]Example channels used by lookalikeDiscovery
maxResultsintegerMaximum saved creators, from 1 to 1000
regionstringTwo-letter market used to localize YouTube discovery
regionFilterstringlocalized (ranking hint) or strict (require an exact published-country match)
contactFilterstringcontactableOnly (default), emailOnly, or allChannels
enrichmentDepthstringfast, balanced (default), or deep
minSubscribers / maxSubscribersintegerSubscriber range; 0 disables the limit
minAverageViewsintegerRequired average across analyzed recent videos
activeWithinDaysintegerRequire a recent upload within N days; 0 disables it
minSponsorReadinessScoreintegerRequired score from 0โ€“100; 0 disables it

Enrichment preset schema

PresetVideosWebsite/profile scanEmail-domain checkBest for
fast1NoNoFast qualification and broad discovery
balanced5Up to 4 linked destinations and 2 pages/siteYesMost outreach lists
deep12Up to 10 linked destinations and 6 pages/siteYesMaximum public enrichment

Deep is the heavy, completeness-first mode; it has no results-per-minute target. It uses full watch-page metadata for up to 12 videos, with 9 creators processed concurrently by default, up to 90 seconds for video enrichment and 45 seconds per website phase. If a full video page is unavailable, public JSON can preserve its available description; that result remains marked partial. Source timeouts and financial guards still apply.

Deep starts creator-linked websites while loading recent videos, then uses any remaining destination slots for newly discovered creator-owned sites. A domain is crawled once per creator; link-aggregator destinations share the same limit. Activity/view filters run before website work when enabled. Each website phase has its own bounded timeout; unreachable sources remain explicitly partial. Deep reads full public video pages; lighter modes use bounded YouTube metadata responses. Shortened description links are resolved to their published targets. Language fields identify native metadata versus text inference.

Advanced API-compatible settings: lookalikeQueriesPerSeed, maxChannelsPerQuery, recentVideosToScan, videoEnrichmentTimeoutSecs, scanPinnedComment, scanWebsites, followSocialProfiles, validateEmails, maxExternalLinks, maxWebsitePages, websiteScanTimeoutSecs, maxConcurrency, maxRetries, requestTimeoutSecs, and proxyConfiguration. An explicitly supplied advanced value overrides the selected depth preset.

Supported regions: ๐Ÿ‡บ๐Ÿ‡ธ US ยท ๐Ÿ‡ฌ๐Ÿ‡ง GB ยท ๐Ÿ‡จ๐Ÿ‡ฆ CA ยท ๐Ÿ‡ฆ๐Ÿ‡บ AU ยท ๐Ÿ‡ฉ๐Ÿ‡ช DE ยท ๐Ÿ‡ซ๐Ÿ‡ท FR ยท ๐Ÿ‡ช๐Ÿ‡ธ ES ยท ๐Ÿ‡ฎ๐Ÿ‡น IT ยท ๐Ÿ‡ณ๐Ÿ‡ฑ NL ยท ๐Ÿ‡ต๐Ÿ‡ฑ PL ยท ๐Ÿ‡ง๐Ÿ‡ท BR ยท ๐Ÿ‡ฒ๐Ÿ‡ฝ MX ยท ๐Ÿ‡ฆ๐Ÿ‡ท AR ยท ๐Ÿ‡ฎ๐Ÿ‡ณ IN ยท ๐Ÿ‡ฎ๐Ÿ‡ฉ ID ยท ๐Ÿ‡ฏ๐Ÿ‡ต JP ยท ๐Ÿ‡ฐ๐Ÿ‡ท KR ยท ๐Ÿ‡น๐Ÿ‡ผ TW ยท ๐Ÿ‡ต๐Ÿ‡ญ PH ยท ๐Ÿ‡น๐Ÿ‡ญ TH ยท ๐Ÿ‡ป๐Ÿ‡ณ VN ยท ๐Ÿ‡น๐Ÿ‡ท TR ยท ๐Ÿ‡บ๐Ÿ‡ฆ UA ยท ๐Ÿ‡จ๐Ÿ‡ฟ CZ ยท ๐Ÿ‡ธ๐Ÿ‡ช SE ยท ๐Ÿ‡ณ๐Ÿ‡ด NO ยท ๐Ÿ‡ฉ๐Ÿ‡ฐ DK ยท ๐Ÿ‡ซ๐Ÿ‡ฎ FI ยท ๐Ÿ‡ฟ๐Ÿ‡ฆ ZA ยท ๐Ÿ‡ฆ๐Ÿ‡ช AE

YouTube's gl market setting localizes search but is not an exact creator-location filter. Use Strict country match when exact geography matters. The Actor uses only the country a creator publicly publishes on YouTube; it never guesses a hidden location. Content-language fields use YouTube metadata when available and otherwise a local recent-title/description heuristic; contentLanguageSource and coverage show which method produced the result.

๐Ÿ”Œ API example

Replace YOUR_APIFY_TOKEN with a secret stored outside your source code.

curl -X POST "https://api.apify.com/v2/acts/trakk~youtube-channel-email-sponsor-leads/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"scrapeType": "keywordDiscovery",
"searchQueries": ["home fitness creators"],
"maxResults": 20,
"contactFilter": "emailOnly",
"enrichmentDepth": "balanced"
}'

For recurring lead lists, save the input as an Apify Task, then use Schedules to run it daily or weekly. Use Webhooks or an integration to send completed datasets to another system.

๐Ÿ’ณ Pricing

This Actor uses Pay per event pricing:

  • A tiny Actor-start event is charged when a run starts.
  • The primary charge applies only to a successfully saved creator row.
  • The current public tier is $5 per 1,000 saved creators, with lower per-result prices on higher Apify tiers (down to $4 per 1,000). The Pricing tab is the source of truth for your account.
  • Filters can reduce saved rows. A source that fails or a creator that is filtered out is not pushed as a successful creator result.

Start with 10โ€“20 results and Fast or Balanced depth to measure contact coverage before ordering a larger list.

๐Ÿ›Ÿ Troubleshooting and data notes

The run summary says invalid_input

This is intentional and does not count as a crash. Open Run summary and read the exact message. Usually the selected workflow has no usable source value, or a channel URL/handle is malformed.

Fewer rows were saved than maxResults

maxResults is a cap, not a guarantee, but the Actor now works at it instead of stopping at the first pass. Filters are applied after enrichment, so rejected creators are replaced with fresh candidates from the searches that still have unread pages, up to six replacement rounds and a candidate pool of four times maxResults. candidateSupply in the run summary reports how many replacements were pulled, how many rounds ran, and whether the pool was exhausted.

Duplicates, inaccessible channels, discovery supply, contactFilter, subscriber/view/activity filters, and Sponsor Readiness filters can still reduce the final count when the source genuinely runs out of matching channels. The run summary separates discovered, processed, filtered, duplicate, and failed counts.

The Actor also stops when the spending limit or an internal resource bound is reached. Deep has a separate allowance for larger full video pages: 32 MiB initially plus 8 MiB per saved creator (up to 1 GiB per run); this does not raise the monetary or residential limits. Repeated bot-challenge pages are skipped after the first full-source attempt and public metadata remains available through the bounded JSON fallback. Restrictive email-only searches can require inspecting many creators to find a few matching leads. resourceBudget.stopReason explains a resource stop, and completed rows remain available. Reduce enrichment depth or broaden the filters when this happens.

Email-domain checks are bounded to 50 extracted addresses per creator and 2,000 domains per run. Additional public addresses remain in the results with not_checked validation; domain validation is not a mailbox-deliverability guarantee.

querySummaries reports collected candidates, pagination limits, per-query outcomes, and the run's stop reason. A failed later search page does not discard candidates collected from earlier pages. Language estimates use a bounded text sample; uncertain short text remains unknown.

The run summary says PARTIAL

PARTIAL means at least one optional enrichment reported less than a full result, not that the saved rows are wrong. enrichmentQuality in the run summary splits it into video, contact and pinned-comment shortfalls. A video whose primary source was refused and then collected through the fallback route is complete: it is counted in videoSourceFallbacks, and videoEnrichmentStatus stays completed, so partial now means videos are actually missing.

Some fields are empty

The Actor returns only data publicly exposed by YouTube or by pages the channel links to. Not every creator publishes an email, phone, country, website, sponsor disclosure, or complete statistics. Empty values are returned as null or an empty array instead of invented data.

Why did a website scan stop early?

The Actor checks the remaining result-charge allowance before discovery, bounds unsuccessful work and residential traffic, and stops when its resource guard is reached. A resource stop can return fewer than maxResults; see OUTPUT.resourceBudget.stopReason. MX validation checks at most 50 unique email addresses per creator and 2,000 domains per run while retaining other extracted addresses as not_checked.

Every enrichment depth uses bounded time budgets so one slow site cannot stall the whole run. Check contactEnrichmentStatus, videoEnrichmentStatus, secondaryChannelScanStatus, archivedContactSearchStatus, contactPagesScanned, contactSourcesAttempted, and contactSourceFailures. Use Deep if the extra completeness is worth the additional runtime.

Is this an official YouTube product?

No. This is an independent data-extraction tool and is not affiliated with or endorsed by YouTube. Use public contact data responsibly and follow applicable privacy, marketing, and platform rules.

โœ… What happens after every run?

The terminal status stays short and readable. The final Run summary reports:

  • requested, discovered, processed, saved, filtered, duplicate, and failed counts;
  • creators with any contact, an email, or sponsor signals;
  • contact and email coverage percentages;
  • selected workflow, enrichment depth, region, duration, warnings, and next steps.

If this Actor saves you research time, a โญ Store review helps other teams find it and tells me what to improve next.

Tags: youtube scraper ยท youtube email finder ยท creator leads ยท influencer marketing ยท sponsor intelligence ยท lookalike creators ยท lead generation