<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Zackrag</title>
    <description>The latest articles on Forem by Zackrag (@zackrag).</description>
    <link>https://forem.com/zackrag</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3884735%2F8a1e3de9-36d8-4ebb-91c0-d4a692d57fc0.png</url>
      <title>Forem: Zackrag</title>
      <link>https://forem.com/zackrag</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/zackrag"/>
    <language>en</language>
    <item>
      <title>Apollo vs Hunter vs Lusha vs PDL: The Cost-Per-Contact Number Nobody Publishes (2026)</title>
      <dc:creator>Zackrag</dc:creator>
      <pubDate>Tue, 21 Apr 2026 06:24:33 +0000</pubDate>
      <link>https://forem.com/zackrag/apollo-vs-hunter-vs-lusha-vs-pdl-the-cost-per-contact-number-nobody-publishes-2026-4lj5</link>
      <guid>https://forem.com/zackrag/apollo-vs-hunter-vs-lusha-vs-pdl-the-cost-per-contact-number-nobody-publishes-2026-4lj5</guid>
      <description>&lt;p&gt;I ran &lt;a href="https://apollo.io" rel="noopener noreferrer"&gt;Apollo.io&lt;/a&gt;, &lt;a href="https://hunter.io" rel="noopener noreferrer"&gt;Hunter.io&lt;/a&gt;, &lt;a href="https://lusha.com" rel="noopener noreferrer"&gt;Lusha&lt;/a&gt;, and &lt;a href="https://peopledatalabs.com" rel="noopener noreferrer"&gt;People Data Labs&lt;/a&gt; against the same 450-contact test set last quarter. Every tool claimed 95%+ accuracy on their pricing pages. None of them hit it. The gap between advertised per-seat cost and what I actually paid per &lt;em&gt;working&lt;/em&gt; contact ranged from 2x to 6x depending on the tool and tier.&lt;/p&gt;

&lt;p&gt;Here's what the real math looks like — including &lt;a href="https://peopledatalabs.com" rel="noopener noreferrer"&gt;PDL&lt;/a&gt;, which almost every comparison article skips entirely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Sticker Price Is a Useless Comparison Point
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://apollo.io" rel="noopener noreferrer"&gt;Apollo.io&lt;/a&gt; Basic: $49/seat/month. &lt;a href="https://lusha.com" rel="noopener noreferrer"&gt;Lusha&lt;/a&gt; Pro: $49/seat/month. Same price, done, right?&lt;/p&gt;

&lt;p&gt;Not remotely. Apollo Basic gives you 75 credits/month. Lusha Pro gives you roughly 250 contacts/month — emails and phone numbers bundled per contact. And Apollo charges 8 credits for a single phone number. If you're pulling email + phone on every contact, Apollo's 75 monthly credits get you about 8 contacts with phones, not 75. Lusha's 250 contacts come with phones included.&lt;/p&gt;

&lt;p&gt;That's before touching verification rates.&lt;/p&gt;

&lt;p&gt;Then there's the rollover issue: Apollo credits expire at month end. Unused credits don't carry forward. If your team has two slow weeks and doesn't hit the quota, those credits vanish. &lt;a href="https://lusha.com" rel="noopener noreferrer"&gt;Lusha&lt;/a&gt; and &lt;a href="https://hunter.io" rel="noopener noreferrer"&gt;Hunter.io&lt;/a&gt; don't do this. It's a small line item that compounds into real money across a 10-person SDR team over a year.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Metric That Should Drive This Decision
&lt;/h2&gt;

&lt;p&gt;I started calculating &lt;strong&gt;cost-per-verified-contact&lt;/strong&gt; instead of cost-per-exported-contact. The difference matters because a contact that bounces costs you sender reputation, not just money.&lt;/p&gt;

&lt;p&gt;The formula:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cost_per_verified = monthly_spend / (contacts_exported × verified_delivery_rate)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you spend $79/month, export 100 contacts, and 68 of those emails deliver without bouncing — your real cost-per-verified is $1.16, not the $0.79 the plan page suggests. That number changes the entire ranking.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Ran the Test
&lt;/h2&gt;

&lt;p&gt;I pulled 450 unique LinkedIn profiles: 150 SaaS founders, 150 mid-market sales directors, 150 enterprise IT buyers across US and EU. I ran each profile through each tool's enrichment endpoint or browser extension, exported the contact data, and sent a plain-text email to each batch from a warmed domain. I measured:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Export rate&lt;/strong&gt;: how many profiles returned any email at all&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verified delivery rate&lt;/strong&gt;: hard bounce + soft bounce combined under 5% threshold&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phone fill rate&lt;/strong&gt;: how many profiles returned a direct-dial number&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phone accuracy&lt;/strong&gt;: sampled 100 phones per tool by calling them&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I tested profile-by-profile lookups, not import-list enrichment, which is closer to how most SDR workflows actually run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing Reality Check
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Monthly cost (annual)&lt;/th&gt;
&lt;th&gt;Credits/contacts per month&lt;/th&gt;
&lt;th&gt;Email unit cost&lt;/th&gt;
&lt;th&gt;Phone unit cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://apollo.io" rel="noopener noreferrer"&gt;Apollo.io&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;td&gt;$49/seat&lt;/td&gt;
&lt;td&gt;75 credits&lt;/td&gt;
&lt;td&gt;1 credit&lt;/td&gt;
&lt;td&gt;8 credits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://apollo.io" rel="noopener noreferrer"&gt;Apollo.io&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Professional&lt;/td&gt;
&lt;td&gt;$79/seat&lt;/td&gt;
&lt;td&gt;"unlimited"*&lt;/td&gt;
&lt;td&gt;1 credit&lt;/td&gt;
&lt;td&gt;8 credits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hunter.io" rel="noopener noreferrer"&gt;Hunter.io&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Starter&lt;/td&gt;
&lt;td&gt;$49 flat&lt;/td&gt;
&lt;td&gt;500 searches&lt;/td&gt;
&lt;td&gt;~$0.10&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hunter.io" rel="noopener noreferrer"&gt;Hunter.io&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Growth&lt;/td&gt;
&lt;td&gt;$149 flat&lt;/td&gt;
&lt;td&gt;2,000 searches&lt;/td&gt;
&lt;td&gt;~$0.07&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://lusha.com" rel="noopener noreferrer"&gt;Lusha&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Pro&lt;/td&gt;
&lt;td&gt;$49/seat&lt;/td&gt;
&lt;td&gt;250 contacts&lt;/td&gt;
&lt;td&gt;bundled&lt;/td&gt;
&lt;td&gt;bundled&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://lusha.com" rel="noopener noreferrer"&gt;Lusha&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Premium&lt;/td&gt;
&lt;td&gt;$52/seat&lt;/td&gt;
&lt;td&gt;600 contacts&lt;/td&gt;
&lt;td&gt;bundled&lt;/td&gt;
&lt;td&gt;bundled&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://rocketreach.co" rel="noopener noreferrer"&gt;RocketReach&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Essential&lt;/td&gt;
&lt;td&gt;$53 flat&lt;/td&gt;
&lt;td&gt;125 lookups&lt;/td&gt;
&lt;td&gt;bundled&lt;/td&gt;
&lt;td&gt;bundled&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://rocketreach.co" rel="noopener noreferrer"&gt;RocketReach&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Pro&lt;/td&gt;
&lt;td&gt;$170 flat&lt;/td&gt;
&lt;td&gt;400 lookups&lt;/td&gt;
&lt;td&gt;bundled&lt;/td&gt;
&lt;td&gt;bundled&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://peopledatalabs.com" rel="noopener noreferrer"&gt;PDL&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Pro&lt;/td&gt;
&lt;td&gt;$98 flat&lt;/td&gt;
&lt;td&gt;350 enrichments&lt;/td&gt;
&lt;td&gt;$0.28/match&lt;/td&gt;
&lt;td&gt;$0.28/match&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://peopledatalabs.com" rel="noopener noreferrer"&gt;PDL&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;API (pay-as-you-go)&lt;/td&gt;
&lt;td&gt;usage-based&lt;/td&gt;
&lt;td&gt;per record&lt;/td&gt;
&lt;td&gt;$0.01/record&lt;/td&gt;
&lt;td&gt;$0.01/record&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;*Apollo "unlimited" covers business emails on Professional. Phone numbers remain credit-gated regardless of plan. Users report hitting soft limits around 300–400 phone reveals/month before support contacts them about "fair use."&lt;/p&gt;

&lt;h2&gt;
  
  
  Accuracy: What My 450-Contact Test Found
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Export rate&lt;/th&gt;
&lt;th&gt;Email verify rate&lt;/th&gt;
&lt;th&gt;Phone fill rate&lt;/th&gt;
&lt;th&gt;Phone accuracy (sampled)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://apollo.io" rel="noopener noreferrer"&gt;Apollo.io&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;87%&lt;/td&gt;
&lt;td&gt;71%&lt;/td&gt;
&lt;td&gt;34%&lt;/td&gt;
&lt;td&gt;68%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hunter.io" rel="noopener noreferrer"&gt;Hunter.io&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;74%&lt;/td&gt;
&lt;td&gt;84%&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://lusha.com" rel="noopener noreferrer"&gt;Lusha&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;81%&lt;/td&gt;
&lt;td&gt;79%&lt;/td&gt;
&lt;td&gt;52%&lt;/td&gt;
&lt;td&gt;74%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://rocketreach.co" rel="noopener noreferrer"&gt;RocketReach&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;76%&lt;/td&gt;
&lt;td&gt;76%&lt;/td&gt;
&lt;td&gt;41%&lt;/td&gt;
&lt;td&gt;63%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://peopledatalabs.com" rel="noopener noreferrer"&gt;PDL&lt;/a&gt; raw API&lt;/td&gt;
&lt;td&gt;91%&lt;/td&gt;
&lt;td&gt;67%&lt;/td&gt;
&lt;td&gt;29%&lt;/td&gt;
&lt;td&gt;N/A†&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;†PDL returns unverified raw data. To get usable delivery rates you need to pipe the output through &lt;a href="https://zerobounce.net" rel="noopener noreferrer"&gt;ZeroBounce&lt;/a&gt; or &lt;a href="https://neverbounce.com" rel="noopener noreferrer"&gt;NeverBounce&lt;/a&gt;, which adds cost and latency.&lt;/p&gt;

&lt;p&gt;A few things that surprised me:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apollo.io" rel="noopener noreferrer"&gt;Apollo.io&lt;/a&gt;'s email accuracy collapsed for niche job titles. VP-level contacts at sub-100-person companies came back under 60% verified. The aggregate 71% is flattering because large companies dragged the average up.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://hunter.io" rel="noopener noreferrer"&gt;Hunter.io&lt;/a&gt;'s domain-pattern approach is genuinely reliable when company email formats are consistent — for Fortune 1000 targets, I hit 91% verify rates. For companies that went through a rebrand in the last 18 months or use custom domains, it dropped to 61%.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://lusha.com" rel="noopener noreferrer"&gt;Lusha&lt;/a&gt; had the best phone accuracy of any packaged tool. 74% of returned direct dials were working numbers. That's significantly better than &lt;a href="https://apollo.io" rel="noopener noreferrer"&gt;Apollo.io&lt;/a&gt;'s 68%, and the coverage is stronger in EU and APAC than Apollo's North America-skewed database.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://peopledatalabs.com" rel="noopener noreferrer"&gt;PDL&lt;/a&gt; has by far the largest raw footprint — 1.5B+ person records — but a record existing and an email delivering are completely different things. Without a verification layer, PDL's 67% delivery rate makes it unusable for direct outreach without additional tooling cost.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Number That Actually Matters
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Monthly spend&lt;/th&gt;
&lt;th&gt;Contacts accessed&lt;/th&gt;
&lt;th&gt;Verified contacts&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Cost per verified&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://apollo.io" rel="noopener noreferrer"&gt;Apollo.io&lt;/a&gt; Basic&lt;/td&gt;
&lt;td&gt;$49&lt;/td&gt;
&lt;td&gt;75&lt;/td&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.92&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://apollo.io" rel="noopener noreferrer"&gt;Apollo.io&lt;/a&gt; Pro&lt;/td&gt;
&lt;td&gt;$79&lt;/td&gt;
&lt;td&gt;~300&lt;/td&gt;
&lt;td&gt;213&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.37&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://hunter.io" rel="noopener noreferrer"&gt;Hunter.io&lt;/a&gt; Starter&lt;/td&gt;
&lt;td&gt;$49&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;420&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.12&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://hunter.io" rel="noopener noreferrer"&gt;Hunter.io&lt;/a&gt; Growth&lt;/td&gt;
&lt;td&gt;$149&lt;/td&gt;
&lt;td&gt;2,000&lt;/td&gt;
&lt;td&gt;1,680&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.09&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://lusha.com" rel="noopener noreferrer"&gt;Lusha&lt;/a&gt; Premium&lt;/td&gt;
&lt;td&gt;$52&lt;/td&gt;
&lt;td&gt;600&lt;/td&gt;
&lt;td&gt;474&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.11&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://rocketreach.co" rel="noopener noreferrer"&gt;RocketReach&lt;/a&gt; Pro&lt;/td&gt;
&lt;td&gt;$170&lt;/td&gt;
&lt;td&gt;400&lt;/td&gt;
&lt;td&gt;304&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.56&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://peopledatalabs.com" rel="noopener noreferrer"&gt;PDL&lt;/a&gt; + &lt;a href="https://neverbounce.com" rel="noopener noreferrer"&gt;NeverBounce&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;~$110†&lt;/td&gt;
&lt;td&gt;1,000&lt;/td&gt;
&lt;td&gt;670&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.16&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;†PDL at $0.01/record × 1,000 records = $10, plus $98 base plan, plus ~$0.02/verification × 1,000 = $108 total.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apollo.io" rel="noopener noreferrer"&gt;Apollo.io&lt;/a&gt; Basic is a bad deal by this math — $0.92 per verified contact is the worst ratio in the group. The Professional plan flips the story: at $0.37 per verified, it becomes competitive, especially if your team sends high-enough volume to justify the seat cost.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://rocketreach.co" rel="noopener noreferrer"&gt;RocketReach&lt;/a&gt; occupies the worst position in the market: higher cost-per-verified than both &lt;a href="https://hunter.io" rel="noopener noreferrer"&gt;Hunter.io&lt;/a&gt; and &lt;a href="https://lusha.com" rel="noopener noreferrer"&gt;Lusha&lt;/a&gt;, smaller database than &lt;a href="https://apollo.io" rel="noopener noreferrer"&gt;Apollo.io&lt;/a&gt; or &lt;a href="https://peopledatalabs.com" rel="noopener noreferrer"&gt;PDL&lt;/a&gt;, and no clear accuracy edge anywhere. Its one genuine strength is a clean LinkedIn Chrome extension, but that alone doesn't justify a $0.56 cost-per-verified.&lt;/p&gt;

&lt;h2&gt;
  
  
  When Each Tool Wins
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://apollo.io" rel="noopener noreferrer"&gt;Apollo.io&lt;/a&gt;&lt;/strong&gt; makes sense if you need email + phone in one place, want built-in sequencing tools, and your team will genuinely hit Professional-tier volume. The Basic plan exists to get you hooked — the math only works at Professional with 5+ SDRs churning through lists daily. Also note that &lt;a href="https://apollo.io" rel="noopener noreferrer"&gt;Apollo.io&lt;/a&gt; has added AI research features in 2026 that consume additional credits, so watch your usage dashboards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://hunter.io" rel="noopener noreferrer"&gt;Hunter.io&lt;/a&gt;&lt;/strong&gt; is the right call for email-only campaigns targeting known, mid-to-large companies. If you're running domain-level outreach ("find everyone at acme.com we should talk to"), &lt;a href="https://hunter.io" rel="noopener noreferrer"&gt;Hunter.io&lt;/a&gt;'s Growth plan at $0.09 per verified contact is hard to beat. It has no phone data, so you'll need a second tool if dials are part of your workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://lusha.com" rel="noopener noreferrer"&gt;Lusha&lt;/a&gt;&lt;/strong&gt; wins on phones. If direct-dial accuracy matters — especially in Europe — &lt;a href="https://lusha.com" rel="noopener noreferrer"&gt;Lusha&lt;/a&gt; Premium at $52/month for 600 contacts is the most cost-effective option in this comparison. Their GDPR compliance documentation is also more defensible than &lt;a href="https://apollo.io" rel="noopener noreferrer"&gt;Apollo.io&lt;/a&gt;'s for EU-based GTM teams.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://peopledatalabs.com" rel="noopener noreferrer"&gt;PDL&lt;/a&gt;&lt;/strong&gt; is not a packaged sales tool — it's an API for builders. If you're populating a CRM at bulk, building a data product, or enriching &amp;gt;5,000 contacts/month, the per-record cost of $0.01 destroys every packaged option on unit economics. But you need engineering capacity to call the API and a verification layer (&lt;a href="https://zerobounce.net" rel="noopener noreferrer"&gt;ZeroBounce&lt;/a&gt; or &lt;a href="https://neverbounce.com" rel="noopener noreferrer"&gt;NeverBounce&lt;/a&gt;) to get usable delivery rates. This is not a tool for an SDR with a Salesforce login.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://cognism.com" rel="noopener noreferrer"&gt;Cognism&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href="https://zoominfo.com" rel="noopener noreferrer"&gt;ZoomInfo&lt;/a&gt;&lt;/strong&gt; sit above this tier in price but also in phone accuracy for North America and UK markets. If direct dials are your primary bottleneck and budget isn't the constraint, they're worth evaluating — but both have opaque pricing and push you toward annual contracts that lock in cost before you've validated the data quality for your specific ICP.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Actually Use
&lt;/h2&gt;

&lt;p&gt;For pure email prospecting at scale, I run &lt;a href="https://hunter.io" rel="noopener noreferrer"&gt;Hunter.io&lt;/a&gt; Growth as my primary source — $0.09 per verified contact is hard to justify swapping out. For campaigns where phone numbers matter, I layer &lt;a href="https://lusha.com" rel="noopener noreferrer"&gt;Lusha&lt;/a&gt; Premium on top rather than paying &lt;a href="https://apollo.io" rel="noopener noreferrer"&gt;Apollo.io&lt;/a&gt;'s 8-credit-per-phone tax.&lt;/p&gt;

&lt;p&gt;For bulk database builds from scratch — when I need to go from "ICP criteria" to "10,000 target contacts" — &lt;a href="https://peopledatalabs.com" rel="noopener noreferrer"&gt;PDL&lt;/a&gt;'s API wins at any volume above 2,000 contacts/month. I pipe the output through &lt;a href="https://zerobounce.net" rel="noopener noreferrer"&gt;ZeroBounce&lt;/a&gt; before anything touches a sending domain.&lt;/p&gt;

&lt;p&gt;For Twitter and Facebook profile lookups, where none of the above tools return reliable contact data, &lt;a href="https://ziwa.club" rel="noopener noreferrer"&gt;Ziwa&lt;/a&gt; has been faster for me than &lt;a href="https://peopledatalabs.com" rel="noopener noreferrer"&gt;PDL&lt;/a&gt;'s social-match endpoint — and the results don't require a separate verification pass.&lt;/p&gt;

&lt;p&gt;One last thing: if you're evaluating &lt;a href="https://clay.com" rel="noopener noreferrer"&gt;Clay&lt;/a&gt; or &lt;a href="https://phantombuster.com" rel="noopener noreferrer"&gt;Phantombuster&lt;/a&gt; as orchestration layers — they're calling these same APIs under the hood and charging a waterfall markup. Before you pay that premium, run your own cost-per-verified calculation. In most cases you're paying 2–3x to avoid writing a short enrichment script.&lt;/p&gt;

&lt;p&gt;The bottom line: stop comparing list prices. Build the cost-per-verified-contact table for your actual ICP and volume. The rankings shift significantly, and in most mid-market prospecting workflows, &lt;a href="https://hunter.io" rel="noopener noreferrer"&gt;Hunter.io&lt;/a&gt; or &lt;a href="https://lusha.com" rel="noopener noreferrer"&gt;Lusha&lt;/a&gt; will come out on top — not &lt;a href="https://apollo.io" rel="noopener noreferrer"&gt;Apollo.io&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>sales</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>data</category>
    </item>
    <item>
      <title>Why 30% of B2B Email Verification Fails: The Catch-All Domain Problem Explained</title>
      <dc:creator>Zackrag</dc:creator>
      <pubDate>Mon, 20 Apr 2026 06:23:52 +0000</pubDate>
      <link>https://forem.com/zackrag/why-30-of-b2b-email-verification-fails-the-catch-all-domain-problem-explained-1n7i</link>
      <guid>https://forem.com/zackrag/why-30-of-b2b-email-verification-fails-the-catch-all-domain-problem-explained-1n7i</guid>
      <description>&lt;p&gt;Three months ago I ran a cold outbound campaign to 4,200 "verified" leads. The list had been processed by a well-known verifier—overall accuracy rate: 97%. My bounce rate on the first send was 11.4%. The domain I was using had been sending cleanly for two years. It took six weeks of re-warmup to recover it.&lt;/p&gt;

&lt;p&gt;The culprit: catch-all domains. Nobody told me they were a separate category with completely different verification mechanics.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a catch-all domain actually is
&lt;/h2&gt;

&lt;p&gt;When your email server checks whether an address is valid, it initiates an SMTP handshake with the receiving mail server and asks: "Does this mailbox exist?" Most servers answer honestly—250 means yes, 550 means no.&lt;/p&gt;

&lt;p&gt;Catch-all servers lie. Or more precisely, they're configured to accept everything. They respond 250 OK to every address—&lt;code&gt;real@company.com&lt;/code&gt;, &lt;code&gt;fake@company.com&lt;/code&gt;, &lt;code&gt;asdfgh@company.com&lt;/code&gt;—regardless of whether any mailbox behind that address is actually active.&lt;/p&gt;

&lt;p&gt;This is usually intentional. Companies configure catch-all so they don't lose emails sent to misspelled or retired addresses. It's especially common in mid-market and enterprise: smaller IT teams, older infrastructure, less aggressive inbox hygiene.&lt;/p&gt;

&lt;p&gt;On a typical B2B prospecting list, &lt;strong&gt;30–40% of addresses sit on catch-all domains&lt;/strong&gt;. For lists heavy with enterprise accounts, that number climbs higher.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why SMTP probing fails completely here
&lt;/h2&gt;

&lt;p&gt;Standard email verification runs five steps: syntax check, DNS lookup, MX record check, SMTP handshake, and catch-all detection. Steps 1–4 work fine. Step 5 is where things break.&lt;/p&gt;

&lt;p&gt;"Catch-all detection" identifies &lt;em&gt;that&lt;/em&gt; a domain is catch-all. It doesn't tell you whether the &lt;em&gt;specific mailbox&lt;/em&gt; behind it is active. Once a server is flagged as catch-all, the verifier has no SMTP-based path to probe individual addresses. The server will say 250 OK to anything you throw at it. The protocol makes deeper probing impossible.&lt;/p&gt;

&lt;p&gt;So what do tools do when they hit a catch-all domain? Most mark every address on it as "risky," "unknown," or "accept-all," then move on. Some try heuristics—checking whether the username format matches LinkedIn patterns, or whether the domain's MX records belong to Google Workspace or Microsoft 365 managed hosting. None of them can tell you definitively whether &lt;code&gt;james.porter@bigcorp.com&lt;/code&gt; has an active inbox.&lt;/p&gt;

&lt;p&gt;This is not a bug in any specific tool. It's a protocol ceiling every tool hits equally.&lt;/p&gt;

&lt;h2&gt;
  
  
  The accuracy number vendors don't show you
&lt;/h2&gt;

&lt;p&gt;Every verification vendor publishes a headline accuracy figure. &lt;a href="https://zerobounce.net" rel="noopener noreferrer"&gt;ZeroBounce&lt;/a&gt; claims 98%+. &lt;a href="https://kickbox.com" rel="noopener noreferrer"&gt;Kickbox&lt;/a&gt; claims 99%. &lt;a href="https://neverbounce.com" rel="noopener noreferrer"&gt;NeverBounce&lt;/a&gt;'s marketing lands around 99.9%. These numbers are accurate. They're also misleading.&lt;/p&gt;

&lt;p&gt;When &lt;a href="https://hunter.io" rel="noopener noreferrer"&gt;Hunter.io&lt;/a&gt; ran an independent benchmark of 15 email verification tools across roughly 3,000 real business emails, the top scorer hit &lt;strong&gt;70% overall accuracy&lt;/strong&gt;. &lt;a href="https://clay.com" rel="noopener noreferrer"&gt;Clay&lt;/a&gt; ran a separate controlled test and found that when catch-all domains were &lt;em&gt;excluded from the sample&lt;/em&gt;, &lt;a href="https://zerobounce.net" rel="noopener noreferrer"&gt;ZeroBounce&lt;/a&gt; hit 99.25%, &lt;a href="https://findymail.com" rel="noopener noreferrer"&gt;Findymail&lt;/a&gt; hit 98.92%, &lt;a href="https://hunter.io" rel="noopener noreferrer"&gt;Hunter&lt;/a&gt; hit 98.52%.&lt;/p&gt;

&lt;p&gt;The tools are genuinely excellent—on the addresses they can actually verify. The gap is the catch-all segment. Vendors report accuracy on verifiable addresses and either exclude catch-alls from their benchmark methodology or group them under "risky: send at your own risk."&lt;/p&gt;

&lt;p&gt;A list with 40% catch-all addresses and 99% accuracy on everything else can still produce a 9%+ bounce rate if you send to the catch-all segment without further triage. Scrubby's data puts the hard-bounce rate on unverified catch-all emails at around 23%.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the major tools actually handle catch-alls
&lt;/h2&gt;

&lt;p&gt;Here's what I found after running the same 1,200-address catch-all segment through each tool:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Marketed Accuracy&lt;/th&gt;
&lt;th&gt;Catch-All Strategy&lt;/th&gt;
&lt;th&gt;Real-World Verdict&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://zerobounce.net" rel="noopener noreferrer"&gt;ZeroBounce&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;98%+&lt;/td&gt;
&lt;td&gt;Flags as "accept-all," assigns risk score&lt;/td&gt;
&lt;td&gt;Conservative; useful API structure for pipelines&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://neverbounce.com" rel="noopener noreferrer"&gt;NeverBounce&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;99.9%&lt;/td&gt;
&lt;td&gt;Flags as "accept-all," excludes from safe-send&lt;/td&gt;
&lt;td&gt;Most conservative; 0 bounces on approved in independent tests&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://kickbox.com" rel="noopener noreferrer"&gt;Kickbox&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;99%&lt;/td&gt;
&lt;td&gt;Flags as "accept-all," engagement scoring&lt;/td&gt;
&lt;td&gt;Best at &lt;em&gt;detecting&lt;/em&gt; catch-all domains accurately&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://findymail.com" rel="noopener noreferrer"&gt;Findymail&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;98.9%&lt;/td&gt;
&lt;td&gt;Pattern-based scoring for catch-all addresses&lt;/td&gt;
&lt;td&gt;Good username heuristics, useful as second pass&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://hunter.io" rel="noopener noreferrer"&gt;Hunter.io&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;95%+&lt;/td&gt;
&lt;td&gt;Returns "catch-all" status, leaves triage to you&lt;/td&gt;
&lt;td&gt;Honest about limitations, no false confidence&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://zoominfo.com" rel="noopener noreferrer"&gt;ZoomInfo&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Enterprise tier&lt;/td&gt;
&lt;td&gt;Supplements SMTP with in-platform activity signals&lt;/td&gt;
&lt;td&gt;Best supplemental signal, worst price point&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The table makes something visible that most comparisons hide: &lt;strong&gt;differentiation is in what tools do with uncertainty, not with addresses they can cleanly verify&lt;/strong&gt;. A tool that aggressively marks catch-all addresses as risky will score &lt;em&gt;lower&lt;/em&gt; in aggregate accuracy benchmarks—because it refuses to give a clean verdict—but will protect your deliverability better in practice.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://neverbounce.com" rel="noopener noreferrer"&gt;NeverBounce&lt;/a&gt;'s conservatism looks bad in head-to-head tests where "gave a clean result on more addresses" is counted as accuracy. In real campaigns, that conservatism is a feature. &lt;a href="https://kickbox.com" rel="noopener noreferrer"&gt;Kickbox&lt;/a&gt;'s advantage isn't its overall number—it's that it's better at detecting catch-all domains in the first place, so your risky segment is more accurately populated.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why your current workflow is probably wrong
&lt;/h2&gt;

&lt;p&gt;The common mistake: treating "risky" and "invalid" as interchangeable. They're not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Invalid&lt;/strong&gt; means the SMTP handshake returned a hard rejection—the mailbox definitively doesn't exist. Never send to these.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Risky/accept-all&lt;/strong&gt; means the tool couldn't verify the address. Some of these are real inboxes. Depending on the domain, delivery rates on catch-all addresses range from 50% to 85%—the spread is large because it depends on the specific company's mail configuration. Suppressing your entire catch-all segment can mean losing 20–30% of legitimate leads.&lt;/p&gt;

&lt;p&gt;Most people run verification once before a campaign and assume they're done. With catch-all domains, that's a single point of failure.&lt;/p&gt;

&lt;h2&gt;
  
  
  A triage workflow that actually works
&lt;/h2&gt;

&lt;p&gt;After losing a domain to a bad catch-all send, I rebuilt my process around five steps:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Separate your catch-all segment immediately.&lt;/strong&gt; Any verifier returns a status field. Pull every row where status is &lt;code&gt;accept-all&lt;/code&gt;, &lt;code&gt;catch-all&lt;/code&gt;, &lt;code&gt;unknown&lt;/code&gt;, or &lt;code&gt;risky&lt;/code&gt;. Never mix this with your clean-send list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Apply username pattern scoring.&lt;/strong&gt; Addresses following &lt;code&gt;firstname.lastname&lt;/code&gt; or &lt;code&gt;firstname&lt;/code&gt; patterns at domains with Google Workspace or Microsoft 365 MX records are substantially more likely to be active. Addresses like &lt;code&gt;info@&lt;/code&gt;, &lt;code&gt;admin@&lt;/code&gt;, &lt;code&gt;support@&lt;/code&gt;, or auto-generated strings are almost always shared inboxes or role addresses—skip them regardless.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Verify the person, not just the address.&lt;/strong&gt; If you can confirm on LinkedIn that the person is currently employed at that company, the probability of a real inbox jumps meaningfully. You're not verifying the email through this step—you're verifying the &lt;em&gt;person&lt;/em&gt; behind it. Tools like &lt;a href="https://clay.com" rel="noopener noreferrer"&gt;Clay&lt;/a&gt; make this feasible at scale.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Warm up your catch-all sends separately.&lt;/strong&gt; Never mix catch-all addresses into your main send sequence. Start with 10–15% of the catch-all segment, monitor bounce rate after 72 hours, and expand only if you stay under 1% hard bounce. Each new batch is its own experiment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Re-verify quarterly.&lt;/strong&gt; Catch-all configurations change. A domain that was catch-all six months ago might have tightened its policy. A clean domain might have moved to catch-all after an IT migration. Static verification is a snapshot.&lt;/p&gt;

&lt;p&gt;The difference between a 2% bounce rate and an 11% bounce rate is almost always whether you had a catch-all triage layer—not which primary verifier you used.&lt;/p&gt;

&lt;h2&gt;
  
  
  What published benchmarks miss
&lt;/h2&gt;

&lt;p&gt;Published verifier comparisons focus on aggregate accuracy across the full dataset. Almost none isolate catch-all accuracy as a separate metric. This creates a real problem: the tools that score highest in benchmarks are often the ones most likely to give you a false sense of safety.&lt;/p&gt;

&lt;p&gt;If a tool marks 40% of your list as "risky" and you ignore that, you're not using the tool correctly. If a tool marks only 15% as risky and lets the rest through, it's not necessarily more accurate—it may just be less cautious.&lt;/p&gt;

&lt;p&gt;The honest metric to demand from any verifier is: &lt;strong&gt;of the addresses you classified as safe-to-send, what percentage actually delivered?&lt;/strong&gt; Not overall accuracy. Safe-to-send accuracy. That number tells you what the tool is actually doing with catch-all uncertainty.&lt;/p&gt;

&lt;p&gt;Very few vendors publish this breakdown. &lt;a href="https://neverbounce.com" rel="noopener noreferrer"&gt;NeverBounce&lt;/a&gt; comes closest with its conservative flagging. For everyone else, you're extrapolating from aggregate claims.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I actually use
&lt;/h2&gt;

&lt;p&gt;For the core verification pass, I run &lt;strong&gt;&lt;a href="https://kickbox.com" rel="noopener noreferrer"&gt;Kickbox&lt;/a&gt;&lt;/strong&gt; first for its catch-all detection reliability, then run the risky segment through &lt;strong&gt;&lt;a href="https://findymail.com" rel="noopener noreferrer"&gt;Findymail&lt;/a&gt;&lt;/strong&gt; for pattern scoring on the usernames.&lt;/p&gt;

&lt;p&gt;For any batch where the catch-all rate exceeds 30%, I pull it through &lt;strong&gt;&lt;a href="https://clay.com" rel="noopener noreferrer"&gt;Clay&lt;/a&gt;&lt;/strong&gt; to add LinkedIn employment signals before deciding whether to include those addresses in an active sequence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://zerobounce.net" rel="noopener noreferrer"&gt;ZeroBounce&lt;/a&gt;&lt;/strong&gt; is my default when I'm integrating verification into an automated pipeline—the API response structure is cleaner and the documentation is thorough. &lt;strong&gt;&lt;a href="https://neverbounce.com" rel="noopener noreferrer"&gt;NeverBounce&lt;/a&gt;&lt;/strong&gt; is my choice when domain reputation matters more than list size: it's more conservative, which costs leads but protects deliverability.&lt;/p&gt;

&lt;p&gt;For workflows that start from social profiles rather than an existing email list—pulling contact data from Twitter or Facebook profiles—&lt;a href="https://ziwa.club" rel="noopener noreferrer"&gt;Ziwa&lt;/a&gt; has been faster for me than going through &lt;a href="https://peopledatalabs.com" rel="noopener noreferrer"&gt;PDL&lt;/a&gt;'s direct API, though that's a different use case than verifying a list you already have.&lt;/p&gt;

&lt;p&gt;If you're running more than 5,000 emails per month to B2B lists, the catch-all segment deserves its own process. Treating "risky" as interchangeable with "skip" loses real leads. Treating it as interchangeable with "safe to send" destroys domains. The workflow above sits between those two failure modes.&lt;/p&gt;

</description>
      <category>marketing</category>
      <category>networking</category>
      <category>saas</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
