general bulk-email-finding

bulk-email-finding

This skill should be used when the user asks to "find emails in bulk", "bulk email lookup", "find emails for a list", "email finder for outbound lists", "mass email discovery", "find emails at scale", "bulk contact email lookup", "email finding workflow", "find emails for cold outbound list", or any variation of finding email addresses at scale for B2B cold outbound.
Download .md

Bulk Email Finding

Bulk email finding is the process of discovering work email addresses for a list of prospects at scale. You have names, companies, and titles. You need deliverable email addresses. The quality of your email finding determines whether your cold outbound reaches real inboxes or bounces into the void.

The principle: no single email finding tool has 100% coverage. The best approach is a multi-provider waterfall: try Provider A, if no result try Provider B, then Provider C. A multi-provider strategy typically achieves 80-95% coverage vs 60-75% from a single provider.

The Email Finding Workflow

Standard workflow

Input: CSV with first_name, last_name, company, domain, title
  ↓
Step 1: Primary provider lookup (Apollo, Hunter, Lusha)
  → Found: 65-75% of contacts
  → Not found: pass to Step 2
  ↓
Step 2: Secondary provider lookup (different provider)
  → Found: additional 10-15%
  → Not found: pass to Step 3
  ↓
Step 3: Pattern-based guessing + verification
  → Generate email using company pattern (first.last@domain.com)
  → Verify with email verification tool
  → Found and verified: additional 5-10%
  ↓
Step 4: Email verification (ALL found emails)
  → Valid: add to outbound list
  → Invalid: remove
  → Risky: flag for manual review
  ↓
Output: Verified email list (80-95% coverage)

Email Finding Providers

Provider comparison

Provider Database size Coverage Email accuracy Pricing
Apollo 275M+ contacts Good for US mid-market tech 85-92% Credits-based, mid-range
Hunter.io 100M+ emails Good for domain-based search 90-95% on found emails Credits-based, affordable
Lusha 100M+ contacts Strong for direct dials + emails 85-90% Per-seat + credits
RocketReach 700M+ profiles Wide coverage, varying accuracy 80-88% Credits-based
Snov.io 200M+ contacts Good value, decent coverage 82-88% Credits-based, affordable
Cognism 400M+ profiles Strong in EMEA 88-93% Enterprise pricing

Provider selection rules

  • Start with Apollo or Hunter as primary. Both have good coverage for B2B SaaS ICP. Apollo for contact-level search (name + company). Hunter for domain-level search (all emails at a domain)
  • Add a second provider for the 25-35% gap. No single provider covers everyone. A second provider adds 10-15% coverage. The cost is marginal compared to the value of additional contacts
  • Match provider to geography. US contacts: Apollo, Hunter, Lusha. EMEA: Cognism, Lusha. APAC: RocketReach. Coverage varies significantly by region
  • Check provider accuracy on YOUR ICP. Run 100 contacts through each provider. Compare accuracy. The best provider for your ICP may not be the one with the biggest database

Pattern-Based Email Finding

Common email patterns

Pattern Format Prevalence
first.last john.smith@company.com 45% of companies
first john@company.com 15%
firstlast johnsmith@company.com 10%
first_last john_smith@company.com 5%
flast jsmith@company.com 10%
firstl johns@company.com 5%
last.first smith.john@company.com 3%
first.last+initial john.smith2@company.com Rare but exists at large companies

Pattern discovery process

1. Find one known email at the target company
   (from Apollo, Hunter, or company website)
2. Determine the pattern from the known email
   (e.g., john.smith@acme.com = first.last)
3. Apply the pattern to your target contact
   (e.g., jane.doe@acme.com)
4. Verify the generated email with a verification tool
5. If valid: use it
6. If invalid: try alternative patterns

Pattern rules

  • Always verify pattern-generated emails. A pattern match is a guess, not a fact. Verification confirms the email exists before you risk a bounce
  • Find the pattern from a confirmed email, not a guess. Hunter.io's domain search often shows the most common pattern for a domain. Use that as your starting point
  • Large companies may have multiple patterns. Acquired companies keep old email domains. Different offices use different patterns. Verify each contact individually at large companies
  • Pattern guessing is a last resort. Use provider lookups first. Pattern guessing + verification is for the contacts that providers couldn't find

The Multi-Provider Waterfall

Building the waterfall

Provider priority (adjust based on your ICP):
  1. Apollo (primary - best for US B2B mid-market)
  2. Hunter.io (secondary - good for domain-based search)
  3. Pattern guess + NeverBounce verification (fallback)

For each contact:
  email = apollo.find(name, company)
  if not email:
    email = hunter.find(name, domain)
  if not email:
    email = generate_pattern(name, domain)
    if neverbounce.verify(email) != "valid":
      email = None
  
  if email:
    verified_email = neverbounce.verify(email)
    if verified_email == "valid":
      add_to_list(contact, email)
    else:
      skip(contact)

Waterfall rules

  • Don't duplicate API calls. If Apollo found the email, don't also check Hunter. Move to the next contact. Only cascade when the primary provider returns no result
  • Track which provider found each email. This data tells you which providers are worth renewing. If Provider B only finds 3% incremental contacts, it may not justify the cost
  • Deduplicate before the waterfall. If the same person appears in your list twice (different name spellings), the waterfall runs twice and charges twice. Dedup first
  • Set a budget cap per contact. If the waterfall costs $0.15 per contact (3 provider lookups + verification), your budget for 1,000 contacts is $150. Plan accordingly

Quality Control

Post-finding verification

Check How Target
Email verification NeverBounce, ZeroBounce on all found emails > 90% valid
Generic email filter Remove info@, hello@, support@ 0 generic emails in final list
Domain check Verify domain is active and matches company 100% domain match
Duplicate check Dedup by email address 0 duplicates
Role-based filter Remove role-based emails (sales@, marketing@) 0 role-based in personal outbound list

Measurement

Metric Definition Target Frequency
Coverage rate % of input contacts with found emails > 80% (with multi-provider) Per list build
Verification pass rate % of found emails that verify as valid > 90% Per list build
Bounce rate on sends Actual bounces from found+verified emails < 2% Per campaign
Cost per found email Total provider costs / found emails $0.05-0.20 Per list build
Provider incremental value % of contacts found only by Provider B Track to evaluate provider ROI Quarterly
Pattern guess success rate % of pattern-generated emails that verify > 50% Per list build

Pre-List-Build Checklist

  • [ ] Input list has first name, last name, company name, and domain for each contact
  • [ ] Primary email finding provider selected and credits available
  • [ ] Secondary provider selected for waterfall fallback
  • [ ] Email verification tool configured (NeverBounce, ZeroBounce)
  • [ ] Input list deduplicated before running through providers
  • [ ] Generic and role-based email filter in place
  • [ ] Budget calculated (expected cost per contact x list size)
  • [ ] Coverage rate target set (> 80%)
  • [ ] Bounce rate from previous campaigns reviewed (< 2%)
  • [ ] Found emails will be verified before any outreach

Anti-Pattern Check

  • Single provider only. Apollo finds 70% of your list. You accept 30% missing. A second provider would find 10-15% more. That's 100-150 additional contacts per 1,000. Worth the $15-30 in API costs
  • Sending pattern-guessed emails without verification. You guessed first.last@company.com for 200 contacts. 40 don't exist. 20% bounce rate. Domain reputation damaged. Always verify pattern-generated emails
  • Not filtering generic emails. info@company.com and hello@company.com are in your outbound list. These aren't people. They're shared inboxes. Filter them out before sending
  • Using personal emails for cold outbound. Gmail and Yahoo addresses from Apollo or Hunter. These are personal addresses, not work emails. Cold emailing personal addresses is bad practice and may violate regulations. Use work emails only
  • No deduplication before the waterfall. The same person appears 3 times with slightly different names. You run 3 API calls for 1 person. Wasted credits. Dedup by company + similar name before running providers
  • Never tracking provider value. You pay for 3 providers but never measure which ones actually find contacts the others miss. Provider B may only add 2% incremental coverage. Not worth the cost. Track and evaluate
  • Skipping verification because "the provider verified them." Provider verification is a point-in-time check. Emails go stale. Re-verify with a dedicated tool before every cold outbound campaign
Want agents that use skill files like this?
We customize skill files for your brand voice and methodology, then run content agents against them.
Book a call