An apples-to-apples benchmark of three B2B contact-finding vendors (Blitz, GetLeads, QuickEnrich) across 8,999 companies. Coverage rate, funded-company lift, firmographic accuracy against an independent ground truth, email deliverability, and real cost, aggregated only, zero raw contact data.
LeadGrow runs a multi-provider waterfall to find and enrich B2B contacts for outbound campaigns. Picking which vendor to call first, second, and third is a real decision with real cost attached, and most vendor comparisons on the market are marketing copy, not data. So we ran our own.
8,999 companies, pulled from a stratified sample across SaaS revenue bands plus a dedicated funded-company segment (recently-funded companies are newer and less indexed, which makes them the harder test case). All three vendors, Blitz, GetLeads, and QuickEnrich, ran against the identical company list with the same 4-contact-per-company cap. Real spend, no simulated or estimated numbers.
After the raw vendor pull, every returned email ran through MillionVerifier for deliverability, every contact with no valid email went through the existing Kitt/LeadMagic/Icypeas recovery waterfall (the same one LeadGrow's outbound pipeline already uses), and every company's firmographics got checked against LG-Free-Enrich, an independent LinkedIn-sourced data source none of the three vendors had any part in producing.
A QA pass caught a real Blitz data-quality issue before publishing. Blitz's raw output reused 25 identical "phantom" contact identities (same name, same LinkedIn URL, same title) each attached as the returned contact for anywhere from 3 to over 200 completely unrelated domains, a sign it was returning a stock fallback record instead of erroring on a genuine miss. That inflated Blitz's coverage number: 292 of the 8,999 companies had their entire Blitz result made up of nothing but these phantom records, and 1,151 contact rows across the full dataset were fabricated this way. Every number in this report has those rows stripped out before scoring. Blitz's funded-company segment had zero phantom hits, so that figure is unaffected. This kind of silent fallback behavior is itself a real, useful signal about a vendor, worth knowing before you build a waterfall around one.
Separately, both Blitz's and GetLeads' raw result logs contained duplicate retry lines for a subset of domains (229 and 248 domains respectively, up to 7 lines for one domain), an artifact of how failed attempts were logged during the run. The phantom-contact detection above, and every coverage number in this report, was recomputed keeping only each domain's final logged attempt, then cross-checked line-by-line against the run's own coverage ledger, which confirmed an exact match for all 477 affected domains. The 292/1,151 figures already reflect that corrected accounting.
GetLeads' data here comes from its bulk search/export endpoint, run for apples-to-apples throughput against Blitz and QuickEnrich. That endpoint exposes 14 output columns total. GetLeads also offers separate single-contact enrichment endpoints (from-email, from-linkedin, from-person) whose response object is documented as mirroring the full enrichment provider's data, materially richer than the 14-column export used here. Those endpoints weren't exercised in this benchmark, which measures bulk-list breadth, not any vendor's absolute per-contact data ceiling.
Every number below is aggregate. No contact name, email, phone number, or individual company record appears in this report.
The single most important number in this report: stack all three vendors together, run the full recovery waterfall, and 50.2% of the 8,999 companies (4,513) end up with at least one confirmed-sendable contact. Just under half get nothing usable no matter which vendor combination you run. That is the real ceiling of this data category today, not any single vendor's marketing number.
Below is every metric in this report, side by side, for all three vendors. Methodology and caveats for each row are in the sections that follow, this table is the at-a-glance version.
| Metric | Blitz | GetLeads | QuickEnrich |
|---|---|---|---|
| Coverage rate (overall) | 59.3% | 62.7% | 60.5% |
| Funded-company coverage | 83.8% | 62.3% | 81.4% |
| API error rate | 2.6% (231/8,999) | 0.0% | 0.0% |
| Speed (p50 / p95 latency) | 4,404ms / 9,502ms | 4,090ms / 7,068ms | 1,392ms / 2,596ms |
| Email find rate | 47.8% | 48.9% | 81.4% |
| Valid email rate (of found) | 31.9% | 32.3% | 54.6% |
| Catch-all rate (of found) | 12.7% | 13.1% | 22.9% |
| Firmographic mismatch (avg of reported fields) | 27.7% | 26.7% | 29.2% |
| Data breadth (contact / company fields) | 5/7, 5/6 | 7/7, 5/6 | 6/7, 4/6 |
| Contact freshness (still at reported company) | 69.3% | 63.9% | 70.7% |
| Cost basis | Flat-rate | 17,767 credits | 30,922 credits |
Firmographic mismatch is averaged only over the fields each vendor actually reports (GetLeads never returns HQ city, QuickEnrich never returns founded year), so it is not a perfectly apples-to-apples average, see Section 5 for the field-by-field breakdown. Speed is measured at the per-company API call level (one call for QuickEnrich and Blitz's contact search, one export call covering a batch for GetLeads), not per-contact. No single vendor wins every row. That is the point of running all three in a waterfall instead of picking one.
Coverage rate is the percent of companies where a vendor returned at least one contact. Across the full 8,999-company sample:
| Vendor | Companies Found | Coverage Rate |
|---|---|---|
| Blitz | 5,332 / 8,999 | 59.3% |
| GetLeads | 5,646 / 8,999 | 62.7% |
| QuickEnrich | 5,443 / 8,999 | 60.5% |
Blitz's number here is after stripping the 292 companies whose entire Blitz result was fabricated fallback contacts (see the QA note in Methodology). On raw coverage, GetLeads comes out ahead, though the gap to QuickEnrich and Blitz is not large. That is the wrong conclusion to stop at, and the next two sections show why.
Overlap matters as much as raw coverage. Breaking the 8,999 companies into a Venn:
| Found By | Companies | Rate |
|---|---|---|
| All 3 vendors | 3,221 | 35.8% |
| Exactly 2 vendors | 2,727 | 30.3% |
| Exactly 1 vendor | 1,304 | 14.5% |
| None | 1,747 | 19.4% |
44.8% of companies (exactly-1 plus exactly-2) were missed by at least one vendor, and 19.4% were missed by all three. A single-vendor strategy leaves real coverage on the table no matter which vendor you pick. Stacking two vendors closes most of that gap.
Recently-funded companies are the harder case for any data vendor: newer, smaller footprint, less indexed. We carved out a 1,545-company funded segment and scored coverage separately, since a vendor's average performance can hide how it does on the segment that matters most for a signal-based outbound motion.
| Vendor | Funded Coverage | Overall Coverage | Delta |
|---|---|---|---|
| Blitz | 83.8% (1,294/1,545) | 59.3% | +24.5 pts |
| QuickEnrich | 81.4% (1,257/1,545) | 60.5% | +20.9 pts |
| GetLeads | 62.3% (962/1,545) | 62.7% | -0.4 pts |
Blitz's funded-company result was unaffected by the phantom-contact QA fix described in Methodology, none of the 292 stripped companies fell in the funded segment, so the +24.5 point jump (versus its corrected overall average) is real, not an artifact of the correction.
This is the finding that matters most for anyone doing signal-based outbound. Blitz and QuickEnrich both jump more than 20 points on funded companies, meaning whatever index they are built on picks up newly-funded companies faster than GetLeads' static index does. GetLeads shows essentially zero lift on the exact segment where lift matters most. If your outbound motion is triggered by funding events, GetLeads on its own is the wrong primary vendor for that motion, regardless of its overall coverage number.
Coverage tells you whether a vendor found something. It says nothing about whether what they found is correct. We diffed each vendor's reported employee count, industry, headquarters city, and founding year against LG-Free-Enrich, an independent LinkedIn-sourced data source none of the three vendors touched.
| Field | Blitz Mismatch | GetLeads Mismatch | QuickEnrich Mismatch |
|---|---|---|---|
| Employee count | 47.7% | 44.9% | 38.5% |
| Industry | 28.2% | 23.6% | 10.2% |
| HQ city | 23.9% | no data returned | 38.9% |
| Founded year | 11.0% | 11.6% | no data returned |
Employee count carries a wide built-in tolerance in this comparison (a vendor reporting a "51-200" range is scored correct if the ground-truth headcount falls anywhere in that range), and mismatch rates are still 38.5% to 47.7% across all three. Take vendor-reported headcount as directional, not precise, no matter which vendor you use. All three vendors report employee count as a range string only, none returns a precise integer headcount, so the range tolerance applies identically to Blitz, GetLeads, and QuickEnrich rather than favoring one vendor's format over another.
QuickEnrich has the cleanest industry data by a wide margin (10.2% mismatch, less than half of GetLeads' 23.6% and well under half of Blitz's 28.2%). GetLeads returned no usable headquarters-city field at all across the sample, a real gap in its data, not a rounding error. QuickEnrich's HQ city field, when present, was wrong more often (38.9%) than Blitz's (23.9%).
No vendor wins across every field. If firmographic accuracy matters for your segmentation logic, don't trust any single vendor's company data without a cross-check.
Coverage clearly gets easier for Blitz and QuickEnrich on funded companies (Section 4) and stays flat for GetLeads. Accuracy is a separate question: does the data that DOES come back on a newer, less-indexed company hold up as well as it does on the broader SaaS sample. Splitting the mismatch table by band answers it, and the result cuts against the obvious guess.
| Vendor / Field | Funded Mismatch | Rest of Sample Mismatch |
|---|---|---|
| Blitz, employee count | 39.6% | 50.0% |
| Blitz, industry | 23.4% | 29.5% |
| Blitz, HQ city | 15.7% | 26.0% |
| Blitz, founded year | 4.9% | 12.8% |
| GetLeads, employee count | 42.3% | 45.5% |
| GetLeads, industry | 20.6% | 24.3% |
| GetLeads, founded year | 11.5% | 11.6% |
| QuickEnrich, employee count | 38.1% | 38.6% |
| QuickEnrich, industry | 8.3% | 10.7% |
| QuickEnrich, HQ city | 42.2% | 38.3% |
Blitz's accuracy is better on funded companies across all four fields, sometimes by a wide margin (founded year mismatch drops from 12.8% to 4.9%, HQ city from 26.0% to 15.7%). A funding event apparently generates enough fresh press and data updates to outweigh a newer company being less indexed overall. GetLeads and QuickEnrich are closer to flat, a small improvement on some fields and a small decline on others, no vendor shows funded companies getting meaningfully worse across the board. If accuracy on recently-funded companies specifically matters to your segmentation, none of these three vendors is a liability there, and Blitz is a real plus.
Ground-truth mismatch tells you if a vendor is wrong. It does not tell you whether two vendors are at least consistent with each other, a weaker but still useful signal, since independent corroboration from two different data sources is worth something even without a third referee. For every pair of vendors that both reported a value for the same company, here is how often they matched (industry as an exact string match, employee count as overlapping ranges since the three vendors use different bucket boundaries and an exact-string comparison would understate real agreement):
| Vendor Pair | Industry Agreement | Employee Count Agreement |
|---|---|---|
| Blitz vs GetLeads | 93.1% (n=4,383) | 93.1% (n=4,402) |
| Blitz vs QuickEnrich | 78.6% (n=3,863) | 73.0% (n=4,125) |
| GetLeads vs QuickEnrich | 82.7% (n=4,229) | 75.9% (n=4,394) |
Blitz and GetLeads agree with each other far more than either agrees with the independent LG-Free-Enrich ground truth (93.1% mutual agreement on both fields, against ground-truth mismatch rates of 23-48%). That is not proof both are right, two vendors can share the same wrong answer if they draw from a similar underlying data source or taxonomy, but it is a real, useful signal: when Blitz and GetLeads agree on a company's industry or size, that agreement is worth more confidence than either one alone. QuickEnrich sits further from both of the others (73-83%) as well as from the ground truth on some fields, consistent with it running a meaningfully different data source rather than the same index as the other two.
Coverage rate and mismatch rate both assume a vendor returned something. This is a third, separate dimension: how much a vendor returns at all, and how often. All three vendors were requested the same shared 7-field contact schema and 6-field company schema; this is how many of those fields each one ever actually populates, plus two fill-rate metrics: domain fill rate (percent of all 8,999 domains where the vendor returned any company-level data, independent of whether it found a contact) and LinkedIn fill rate (percent of a vendor's found contacts, phantom rows already excluded, carrying a real LinkedIn URL).
| Vendor | Contact Fields | Company Fields | Domain Fill Rate | LinkedIn Fill Rate |
|---|---|---|---|---|
| Blitz | 5/7 (no email status, no phone) | 5/6 (no revenue) | 77.6% (6,984/8,999) | 100.0% |
| GetLeads | 7/7 | 5/6 (no HQ location) | 62.7% (5,646/8,999) | 100.0% |
| QuickEnrich | 6/7 (no email status) | 4/6 (no description, no founded year) | 60.5% (5,443/8,999) | 86.7% (13,430/15,483) |
Domain fill rate is not an independent signal for every vendor. Blitz's company data comes from a separate call than its contact search, so it can return firmographics on a domain even with zero contacts found (1,360 cases in this run), making its 77.6% a genuinely additional data point. GetLeads' and QuickEnrich's company data is only returned alongside a found contact, so their domain fill rate is mechanically identical to their contact-coverage rate, not a distinct measurement. QuickEnrich's LinkedIn fill rate is lower than the other two because roughly 13% of its found contacts carry a literal "N/A" placeholder instead of a real profile URL, a real, vendor-specific gap, not a rounding artifact of this analysis.
A found contact with no working email is not a lead. Every email returned by all three vendors across 38,003 total contacts (after removing Blitz's fabricated phantom rows, see Methodology) ran through MillionVerifier, and every contact left with no valid email went through the existing Kitt, LeadMagic, and Icypeas waterfall.
Two email numbers matter and they are not the same thing: whether a vendor gives you an email at all (find rate), and whether that specific email the vendor gave you is actually deliverable (valid rate), measured before any recovery waterfall touches it. A vendor's own email is scored valid, catch-all, or invalid based on MillionVerifier's direct check of that exact address, tagged in our data as an "input:valid" / "input:catch_all" / "input:invalid" result distinct from anything a recovery provider later supplied.
| Vendor | Email Find Rate | Valid Email Rate | Catch-All Rate |
|---|---|---|---|
| Blitz | 47.8% (7,625/15,960) | 31.9% | 12.7% |
| GetLeads | 48.9% (8,422/17,231) | 32.3% | 13.1% |
| QuickEnrich | 81.4% (12,606/15,483) | 54.6% | 22.9% |
QuickEnrich wins on both, it gives you an email far more often, and that email is valid far more often, than Blitz or GetLeads. Blitz and GetLeads are close to each other on both, find rate around 48%, valid rate around 32%, of what they do find. Catch-all is also highest for QuickEnrich in absolute terms, but that scales with how many more emails it hands you in the first place, not a sign its emails are worse quality per attempt.
Final result across all 38,003 contacts, after the full recovery pass:
| Outcome | Contacts | Rate |
|---|---|---|
| Sendable | 17,575 | 46.2% |
| Catch-all | 7,260 | 19.1% |
| No valid email | 13,168 | 34.6% |
Less than half of every contact any vendor returns ends up as a confirmed-sendable email, even after a full recovery pass. That number alone should change how anyone budgets contact-finding against expected sendable volume.
The recovery waterfall's value shows up when you look at it per vendor. Of the contacts each vendor found but returned with no email attached, here is how many the Kitt/LeadMagic/Icypeas pass turned into a sendable email:
| Vendor | Found, No Email | Recovered Sendable | Recovery Rate |
|---|---|---|---|
| Blitz | 8,335 | 1,898 | 22.8% |
| GetLeads | 8,809 | 1,349 | 15.3% |
| QuickEnrich | 2,878 | 559 | 19.4% |
Two things worth noticing. First, QuickEnrich's "found, no email" pool is a fraction of the size of Blitz's and GetLeads' (2,878 vs 8,335 and 8,809), which means QuickEnrich already includes an email on roughly 82% of the contacts it returns, versus roughly half for the other two. Second, the recovery waterfall is not a rounding error: it turned a real 15-23% of every vendor's email-less contacts into sendable leads, for $107.22 total spend (trykitt $50.59, leadmagic $30.06, icypeas $15.11, millionverifier $11.45). Skipping that recovery pass would have thrown away thousands of usable contacts.
A found contact with a valid email still is not a lead if the person switched jobs six months ago. We ran a second check, independent of vendor-reported data: a Clay agent visited each contact's live LinkedIn profile and compared it against the title and company the vendor originally reported. This ran in two batches (an initial pass that only reached Blitz's contacts due to a mapping issue, then a second pass covering the rest), now combined and reported here for all three vendors. A contact found by more than one vendor counts toward each vendor's cohort, the same attribution rule used in the recovery-by-vendor table above.
| Vendor | Checked | Still at Company | Changed Company | Invalid URL | Open to Work |
|---|---|---|---|---|---|
| Blitz | 100.0% (15,960/15,960) | 69.3% | 27.0% | 2.2% | 1.6% |
| GetLeads | 99.9% (17,206/17,231) | 63.9% | 30.5% | 2.9% | 2.7% |
| QuickEnrich | 98.5% (15,257/15,483) | 70.7% | 13.6% | 14.1% | 1.6% |
All three vendors land in a similar range on staleness, roughly two-thirds to seven-tenths of contacts are still where the vendor said they were, meaning 30% or more of any single vendor's pull is already out of date by the time it reaches an outbound sequence, regardless of which vendor you pick. QuickEnrich looks best on "still at company" (70.7%) but its 14.1% invalid-URL rate is inflated by the same issue flagged in Section 5's data breadth table, roughly 13% of QuickEnrich's LinkedIn URLs are a literal "N/A" placeholder rather than a real profile, which Clay correctly flags as invalid, not a genuinely higher dead-profile rate than the other two. GetLeads has the highest real changed-company rate (30.5%), the closest thing to a meaningful difference between vendors here. The usatoday.com example named in Limitations is one of Blitz's changed-company cases: the contact's current employer, per this check, is a different company than the one Blitz's record implied, stale rather than fabricated. Re-verify before a send on any list that has been sitting for a while, no matter which vendor it came from.
Two different failure modes have shown up separately so far in this report: Blitz fabricating contacts outright (Methodology, Limitations) and dead LinkedIn URLs surfacing in the freshness check above. Both are junk in the same practical sense, a row on your list that was never going to become a reply. Here is what share of each vendor's raw output was one or the other.
| Vendor | Fabricated Contacts | Dead LinkedIn URL | Combined Junk Rate |
|---|---|---|---|
| Blitz | 1,151 (6.7% of 17,111 raw) | 357 (2.1% of raw) | 8.8% (1,508/17,111) |
| GetLeads | 0 (no fabrication detected) | 503 (2.9%) | 2.9% (503/17,231) |
| QuickEnrich | 0 (no fabrication detected) | 432 (2.8%, "N/A"-placeholder rows excluded) | 2.8% (432/15,483) |
Blitz's combined junk rate is roughly three times GetLeads' and QuickEnrich's, and the entire gap is the fabrication problem, not dead links. On genuine dead-LinkedIn-URL rate alone, all three vendors are within a point of each other (2.1% to 2.9%), a real but small tax any vendor carries. Fabrication is the outlier: it is the only failure mode in this whole report where one vendor has a problem the other two simply do not have. If you are running Blitz in a waterfall, the phantom-contact filter described in Methodology is not optional, it is removing close to 1 in 15 of everything Blitz hands back.
The recovery-by-vendor table above shows how many of each vendor's email-less contacts got recovered. It does not show which recovery provider actually did the work. Counting only the provider that delivered the final sendable email (not every provider that was tried and failed first):
| Source | Sendable Emails Delivered |
|---|---|
| Vendor's own reported email (passed MillionVerifier directly) | 15,269 |
| TryKitt | 1,521 |
| Icypeas | 747 |
| Supabase cache | 38 |
| LeadMagic | 0 |
LeadMagic never delivered the winning email once across all 38,003 contacts in this run, despite being invoked as the last step in the waterfall roughly 14,000 times. Every time it was tried, it was already too late (TryKitt or Icypeas had already found what there was to find) or LeadMagic itself came up empty on this particular sample. Either way it added zero net recovered contacts here. That is one run, not a permanent verdict on the provider, but on this data it earned its place at the end of the order, not a promotion.
Blitz runs on a flat-rate unlimited-leads plan. No marginal per-company or per-contact cost, which makes its funded-company coverage lift essentially free upside.
GetLeads and QuickEnrich are both credit-metered. GetLeads spent 17,767 credits (roughly 1 credit per exported row) for its 17,767-contact yield. QuickEnrich's real observed rate is 4.4 credits per company, well above its own earlier internal estimate of 2.86, and spent 30,922 credits for 15,817 contacts on this run. Both vendors' published docs stop short of a hard dollar-per-credit rate, so these numbers are reported in credits, not dollars, rather than guess at a conversion.
The recovery waterfall (Phase 4/5 of this study, running every no-email contact through Kitt, LeadMagic, Icypeas, and MillionVerifier) is real, metered spend: $107.22 total across 38,003 contacts, or roughly $0.0028 per contact processed.
No single vendor wins outright, but the data points to a clear order for a waterfall, not a single-vendor bet.
Blitz first. Flat-rate, zero marginal cost, and the strongest funded-company lift (83.8% vs its corrected 59.3% overall average, once the fabricated fallback contacts flagged in Methodology are stripped out) plus the best firmographic accuracy on that same funded segment (Section 5). Running it first costs nothing extra and catches the harder, newer companies other vendors under-index. Its 2.6% API error rate is a minor operational cost, worth a retry policy but not disqualifying. Its real cost is the 8.8% combined dead-or-fake rate (Section 6c): the phantom-contact filter described in Methodology is not optional if you run Blitz, without it you are paying attention to fabricated names on a real fraction of every pull.
QuickEnrich second. Nearly matches Blitz's funded-company coverage (81.4%), has the cleanest firmographic data of the three, the highest email find and valid rates by a wide margin (81.4% find, 54.6% valid), and the fastest response time (1,392ms p50, roughly a third of the other two). It adds real net-new coverage without adding much to the recovery-waterfall queue.
GetLeads third, not first. Its overall coverage rate is the highest of the three by a clear margin (62.7% vs Blitz's corrected 59.3% and QuickEnrich's 60.5%), but it shows almost no lift on funded companies (62.3%, a -0.4 point delta from its own average), has the weakest email-quality recovery rate (15.3%), the highest changed-company rate of the three (30.5%), and returned no usable headquarters-city data at all. It still adds incremental coverage on the 14.5% of companies where it is the only vendor to find anything, which is why it stays in the waterfall, just not first. Its raw-coverage lead is real, but the funded-company gap, the missing firmographic fields, and the staler contact pool matter more for a signal-based motion than being first in the order.
And regardless of order: don't skip the recovery waterfall. It converted 15-23% of every vendor's email-less contacts into sendable leads for a few cents each, almost entirely TryKitt and Icypeas doing the work (Section 6c), LeadMagic delivered zero winning emails in this run despite thousands of attempts, worth revisiting its position in the chain. Stacked together with the right order, the three vendors get you to 50.2% of companies with a usable contact, no single vendor gets close to that alone.
This benchmark reflects one run against one 8,999-company sample. A few things it does not cover:
This report is the kind of work that sits behind every outbound campaign LeadGrow runs. Before we send a single email, we know which data vendor to call first, how much of what comes back is actually reachable, and what it costs to close the gap on what isn't. Most agencies skip this step and eat the bounce rate later.
We build outbound systems end to end: infrastructure, data sourcing, copy, testing, optimization, and lead handoff, all backed by the kind of vendor-level rigor in this report. Situation-based targeting, not spray and pray. 1,626 campaigns run, reply rates 2 to 4x industry average.
If you want to know whether your current data stack is actually finding and reaching who you think it is, that's a conversation worth having before your next campaign, not after the bounce rate comes in.