🎯

YouTube & Twitter/X

Supports YouTube channel URLs in all formats (@handle, /c/, /channel/, /user/) and Twitter/X profiles. LinkedIn and Facebook coming soon.

Verified Emails Only

Every email in the response carries a quality score and verification status. Filter by email_type to separate personal contacts from generic inboxes.

Fast & Reliable

Repeated lookups for the same profile return instantly. Our infrastructure ensures low-latency responses for high-volume workflows.

Simple API Integration

One GET request. Pass the social profile URL, get back structured email data. No parsing, no scraping on your end.

cURL
JavaScript
Python
PHP
# YouTube channel
curl "https://api.minelead.io/v1/social-email-finder/?key=YOUR_API_KEY&url=https://www.youtube.com/%40mkbhd"

# Twitter / X profile
curl "https://api.minelead.io/v1/social-email-finder/?key=YOUR_API_KEY&url=https://twitter.com/stripe"
const profileUrl = 'https://www.youtube.com/@mkbhd';

const res = await fetch(
  'https://api.minelead.io/v1/social-email-finder/' +
  '?key=YOUR_API_KEY&url=' + encodeURIComponent(profileUrl)
);
const data = await res.json();

if (data.status === 'found') {
  data.domains.forEach(d => {
    console.log(`Domain: ${d.domain} (${d.confidence})`);
    d.emails.forEach(e => {
      console.log(`  ${e.email}  quality:${e.quality}  verified:${e.verified}`);
    });
  });
}
import requests

resp = requests.get(
    'https://api.minelead.io/v1/social-email-finder/',
    params={
        'key': 'YOUR_API_KEY',
        'url': 'https://www.youtube.com/@mkbhd',
    }
)
data = resp.json()

if data['status'] == 'found':
    for domain_group in data['domains']:
        print(f"Domain : {domain_group['domain']} ({domain_group['confidence']})")
        for email in domain_group['emails']:
            print(f"  {email['email']}  quality={email['quality']}  verified={email['verified']}")
$url = 'https://api.minelead.io/v1/social-email-finder/?' . http_build_query([
    'key' => 'YOUR_API_KEY',
    'url' => 'https://www.youtube.com/@mkbhd',
]);
$data = json_decode(file_get_contents($url), true);

if ($data['status'] === 'found') {
    foreach ($data['domains'] as $domainGroup) {
        echo "Domain: {$domainGroup['domain']} ({$domainGroup['confidence']})\n";
        foreach ($domainGroup['emails'] as $email) {
            echo "  {$email['email']}  quality={$email['quality']}\n";
        }
    }
}

Example Response

{
  "status":       "found",
  "social_url":   "https://www.youtube.com/@mkbhd",
  "platform":     "youtube",
  "channel_name": "Marques Brownlee",
  "domains": [
    {
      "domain":     "mkbhd.com",
      "confidence": "primary",
      "status":     "found",
      "name":       "MKBHD",
      "pattern":    "first@domain",
      "emails": [
        {
          "email":      "marques@mkbhd.com",
          "quality":    92,
          "verified":   true,
          "name":       "Marques Brownlee",
          "email_type": "personal",
          "saved":      false
        },
        {
          "email":      "info@mkbhd.com",
          "quality":    85,
          "verified":   true,
          "name":       "",
          "email_type": "generic",
          "saved":      false
        }
      ]
    }
  ],
  "message":   "Found 2 email(s) across 1 domain(s)",
  "timestamp": 1718000000.0
}

Response Fields

Field Type Description
statusstring"found" | "not-found" | "error"
platformstring"youtube" | "twitter"
channel_namestringDisplay name of the YouTube channel or Twitter profile
domainsarrayList of domain groups — each with confidence, emails, pattern
domains[].confidencestring"primary" = main brand website · "secondary" = additional linked site
domains[].statusstring"found" | "not-found" — whether emails were discovered for this domain
domains[].namestringBrand or organisation name associated with the domain
emails[].qualityinteger0–100 deliverability score. 75+ recommended for outreach.
emails[].email_typestring"personal" = individual contact · "generic" = role/dept address (info@, hello@…)
emails[].verifiedbooleantrue if the email passed deliverability verification
emails[].namestringFull name of the person associated with the email address
emails[].savedbooleantrue if this email is already saved in your Minelead contacts
patternstring|nullDetected email format pattern, e.g. first@domain or first.last@domain
messagestringHuman-readable summary, e.g. "Found 3 email(s) across 2 domain(s)"

Built for Outreach Teams Who Work With Social Audiences

Whether you're prospecting YouTube influencers, identifying Twitter thought leaders, or enriching a creator database — get verified emails without manual research.

🤝

Influencer Outreach

Have a list of YouTube channels or Twitter handles? Pass each URL to the API and build a verified email list for your influencer campaign in minutes.

🔗

CRM Enrichment

Enrich existing CRM records that have a YouTube or Twitter field. One API call per contact fills in the email, company domain, and email pattern.

Bulk Processing

The API is stateless and handles concurrent requests. Process hundreds of social profiles in parallel — each call is independent.

🏷️

Primary vs Secondary Domains

When a creator links multiple websites, the response groups emails by domain and flags the main brand site as primary — so you always know which is most relevant.

🛡️

Quality Scoring

Every email has a 0–100 quality score and a verified flag. Filter to quality ≥ 75 for outreach-safe lists and avoid hard bounces.

🌍

Any Language, Any Stack

Plain REST GET request — works from Python, Node.js, PHP, Ruby, Go, or directly from cURL. No SDK, no webhook, no setup.

Start Finding Social Emails Today

Free credits every month. No credit card required. Integrate in minutes.

Get Free API Key API Documentation

Frequently Asked Questions

What URL formats are accepted?+
Any valid YouTube channel URL works: @handle format (youtube.com/@mkbhd), /c/ aliases, /channel/ IDs, and /user/ legacy URLs. For Twitter/X, pass the full profile URL (twitter.com/handle or x.com/handle). The http/https prefix is optional — the domain in the URL is what matters.
How many credits does a request cost?+
Each successful request that returns emails costs 2 credits. If no emails are found, no credits are deducted.
What does the confidence field mean?+
When a profile links to more than one website, the API groups results by domain and marks the main brand website as "primary". Other linked sites (e.g. a merchandise store or secondary brand) are marked "secondary". This lets you target the most relevant business address without extra filtering on your end.
What if a channel has no website linked?+
The API returns status "not-found" with an empty domains array. No credits are deducted. This typically happens with personal/hobby channels that have not linked a company website in their profile.
How fresh is the data?+
The API always returns the latest available data for the profile. Results are typically available within seconds.
What is the quality score and which threshold should I use?+
Quality is a 0–100 score based on format validity, domain health, and historical deliverability signals. For outreach campaigns we recommend filtering to quality ≥ 75 — these are emails that have passed active verification. Scores below 50 indicate guessed or unverifiable addresses.
Will more social platforms be supported?+
LinkedIn and Facebook are on the roadmap. The API endpoint URL and response structure will remain the same — you will simply be able to pass those profile URLs in the url parameter and get the same grouped email response back.
Searching ...
×
Set a Password
You have created your account using Google SSO. You need to set a password.

Phone Verification

LIMITED TIME OFFER

Don't miss out

B2B leads at your fingertips

For new users

Start free & get 15% off your first plan

Sign up in seconds — no credit card required. Apply code at checkout to unlock your discount.

MNLD15
Sign Up Free →