The short answer
Of 50 verified work addresses, the waterfall returned a LinkedIn profile for 48 and marked 2 as uncertain. The run cost $0.5551: about $0.0111 per address. Every address produced a profile or an explicit uncertain result.
The money did not go where the volume went. The three cheap steps cost $0.0611 together; Apollo accounted for 89.0% of the spend ($0.494) while producing 17 final matches. Cheap steps for the easy half, an expensive backstop for the rest.
One key is enough. With treg alone (BlitzAPI then QuickEnrich) 29 of 50 addresses were answered — 26 found, 3 uncertain, 58.0% — for $0.0006 per address. Monid alone cannot be compared from this run because Apollo was only reached after the treg and Hunter steps.
How the benchmark was run
The sample is 50 rows from the WizLeads 2026 public benchmark table: LinkedIn followers of Clay, with a name and an SMTP-verified work address, across 661 distinct domains. The rows were drawn with a fixed seed, so the same command produces the same subset. Files: data/bench/wizleads-sample-50.csv and data/bench/wizleads-sample-50.results.json.
The run used both provider keys and the default waterfall order, with each provider's catalog price checked before the call. The display name from the CSV was passed with the address, and a result was accepted only when the profile name matched. All 50 rows have cached: false.
The waterfall, cheapest first:
- Signature scan — a local regex for a
linkedin.com/inlink. Free; not exercised here (the CSV has no mail bodies). - BlitzAPI (treg) — reverse email lookup, $0.0005 per hit, misses free.
- Hunter (Monid) — email to profile, $0.0049 per hit, a 404 miss is free.
- QuickEnrich (treg) — email enrichment, $0.0048 per hit.
- Apollo (Monid) — email plus name plus domain, $0.026 per hit; a miss is free unless Apollo returns an empty stub attached to a known company, which is billed. In this run every call that reached Apollo answered.
- Data Legion (Firecrawl, optional) — 10 credits; reached twice, skipped twice by the budget check.
Results by step
Reached is the number of addresses that arrived at the step. Answered is the number of calls that returned a profile. Hit rate is answered divided by reached — the conditional rate, not a share of the whole sample. Final answer is how many addresses the step answered after the name check and after later steps could override a non-matching result.
The table is generated from the results file, not typed by hand. If the benchmark is rerun and the file changes, npm run site rebuilds it.
| Step | Reached | Answered | Hit rate | Final answer | Observed price | Spend |
|---|---|---|---|---|---|---|
| BlitzAPI | 50 | 25 | 50.0% | 24 (22 found, 2 uncertain) | $0.000495 | $0.012375 |
| Hunter | 28 | 5 | 17.9% | 5 found | $0.0049 | $0.0294 |
| QuickEnrich | 23 | 4 | 17.4% | 4 found | $0.004834 | $0.019336 |
| Apollo | 19 | 19 | 100.0% | 17 found (+2 name mismatch) | $0.026 | $0.494 |
| Data Legion | 2 | 0 | — | 0 (2 skipped) | — | $0 |
Computed from data/bench/wizleads-sample-50.results.json by scripts/bench-stats.js; the table regenerates on npm run site. Spend is the run's own USD ledger, including any billed misses and the provider's observed (not catalog-rounded) per-call charges.
Reading the table
BlitzAPI is the cheapest step and the busiest: reached for all 50 addresses, it answered 25 and was the final answer for 24 (22 name-matched, 2 uncertain). One BlitzAPI answer did not match, so the chain continued; Apollo found a matching person and became the final answer. That is the name check working.
Hunter answered 5 of the 28 addresses that reached it (17.9 %), and QuickEnrich answered 4 of 23 (17.4 %). Those rates are conditional on the earlier step having missed: they are second and third chances, not first. Hunter's spend is slightly above five times its unit price because one miss was billed at $0.0049;
Apollo answered all 19 calls it served, but only 17 became final matches. The other two did not match the mail header either; those rows are marked uncertain and show both names. Apollo is why the total is not three cents.
Data Legion is listed for completeness: both calls were skipped by the per-lookup budget check, so it answered nothing and cost nothing.
What it costs in practice
At $0.0111 per address, the default $2 daily cap covers about 180 new addresses a day. The $0.05 per-lookup cap never came into play: the most expensive successful call was Apollo at $0.026.
treg alone is roughly twenty times cheaper per address and answers a bit more than half the sample. Monid alone puts Apollo behind Hunter and is better when a miss costs more than $0.03. Both keys gave the best coverage here for about a cent per address, which is why it is the default.
The benchmark excludes the optional Village and ContactOut steps and the two skipped Data Legion calls. Enabling those changes cost and coverage. The extension reads the current price before every call and enforces both caps, so these numbers describe one configuration.
What this benchmark does not prove
A 50-row run is useful for direction and useless for precision. Treat the percentages as one sample with wide error bars, not as the provider's true hit rate. Specific caveats:
- Sample size: 50 addresses from one public table of English-speaking sales and growth contacts. Recruiters, support inboxes, non-English names and enterprise address books may differ.
- One day, one pass: providers change their data and prices; the run is dated 25 October 2026. There were no retries and no cache warming.
- Name matching is a heuristic. A profile can be the right person with a different spelling, or the wrong person with the same name. The two uncertain rows show the second case; one found row had no returned profile name.
- A LinkedIn URL does not prove the profile is current, still at that company, or the person you meant. The extension shows the provider answer plus a name check; it does not verify identity.
- Spend is the run's USD ledger, including one billed Hunter miss and rounded BlitzAPI/QuickEnrich charges.
Reproduce it
Everything needed is in the repository. The benchmark writes a JSON results file; the website table is derived from it. The run costs money because it calls paid APIs — use your own keys and start small to sanity-check the flow. The page publishes aggregates only: no address, name, profile URL or mail content from the sample appears here.
- Clone github.com/astonysh/SenderFinder and run
npm installif your checkout needs it; the project has no runtime dependencies. - Put your treg and Monid keys in
.env(see.env.example), then check them for free withnpm run probe. - Run
npm run bench -- data/bench/wizleads-sample-50.csv. It writes the results JSON and prints the summary. - Run
npm run siteto regenerate this page's table, thennpm test.
Related reading
- How to find a LinkedIn profile from an email address — the manual methods and where the waterfall fits.
- Sales Navigator for Gmail.
- Clearbit Connect alternative and Rapportive alternative.