YouTube TikTok Creator Emails - Instagram Leads & Socials avatar

YouTube TikTok Creator Emails - Instagram Leads & Socials

Pricing

from $1.60 / 1,000 creator leads

Go to Apify Store
YouTube TikTok Creator Emails - Instagram Leads & Socials

YouTube TikTok Creator Emails - Instagram Leads & Socials

Creator leads scraper and creator email finder for TikTok, Instagram and YouTube in one run: TikTok creator emails, YouTube creator emails and Instagram influencer leads - one row per creator with bio, followers, links, verified flag, business email and a 0-100 lead score. Only-new monitoring.

Pricing

from $1.60 / 1,000 creator leads

Rating

5.0

(2)

Developer

Flash Scrape

Flash Scrape

Maintained by Community

Actor stats

5

Bookmarked

10

Total users

9

Monthly active users

a day ago

Last modified

Share

Creator Leads Scraper is a pay-per-result creator email finder that scrapes TikTok, Instagram and YouTube profiles in a single run — one row per creator with 51 identical columns, an MX-verified contact email wherever the creator published one, no login and no API key, at $2 per 1,000 leads.

Try it: Find fitness YouTube creators with emails

Run report: creators with public emails and follower counts from a real run

Creator leads scraper and creator email finder — TikTok creator emails, YouTube creator emails and Instagram influencer leads in one run.

Find creators on TikTok, Instagram and YouTube in a single run, enrich them with a contact email from the site they link to, score them, and get one clean row per creator. Every row has the same 51 columns whichever platform it came from, so a mixed list opens as one spreadsheet instead of three.

No login, no API key, no cookie, and no dependency on any other Actor. YouTube keyword search discovers new creators; TikTok and Instagram enrich the handles you supply.

At a glance (for humans and AI agents alike):

  • Smallest useful input — paste and run:

    { "platforms": ["youtube"], "searchKeywords": ["home barista"], "maxCreators": 10 }
  • What comes back: one row per creator, 51 identical columns (handle, bio, followers, email + source + an MX-verified email_status, website, six social URLs, 0–100 lead score, the keyword that found it) — full table below. Rows land in the dataset wave by wave, so a run that hits its timeout keeps everything delivered before it.

  • What it costs: $0.002 per creator lead delivered — $2 per 1,000 leads, 2,500 leads per $5 at the live rate (measured 2026-08-29; the Store Pricing tab is authoritative). Filtered-out, blocked and nonexistent handles are never billed.

  • What it does NOT do: no TikTok or Instagram keyword/hashtag search (handles only — YouTube is the discovery platform), no phone numbers, no engagement rate outside Instagram. Details in What this Actor does not do.

  • Exports & alerts: every run downloads as CSV, JSON or Excel with five saved views; onlyNewCreators: true on a schedule delivers only creators that appeared since the last run, and webhookUrl posts a digest to Slack, Discord or any webhook when new rows land.


Quick recipes for the three most-asked jobs

TikTok email finder by username — you have handles, you want whoever published a contact:

{ "platforms": ["tiktok"], "profiles": ["handle1", "handle2"], "onlyWithEmail": true }

Emails come only from the bio or the creator's linked site — read the TikTok fill rates before expecting a full sheet.

YouTube channel email finder by keyword — discover channels in a niche and extract their About-page and website emails:

{ "platforms": ["youtube"], "searchKeywords": ["vegan meal prep"], "maxCreators": 30, "onlyWithEmail": true }

Find micro influencers with emails — keyword discovery plus a follower band:

{
"platforms": ["tiktok", "instagram", "youtube"],
"searchKeywords": ["home coffee gear"],
"crossPlatformDiscovery": true,
"minFollowers": 5000,
"maxFollowers": 50000,
"onlyWithEmail": true,
"maxCreators": 50
}

crossPlatformDiscovery: true also pulls the Instagram and TikTok profiles those channels link to (keep all three platforms listed — the hop only scrapes platforms you selected), so one keyword builds a cross-platform micro-influencer contact list.


Why one Actor instead of three

An influencer-marketing agency buys an outcome — creator leads with emails — not a source. Running three single-platform scrapers gives you three exports with three different column sets, three separate crawls over the same websites, and no way to see that a brand's TikTok row and its YouTube row are the same business. This Actor does the website crawl once for all three platforms and cross-links the result in also_on_platforms.


What it does, step by step

  1. Pick platforms and targets — a YouTube keyword, YouTube channels, TikTok usernames, Instagram usernames, or any mix.
  2. YouTube discovery first — each keyword returns roughly 30 channels, and every channel's About page is parsed for its description, links, counts, country, join date and verified badge.
  3. Optional cross-platform hop — the Instagram and TikTok profiles linked from those About pages are scraped too (off by default, because each one is an extra billed row).
  4. TikTok and Instagram profiles — fetched over HTTP/2 through a rotating residential proxy.
  5. One shared email pass — every creator's linked site is visited (home, /contact, /about; a Linktree-style page is resolved by brand-name match, and when the first link is a link-in-bio page or storefront the creator's own domain further down their published links is crawled too) for emails and social profiles. A link-shortener (bit.ly, geni.us, …) is followed to its destination and only that destination's own site is crawled; if it does not resolve to a real site the creator is left with no email rather than somebody else's.
  6. Verify, filter, score, cross-link — every best email is graded deliverable / risky / undeliverable / unknown with an MX lookup over DNS (see How emails are verified), your quality filters run before billing, every lead is scored 0–100 and graded A–F, and rows that resolve to the same creator on another platform are cross-linked.
  7. Export — a sortable table with five saved views, downloadable as CSV, JSON or Excel.

What each platform can and cannot deliver

None of these three platforms publishes a contact email field. Every email in your export was either typed into a bio by the creator or found on the website they link to. Read the fill rates below before you buy.

TikTok

  • CAN: full public profile — nickname, bio, bio-link, exact follower / following / likes / video counts (from TikTok's precise statsV2, not the rounded display numbers), verified badge, business-account flag and category, TikTok Shop seller flag, account creation date.
  • THIS ACTOR DOES NOT DISCOVER ON TIKTOK. Logged-out HTTP exposes no /tag/ data — probed 2026-08-09: /tag/<hashtag>, /search?q= and /search/user?q= render a rehydration blob containing zero usernames, and the search API answers 200 with an empty body without TikTok's signed parameters. Browser-based scrapers exist but are slower and pricier; this Actor stays HTTP-only. You must supply the handles.
  • NO ENGAGEMENT RATE. The profile payload's itemList was empty on 28 of 28 profiles probed and no play count appears anywhere in it, so a per-video engagement rate cannot be computed. Those columns are null on every TikTok row rather than fabricated.
  • NO PHONE. TikTok publishes none.
  • Email fill: the standalone TikTok Actor measured an email in the bio itself on 1 of 28 profiles (3.6%) and a bio link present on 15 of 28 (54%). In this Actor's own verification runs on 2026-08-09, 3 of 9 distinct TikTok creators ended up with an email after enrichment (an earlier build-test pass measured 2 of 7). A creator who links their own domain usually yields an address; a Linktree or a link-shortener usually does not.
  • Needs a residential proxy in practice: the standalone TikTok Actor measured 34 of 34 handles returning data through Apify Proxy RESIDENTIAL with a fresh session per attempt (1.4 attempts average), against 3 of 15 from one un-proxied IP once it went hot. TikTok answers a hot IP with an empty JavaScript shell and HTTP 200, not an error — which is why every retry rotates the exit IP instead of just trying again. (In this Actor's own verification runs from a fresh un-proxied laptop IP, 15 of 16 handles still came back, most of them on the second to fourth attempt, and 1 was refused on all six. An earlier build-test pass measured 8 of 9. The un-proxied path works until the IP goes hot — which is exactly why the default is residential.)

Instagram

  • CAN: the public profile record — bio, follower / following / post counts, verified, private and business flags, every link in bio with Instagram's l.instagram.com wrapper resolved, and the only engagement metrics in this Actor: average likes, average comments, engagement rate and posting cadence computed from the ~12 recent posts the public endpoint returns. posts_sampled reports that denominator on every row.
  • CANNOT DISCOVER by keyword or hashtag. The only expansion is Instagram's own related-accounts list (discoverRelated), which starts from a handle you already have.
  • NO BUSINESS EMAIL. business_email, business_phone_number and category came back None even on large verified business accounts (checked on @gymshark). The only email sources on Instagram are the bio text and the linked website — the same two sources as the other platforms. There is no phone column in this Actor for the same reason.
  • PARTIAL DELIVERY AT VOLUME IS NORMAL, not a fault. Instagram rate-limits shared residential pools hard: the standalone Instagram Actor measured two consecutive 5-handle runs on 2026-08-09 delivering 2 of 5 profiles each, and this Actor's verification runs delivered 11 of 16 handles (the other 5 split between Instagram-side HTTP 400s and handles that do not exist). Ask for a handful of handles per run, expect some to be refused, and know that a refused handle is never billed.
  • Instagram also answers HTTP 429 to every HTTP/1.1 request; this Actor speaks HTTP/2 (0/6 versus 5/6 through the same proxy in the same minute).
  • Instagram occasionally answers HTTP 400 for one specific account (a broken business-category asset on their side, reproducible per account). Those handles are reported by name and skipped, not retried forever — 3 of the 16 handles in this Actor's verification runs hit it.
  • Email fill: in this Actor's own verification runs on 2026-08-09, 1 of 5 distinct Instagram creators ended up with an email after enrichment (an earlier build-test pass measured 2 of 5). Both are tiny samples; treat them as an order of magnitude, not a guarantee.

YouTube

  • The only platform here that discovers. A keyword search returns about 30 unique channels — measured 28, 27 and 36 for three keywords on 2026-08-09, combining YouTube's plain results page with its channel-filtered one. More volume comes from more keywords, not from a bigger number in the box; maxResults is capped at 40 for that reason. Channels that recur across a keyword's result pages (several videos in the results, or listed by more than one keyword) are fetched first, so under a creator cap the recurring channels are the ones delivered rather than whichever YouTube rendered first; matched_keyword records which keyword(s) found each row and keyword_in_bio whether one of your keywords appears in its About text.
  • CAN: About-page description, the channel's published links (website plus socials), subscriber count, exact total views, exact video count — and from those two exact numbers, avg_views_per_video, the channel's lifetime average views per video (e.g. 433,406,980 views over 2,599 videos = 166,759), country, join date, channel id, verified badge.
  • The email behind YouTube's "View email address" button is NOT read. That button needs a Google login, a reCAPTCHA and carries a small daily reveal quota — this Actor stays keyless and logged-out. A YouTube email comes from the About text, the channel's published links and the linked site instead, which is where the fill rates below were measured.
  • SUBSCRIBER COUNTS ARE ROUNDED by YouTube itself ("91.6K", "4.37M"). Every YouTube row carries followers_estimated: true so you can see which numbers are exact. Total views and video counts are exact.
  • NO CATEGORY and NO BUSINESS FLAG. YouTube publishes neither, so category, is_business and is_shop_seller are null on YouTube rows — and the lead score is normalised per platform so YouTube leads are not structurally ranked below TikTok ones for a signal YouTube does not emit.
  • Link and email fill varies a lot by keyword, so here are two independent samples taken on 2026-08-09, one from the build pass and one from the verification pass that followed it. Sample A (9 channels, keyword home barista plus one named channel): 5 of 9 had an email in the About text, rising to 6 of 9 after website enrichment; 4 of 9 published a non-social website; 7 of 9 an Instagram link; 3 of 9 a TikTok link. Sample B, re-measured independently (8 channels, keyword vegan meal prep plus two named channels): 3 of 8 in the About text, 4 of 8 after enrichment; 5 of 8 published a website; 6 of 8 an Instagram link; 3 of 8 a TikTok link. A broad keyword returns small channels that publish nothing — expect the low end. Reading the About page rather than just the channel description is what makes those link rates possible, and it is what makes cross-platform discovery work at all.
  • YouTube answered every About-page request it made un-proxied from a laptop — 30 of 30 across five build-test runs and 78 of 78 across eight verification runs on 2026-08-09. On-platform the Actor fetches YouTube direct from the container as well (measured: the same 8 channels took 665 s through Apify Proxy and 21 s direct, identical rows), so a YouTube-heavy run spends no proxy traffic at all; supply proxyUrls only if your own network requires it.

Across all three

  • One row per creator ACCOUNT. A brand that runs TikTok, Instagram and YouTube comes back as three rows and is billed as three leads, because the follower counts, the bios and often the emails differ per platform and collapsing them would destroy data you paid for. Rows that resolve to the same email or the same domain are cross-linked with also_on_platforms so you can group them yourself in one spreadsheet step.
  • also_on_platforms fills on single-platform runs too: it also names every platform the creator's own links point at (their published bio/About links, plus what the website crawl found), so a YouTube-only run still tells you which channels have an Instagram, a TikTok, a Facebook page, an X account or a LinkedIn — without paying for those platforms' rows.
  • Every row carries discovered_via, so you can always see whether a lead came from your input, from a YouTube keyword, from a link on a YouTube channel, or from Instagram's related accounts.
  • Filters run before billing. Rows removed by your filters, handles that do not exist and handles that were blocked are never charged, and a run that delivers zero rows charges nothing.
  • No phone column exists anywhere in the output, because none of the three platforms publishes one.
  • The AI cold-opener is optional, runs on your own OpenAI or Anthropic key, is used once per run and is never stored.

What data you get

One row per creator, best leads first within each delivery wave, with the same 51 columns on every row. A column a platform cannot supply is null — never missing, never an empty string — so your CSV has stable headers whichever platforms you ran. The Platforms column below says honestly which platforms can fill each column — read it before filtering on one.

ColumnWhat it isPlatforms
platformtiktok, instagram or youtubeall
handle, name, profile_urlUsername, display name, direct profile linkall
user_id, avatar_urlPlatform user/channel id and profile pictureall
bioBio text (TikTok signature, Instagram biography, YouTube About text)all
categoryThe platform's own business categoryTikTok, Instagram
countryChannel countryYouTube
account_created_atAccount creation / channel join dateTikTok, YouTube
followersFollowers or subscribers — the column every follower filter usesall
followers_estimatedtrue when the platform rounds the number (YouTube always does)all
following, posts_countFollowing count; posts on Instagram, videos on TikTok/YouTubesee note
total_likesLifetime likesTikTok
total_viewsLifetime channel views (exact)YouTube
avg_views_per_videoLifetime average views per video: total_views / posts_count, both exact. Derived, so it is appended after the 48 builder columns and never shifts your existing header mappingYouTube
avg_likes, avg_comments, engagement_rate_pct, posts_per_week, posts_sampled, last_post_atEngagement over the ~12 recent posts, with the sample sizeInstagram
verified, is_private, is_business, is_shop_sellerAccount-type flags; is_shop_seller means a TikTok Shop sellersee note
email, email_source, extra_emails, email_status, has_emailBest address, whether it came from bio or website, extras, and the verification grade of the best address: deliverable / risky / undeliverable / unknown when an email exists, missing when none does (see How emails are verified). has_email is presence onlyall
website, domain, has_websiteThe first non-social link the creator published, and its bare domainall
other_linksEvery other published link (Patreon, Reddit, a second site)all
instagram_url, tiktok_url, youtube_url, facebook_url, twitter_url, linkedin_urlA complete social card, merged from the profile's own links, the crawled website, and the link-in-bio page behind itall
lead_score, lead_grade, lead_tier0–100 score, A–F grade, hot/warm/coldall
also_on_platformsEvery other platform this creator was found on: the platforms their own published/crawled links point at (the six social columns), plus any rows in this run that resolve to the same email or domainall
discovered_viainput, youtube_search, youtube_link or instagram_relatedall
icebreakerThe AI cold-opener, when writeOpeners is onall
scraped_atTimestamp of the scrapeall
matched_keywordThe searchKeywords entry (or entries, comma-joined) whose search returned this channel; null on rows you supplied by handle and on TikTok/Instagram rows. Appended derived columnYouTube
keyword_in_biotrue when one of your search keywords appears in the row's bio text, false when none does, null when the run searched no keyword. Appended derived column, last in the CSVall

following is TikTok + Instagram. posts_count is all three (videos on TikTok/YouTube, posts on Instagram). is_private and is_business are TikTok + Instagram; is_shop_seller is TikTok only.

How to read the output

The Output tab opens on Overview; the other views are one click away in the same dropdown. Every view is a column selection over the same rows — nothing is hidden from the export.

  • Overview — the first look: avatar, Name, Handle, Platform, Followers, Engagement (Instagram only), Email, Email status, Lead score, Grade, Matched keyword (YouTube keyword rows), Profile link. Best-scored first within each delivery wave.
  • Email-ready — only what a cold-email campaign needs: Email, Email source (bio or website), Other emails, Email status, Website, Domain, Lead score, the AI opener when writeOpeners is on, Profile link.
  • By platform — the per-platform detail and the columns only some platforms can fill (Total views, Avg views per video and Country are YouTube-only; Engagement and Posts sampled are Instagram-only; Total likes and Shop seller are TikTok-only; Category and Business are TikTok + Instagram), plus Found via and Also on.
  • Social card — every social profile found for the creator: Instagram, TikTok, YouTube, Facebook, X / Twitter, LinkedIn, Other links.
  • All columns — all 51 columns, labeled, in CSV order.

Derived columns (computed by the Actor, appended after the 48 builder columns so an existing header-mapped import never shifts): avg_views_per_video (YouTube: exact lifetime views ÷ videos), matched_keyword (the search keyword that found a YouTube channel), keyword_in_bio (whether one of your keywords appears in the bio). Followers are numbers (YouTube rounds them — see followers_estimated), verified and the other flags are true/false/null, and every date column (account_created_at, last_post_at, scraped_at) is an ISO 8601 string.

Export just one view: the sure way is the API — add ?view=email_ready (or overview, by_platform, socials, all_columns) to the dataset items URL, e.g. https://api.apify.com/v2/datasets/<datasetId>/items?view=email_ready&format=csv; the view parameter applies that view's column selection to the download. In Console, select the view, then Export — Apify documents views as an Output-tab display setting, so if the file you get still has all 51 columns, pick the columns in the export dialog or use the API URL above.


How emails are verified

Four checks on every row's best email, all over DNS and none over SMTP: syntax, a mail-server lookup on the domain (an MX record, or the implicit-MX A record of RFC 5321) over DNS-over-HTTPS (dns.google, falling back to cloudflare-dns.com), a role-address check (info@, hello@, press@ and the like grade risky), and a disposable-domain list of about 8,000 temp-mail providers (grades undeliverable). The result is the email_status column: deliverable, risky, undeliverable, unknown when the lookup itself never completed, and missing when the row has no email. No mailbox is ever probed — that is what keeps verification proxy-free, fast and included in the price — and it is also what it cannot see: an address on a catch-all domain, or a mailbox that was deleted while the domain kept its mail servers, can still grade deliverable. Read deliverable as "the domain accepts mail and the address is not a known-bad shape", and warm a new list with a soft first send. When the MX lookup fails or does not fit the run's budget the row grades unknown rather than undeliverable, so a busy resolver never deletes a good lead; the status message says how many addresses that affected.

What it costs you: nothing extra. Verification never changes the row count or the bill — only onlyVerifiedEmail does, and like every filter it runs before billing. Its budget is bounded on purpose: one lookup per domain per run (cached across discovery waves), at most 2 seconds per domain, at most 600 lookups per run, and never inside the last 30 seconds of the run's time budget. Only the best address is graded; extra_emails are delivered unverified. The lead score does not yet weight email_status — an undeliverable address still earns the email points, so sort or filter on the column when deliverability matters. RUN_SUMMARY.email_verification carries the per-run counts by status and reason and the DNS lookups spent.


How the lead score works

Raw points, identical on every platform:

SignalPoints
Email found45
Website / link found20
Business or commerce account10
TikTok Shop seller5
Verified5
Follower band: 5k–500k15
Follower band: 1k–5k or 500k–2M10
Follower band: any other non-zero5

The three platforms cannot earn the same maximum, because YouTube publishes no business flag and no shop flag and Instagram no shop flag:

PlatformMaximum earnable
TikTok100
Instagram95
YouTube85

lead_score = round(earned / platform_maximum * 100). Without that normalisation a YouTube row could never exceed 85, and anyone sorting a mixed sheet by score would see every YouTube lead below every comparable TikTok lead for a signal YouTube simply does not publish. Grades: A ≥ 80, B ≥ 65, C ≥ 50, D ≥ 35, else F. Tiers: hot ≥ 75, warm ≥ 50, else cold.


Input

FieldTypeDescription
platformsarrayWhich platforms to pull from. Default all three. A platform left out is skipped even if its handle list is filled, and the log names the ignored input.
searchKeywordsarrayYouTube keyword search — the only discovery path. One per line. Channels recurring across a keyword's result pages, or found by several keywords, are fetched first; matched_keyword says which keyword found each row.
channelsarraySpecific YouTube channels: @handles, bare UC… channel ids (routed to /channel/<id>) or channel URLs. A handle that answers HTTP 404 is reported as not found in the status message and never billed.
profilesarrayTikTok creators: usernames, @handles or profile URLs.
usernamesarrayInstagram creators: usernames, @handles or profile URLs.
crossPlatformDiscoverybooleanAlso scrape the Instagram/TikTok profiles linked on the YouTube channels found. Default false — it adds billed rows.
discoverRelatedbooleanFollow Instagram's related-accounts list. Default false.
maxRelatedPerProfileintegerRelated accounts queued per Instagram profile. Default 10.
maxCreatorsintegerHow many creators you want delivered across all platforms. Default 10 (cheap first run), max 300. Creators removed by minFollowers / maxFollowers / onlyVerified / skipPrivate / onlyWithWebsite, and creators an onlyNewCreators watch already delivered, do not use up a slot. With onlyWithEmail, onlyVerifiedEmail, minScore or emailDomains set, the run keeps discovering in extra waves until this many leads are delivered (see Ask for 30 leads, get 30). Handles you supply are reserved first, so discovery can never starve them.
maxResultsintegerYouTube channels per keyword. Default 20, max 40.
delaySecondsintegerPause between TikTok/Instagram profiles. Default 1.
minFollowers / maxFollowersintegerFollower (or subscriber) range. 0 = no filter.
onlyVerifiedbooleanVerified accounts only. Works on all three platforms.
onlyBusinessbooleanBusiness/commerce accounts only. YouTube rows are kept unfiltered — YouTube publishes no such flag — and the log says how many.
skipPrivatebooleanDrop private accounts (TikTok, Instagram).
onlyWithWebsitebooleanDrop creators with no external link.
onlyWithEmailbooleanDrop creators with no email found. Read the fill rates above first.
onlyVerifiedEmailbooleanKeep only creators whose best email graded deliverable or risky in the MX check — drops creators with no email and undeliverable addresses (no mail server, disposable domain, bad syntax) before billing. An unknown grade (the lookup could not complete) is kept, so a resolver outage never deletes a good lead; filter the email_status column yourself for the strict set. Judged after the website crawl, so it turns on wave mode like onlyWithEmail. Default false.
emailDomainsarrayKeep only creators whose best email or any extra_emails entry ends with one of these domains, case-insensitive — e.g. ["@gmail.com"] for personal inboxes, ["@yourbrand.com"] for a brand. gmail.com and @Gmail.com both mean @gmail.com. Judged after the website crawl and before billing (like onlyWithEmail), so a matching address found on the linked site counts, and the run keeps discovering in waves until maxCreators matching leads are delivered. Empty = no filtering.
minScoreintegerKeep only leads at or above this score.
enrichEmailsbooleanVisit each linked site for emails and socials. Default true — the main email source on all three platforms.
writeOpenersbooleanWrite an AI cold-opener per lead. Default false.
llmProvider, llmApiKey, llmModelstringYour own OpenAI/Anthropic key, used once per run and never stored.
proxyConfigurationobjectDefaults to Apify Proxy RESIDENTIAL for TikTok and Instagram. YouTube is fetched direct with no proxy, so a YouTube-heavy run spends no proxy traffic at all.

Saved tasks from the three single-platform Actors keep working. maxProfiles, minSubscribers, maxSubscribers, onlyWithContact, onlyWithLink, onlyCommerce, onlyBusinessAccounts and keywords are all accepted as aliases, and the run log names each one it used. A legacy name wins over the modern one whenever the modern one is absent or still on its default, so pasting an old input never silently drops your cap or your filters and never bills you for the rows they should have removed. alsoEmitPosts, maxPostsPerProfile, hashtags and searchQueries are retired: this Actor delivers exactly one row per creator, and it does not do TikTok hashtag/keyword discovery (see the FAQ).

Example input:

{
"platforms": ["tiktok", "instagram", "youtube"],
"searchKeywords": ["home barista"],
"profiles": ["gymshark"],
"usernames": ["gymshark"],
"crossPlatformDiscovery": true,
"maxResults": 20,
"maxCreators": 30,
"enrichEmails": true,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

JSON output sample

A real row from a run on 2026-08-09, re-rendered with the current column set and trimmed to the filled columns (the other columns are present and null; also_on_platforms and avg_views_per_video are computed from the row's own links and exact counts, matched_keyword and keyword_in_bio from the keyword that found it; email_status is the grade the MX check gave grow@sevenmiles.com.au on 2026-08-29 — the domain's mail is on Microsoft 365 and grow is not a role alias):

{
"platform": "youtube",
"handle": "SevenMilesCoffeeRoasters",
"name": "Seven Miles Coffee Roasters",
"profile_url": "https://www.youtube.com/@SevenMilesCoffeeRoasters",
"user_id": "UCZQQDp_XZL1AkZ36ToAU_mw",
"bio": "Comes from a Good Place, Takes you to a Better one. Roasted in Sydney and brewed in cafés and homes across Australia.",
"country": "Australia",
"account_created_at": "2016-12-13",
"followers": 207000,
"followers_estimated": true,
"posts_count": 68,
"total_views": 21965248,
"verified": false,
"email": "grow@sevenmiles.com.au",
"email_source": "website",
"extra_emails": "hello@sevenmiles.com.au, ramona.taxis@sevenmiles.com.au, training@sevenmiles.com.au",
"email_status": "deliverable",
"has_email": true,
"website": "https://www.sevenmiles.com.au",
"domain": "sevenmiles.com.au",
"instagram_url": "https://www.instagram.com/sevenmilescoffeeroasters/",
"facebook_url": "https://www.facebook.com/sevenmilescoffeeroasters",
"linkedin_url": "https://www.linkedin.com/company/sevenmilescoffeeroasters",
"lead_score": 94,
"lead_grade": "A",
"lead_tier": "hot",
"also_on_platforms": "facebook,instagram,linkedin",
"discovered_via": "youtube_search",
"scraped_at": "2026-08-09T16:42:10.380780+00:00",
"avg_views_per_video": 323018,
"matched_keyword": "home barista",
"keyword_in_bio": false
}

Ask for 30 leads, get 30

maxCreators counts creators delivered, not scraped. The cheap filters run inside the fetch loops, so a creator they remove never takes a slot. onlyWithEmail, onlyVerifiedEmail, minScore and emailDomains can only be judged after the website crawl, so with any of them set the run works in waves: the first pass fetches maxCreators candidates, enriches and filters them, and if fewer than you asked for survive, a further wave fetches candidates the run has not tried yet (YouTube re-searches every keyword at the 40-channel ceiling and skips channels already fetched; TikTok and Instagram continue with the untried handles and related accounts), enriches only the new rows, and appends the ones that pass. A run of {"searchKeywords": ["vegan meal prep"], "maxCreators": 30, "onlyWithEmail": true} that used to end at ~12 now ends at 30.

Each wave is delivered as soon as it passes the filters (30-day run stats read on 2026-08-29: 2 TIMED-OUT and 2 ABORTED of 51 runs; before this change a run killed before its single final push delivered nothing): its rows are pushed to the dataset, billed, and only then remembered by an onlyNewCreators watch, before the next wave starts. A run that reaches its timeout in wave 3 therefore ends with waves 1 and 2 in the dataset and billed exactly once, instead of zero rows and a TIMED-OUT status. "Best leads first" holds within a wave; a later wave appends below the earlier one. A run the platform restarts mid-way reads its own DELIVERY_STATE record and never pushes or bills a row twice.

Three rails keep the cost of a low email rate bounded: at most 3 extra waves, never more than 4 × maxCreators creators scraped in the whole run, and the run's own time budget. When a wave stops short, the status message says which rail stopped it ("17 short of the 30 requested: every creator the search could find was tried"), and RUN_SUMMARY records the wave count and the creators scraped per wave. You are still billed only for the rows delivered, never for the candidates a wave discarded. Without onlyWithEmail / onlyVerifiedEmail / minScore / emailDomains exactly one pass runs, as before.


When a platform comes back empty

A merged run must never hide a failure behind a short list.

  • If one platform is blocked and another delivered rows, the run succeeds and the status message names the blocked platform and how many handles never made it into the dataset.
  • If zero rows were delivered and a platform was blocked or throttled, the run succeeds with a status message that names the blocked platform and why rather than handing you an empty spreadsheet that reads as "there was nothing to find" (a red run would misreport an upstream refusal as a crash).
  • If the run's time budget runs low mid-platform, fetching stops there and everything already collected is delivered — and only that is billed. The status message and RUN_SUMMARY.stopped_early_for_time name the platform that was cut short. Every earlier discovery wave was already pushed and billed when it passed the filters, so a run that hits its hard timeout keeps what it delivered before (see Ask for 30 leads, get 30).
  • If zero rows came from your filters or from handles that do not exist, that is a legitimate empty result: the run succeeds, says exactly which filter removed how many, and charges nothing. A YouTube handle that answers HTTP 404 is counted as not found ("check the handle or paste the /channel/UC… URL"), separately from channels YouTube failed to serve.
  • Every run writes a RUN_SUMMARY record to the key-value store with per-platform requested / returned / blocked / not-found counts, the filters that ran, the per-platform email fill, and the number of rows billed.

Use it from an AI agent (MCP)

The Apify MCP server exposes this Actor to Claude, ChatGPT, Cursor or any MCP client as a tool. Point the client at https://mcp.apify.com?tools=flash_scraper/creator-leads-scraper — the tools parameter takes the Actor's full name — and the tool is named after that full name (Apify's docs list apify/rag-web-browser as the tool apify-slash-rag-web-browser, so expect flash_scraper-slash-creator-leads-scraper). The tool's input is this Actor's input, unchanged.

A minimal call that returns rows in well under a minute and costs under $0.05 — 5 rows × $0.002 = $0.01 at the live rate read from the Actor's pricing on 2026-08-29 (the Store Pricing tab is authoritative), and the same input run locally twice on 2026-08-29 delivered 5 rows in 9 and 14 seconds, 2 of them with a deliverable email each time:

{ "platforms": ["youtube"], "searchKeywords": ["home barista"], "maxCreators": 5, "enrichEmails": false }

Every delivered row still carries its verified email_status. Agentic payments let an agent pay for the run without an Apify API token — Apify's docs name three routes: AGI (a prepaid token bought with an x402 or MPP payment), direct x402 through the mcpc client, and Skyfire — at the same per-result price. Outside MCP, trigger runs and pipe results into Make, n8n or Zapier to push new leads into your CRM, or sync the dataset to Google Sheets so your team works from a live list.


New-creator alerts (run it on a schedule)

Set onlyNewCreators: true and this Actor becomes a monitor instead of a one-off pull.

  • The first run of a search is the baseline: it delivers everything it finds, and says so.
  • Every later run on the same search delivers - and bills - only creators that appeared since. A quiet week returns zero rows and charges nothing.
  • Memory is per combination of platforms, search terms / handles and follower bounds (minFollowers / maxFollowers), kept in a named key-value store in your own account. Identity is (platform, handle) - the same pair the run already dedupes on. A creator that keeps showing up has its stamp refreshed on every run, so the 90-day prune only forgets creators that actually disappeared - long-lived creators are never re-billed.

Useful for watching a niche: keep a weekly YouTube keyword watch running and you get only the channels that have appeared in it since last week, already enriched with emails and socials.

Alerts: get a Slack / Discord / webhook message when new rows land

Set webhookUrl and every run that delivers at least one creator POSTs a digest there. A Slack incoming webhook (hooks.slack.com/...) gets a text message; a Discord webhook gets a message; any other URL (n8n / Make / Zapier catch hook, your own endpoint) gets JSON: {actor, delivered, run_url, dataset_url, rows[:20], text}. Quiet runs send nothing. Pair it with onlyNewCreators on a schedule and the Actor is an alert service on its own. Delivery is best-effort: a failed webhook is reported in the run's status message and never fails the run.

{
"platforms": ["youtube"],
"searchKeywords": ["indie game devlog"],
"onlyNewCreators": true,
"webhookUrl": "https://hooks.slack.com/services/T000/B000/XXXX"
}

Every run comes with a report

Every run that delivers at least one creator also writes a REPORT record: a single self-contained HTML page with the headline numbers (creators, % with email, average lead score, platforms), three bar charts (creators per platform, email fill by platform, lead-grade split) and the top 100 rows, plus the same "missing from this dataset" notes the status message carries. Find it in the run's Output tab → REPORT (key-value store), or follow the Report: link in the run's status message. It has no scripts, external assets or tracking, so it is safe to forward, attach to an email or screenshot for a client. The dataset stays the source of truth: the report is a view of the delivered rows, never a substitute for them, and a run that delivers zero rows writes no report.

How much does it cost?

You are charged per creator lead delivered after filtering. At the live rate (measured 2026-08-29) that is $0.002 per lead — $2 per 1,000 creator leads, so $5 buys 2,500 leads — plus $0.002 per AI cold-opener, an event that only exists when you turn writeOpeners on with your own LLM key. A free Apify account's $5 monthly platform credit therefore covers up to 2,500 creator leads at this rate, less the run's own compute usage. The Store Pricing tab is authoritative if the rate changes. Rows removed by your filters cost nothing, handles that were blocked or do not exist cost nothing, and a run that delivers zero rows charges nothing. Keep costs down by capping maxCreators, leaving crossPlatformDiscovery off, and filtering before you buy.


What this Actor does not do

Every one of these is a platform limit, measured and documented above — not a missing feature toggle.

  • No TikTok or Instagram keyword/hashtag search. This Actor does not do it — logged-out HTTP exposes no /tag/ data on TikTok and Instagram's search endpoints answer 302/401 (probed 2026-08-09); browser-based scrapers exist but are slower and pricier. You supply the handles; YouTube keyword search is the discovery path, optionally hopping to the Instagram/TikTok profiles those channels link to.
  • No phone numbers, on any platform — none of the three publishes one, so no phone column exists.
  • No engagement rate on TikTok or YouTube rows — TikTok's public payload carries no play counts (28 of 28 profiles probed) and YouTube's About page has no per-video stats. Instagram rows carry real engagement metrics from ~12 recent posts; YouTube rows carry lifetime avg_views_per_video instead.
  • No guaranteed email per row. Emails exist only where the creator published one (bio or linked site); see the per-platform fill rates above.
  • No audience demographics, follower lists, post scraping or DM sending. One row per creator profile is the entire product.

Other Flash Scrape scrapers


FAQ

Can I find a TikTok or Instagram creator's email by username? Yes — that is exactly what the profiles (TikTok) and usernames (Instagram) inputs do: fetch each handle's public profile, then visit the site it links to for a contact address. It finds the email when the creator published one; in verification runs 3 of 9 TikTok and 1 of 5 Instagram creators ended up with an address (see the fill rates above). Set onlyWithEmail: true to pay only for the contactable ones.

How do I find micro influencers with emails? Use a YouTube keyword for your niche with minFollowers/maxFollowers as the band (e.g. 5,000–50,000) and onlyWithEmail: true — the third quick recipe above is a paste-ready version. Turn on crossPlatformDiscovery to add the Instagram and TikTok profiles those channels link to.

Can I search TikTok or Instagram by keyword or hashtag? Not with this Actor — logged-out HTTP exposes no /tag/ data on TikTok, and Instagram's search endpoints answer 302/401; browser-based scrapers exist but are slower and pricier, and this Actor stays keyless and HTTP-only. YouTube keyword search is the discovery path — and with crossPlatformDiscovery on, the Instagram and TikTok profiles those channels link to become leads too.

Will every creator have an email? No. See the per-platform fill rates above. Email is on a minority of rows and mostly comes from the linked website, not the bio. onlyWithEmail will remove most rows on most lists — which is the point if you only want contactable leads, but do not expect a full sheet.

What does email_status mean, and is a deliverable address guaranteed to exist? It is the MX-check grade of the row's best email: deliverable (the domain runs a mail server and the local-part is a person, not an alias), risky (a role alias such as info@), undeliverable (no mail server, disposable domain or bad syntax), unknown (the lookup did not complete) or missing (no email). No mailbox is probed, so a catch-all domain or a deleted mailbox on a live domain can still grade deliverable — see How emails are verified. onlyVerifiedEmail: true keeps the deliverable / risky (and unknown) rows and drops the rest before billing.

Why is engagement_rate_pct empty on my TikTok and YouTube rows? Because neither platform publishes the data it needs. TikTok's profile payload carries an empty video list (28 of 28 profiles probed) and no play counts; YouTube's About page has no per-video stats. The column is null rather than fabricated, and posts_sampled tells you the sample size behind the Instagram numbers. YouTube rows carry avg_views_per_video instead — the channel's lifetime average computed from its exact total-views and video counts. It is an honest size signal, not a recent-engagement rate: a channel that peaked years ago can carry a high lifetime average.

Does it get the email behind YouTube's "View email address" button? No. That button requires a Google login (a signed-in account), a reCAPTCHA, and a small daily reveal quota — none of which a keyless, logged-out scraper can or should do. This Actor reads the About text, the channel's published links and the linked site instead; in the 2026-08-09 samples that gave 4-6 of 8-9 channels an email after enrichment. enrichEmails is the option that does the website part.

Why is a YouTube follower count rounded? YouTube itself rounds subscriber counts to three significant figures. Those rows carry followers_estimated: true. Total views and video counts are exact, and TikTok and Instagram follower counts are exact.

Do I need a proxy? For TikTok and Instagram, yes in practice — both refuse datacenter IPs, so the default is Apify Proxy RESIDENTIAL with a fresh proxy session on every retry. YouTube needs none and is fetched direct, with no proxy at all (measured: 665s proxied vs 16-21s un-proxied for the same channels and the same rows), so no proxy setting changes a YouTube result unless you supply proxyUrls yourself.

Do I need an API key? No. Profile scraping and email finding work without any key. You only supply your own OpenAI or Anthropic key if you turn on AI cold-openers.

Is the same creator billed twice if they are on two platforms? Yes — as two rows, because the follower counts, bios and often the emails differ per platform, and collapsing them would destroy data you paid for. The two rows are cross-linked with also_on_platforms so you can group them in one spreadsheet step.

Is it legal to scrape this data? This Actor only collects public profile data that anyone can see without logging in. Use it for legitimate outreach and follow each platform's terms and anti-spam law (CAN-SPAM, GDPR) in how you message the leads you collect.

Can I export to CSV or Google Sheets? Yes. Every run exports to CSV, JSON or Excel from the Output tab, and the dataset can sync to Google Sheets or flow through Make, n8n or Zapier.

Is there a free way to scrape creator emails from TikTok, Instagram or YouTube?

Effectively yes, for small lists: at $0.002 per lead, a free Apify account's $5 monthly platform credit covers up to 2,500 creator leads, less the run's own compute usage. No API key or login is needed on any of the three platforms.

How much does it cost to scrape 1,000 creator leads?

$2 — the rate is $0.002 per creator lead delivered after filtering (the Store Pricing tab is authoritative). Rows removed by your filters, blocked or nonexistent handles cost nothing, and a run that delivers zero rows charges nothing.

Does it scrape phone numbers?

No. None of the three platforms publishes a phone number, so no phone column exists anywhere in the output.

Can it alert me when new creators appear in a niche?

Yes. Set onlyNewCreators: true on a scheduled run: the first run is the baseline, and every later run delivers — and bills — only creators that appeared since. Add webhookUrl to get a digest in Slack, Discord or any webhook, and a quiet week returns zero rows and charges nothing.

Can AI agents like ChatGPT or Claude run this scraper?

Yes. The Apify MCP server exposes it to Claude, ChatGPT, Cursor or any MCP client at https://mcp.apify.com?tools=flash_scraper/creator-leads-scraper, and agentic payments (AGI, x402, Skyfire) let an agent pay per result without an Apify API token.

How many creator leads can one run deliver?

Up to 300 (maxCreators; default 10). With email or score filters set, the run keeps discovering in extra waves — at most 3 — until that many leads are delivered, and handles you supply are reserved first so discovery can never starve them.