---
name: waterfall-email-enrichment
description: Build a cheapest-first email enrichment waterfall across Apollo, Findymail, Prospeo and FullEnrich, with verification routed per source. Use when the user wants verified work emails at the lowest cost per contact, asks how deep a waterfall should go, or is paying too much per enriched row.
---

# Waterfall email enrichment

> Generated from https://frontal.so/gtm-apis/stack-waterfall-enrichment
> Every price and limit below was read from the vendor's own pricing page or docs. Hit rates are modeled, and labeled where they appear.

**Tools in this stack:** Apollo API, Findymail, Prospeo, FullEnrich, ZeroBounce.
**Build effort:** Days.
**What it costs:** $0.0364 per mailable contact, $303 per 10,000 rows.

## What you are building

A queue that passes every row down a chain of providers, cheapest first, where each provider only sees the rows the ones before it could not resolve. Verification is routed per source rather than bolted on at the end, because two of these providers verify at find time and a third bundles it.

## Work out what a contact is worth before you choose the depth

Take last quarter's closed-won revenue and divide it by the contacts you enriched to produce it. Compare that against the marginal cost of the last provider, not the average: the average in the modeled run is $0.0364 a contact while the fourth provider costs $0.055, which is 2.8 times the first. At $2.00 a contact all four steps clear and you should add a fifth. At $0.04 only the fourth fails to clear, so stop after the third.

## Prerequisites

| What | Where to get it | Notes |
|---|---|---|
| Apollo API key | https://www.apollo.io/ | $49/seat/mo. Free plan with API access, 900 credits per seat per year granted monthly, so 75 a month |
| Findymail API key | https://www.findymail.com/ | $99/mo. A free account with 10 credits and no card, which this directory counts as a trial rather than a free tier |
| Prospeo API key | https://prospeo.io/ | $49/mo. Free plan, 100 credits a month, and no API access on it |
| FullEnrich API key | https://www.fullenrich.com/ | $55/mo. 50-credit trial, no card. Then 1,000 credits a month at $0.055 each. |
| ZeroBounce API key | https://www.zerobounce.net/ | $39 one-time. Free plan, 100 validation credits per month |
| A queue or orchestration layer you control | n8n, a worker, or a scheduled job | Orchestration platforms that bill an action on top of the data change the arithmetic; see the gotchas |
| A field to record which provider resolved each row | Your warehouse or CRM | Without it you cannot re-order the chain later on evidence |

## The tools, and how to call them

### Apollo API

- **Docs:** https://docs.apollo.io/
- **Auth:** API key in the x-api-key header
- **Rate limits:** 200 req/min, 2,000/day on Basic. Enrichment gets 1,000/min with no daily cap.
- **Entry price:** $49/seat/mo. Free tier: Free plan with API access, 900 credits per seat per year granted monthly, so 75 a month
- **Unit cost:** $0.0196 per credit
- **MCP server:** `https://mcp.apollo.io/mcp`

| Call | What it does |
|---|---|
| `POST https://api.apollo.io/api/v1/people/match` | Person enrichment from an email, name plus domain, or LinkedIn URL. 1 credit, or 9 when a mobile is revealed. |

Prices, limits and auth read from the vendor's own pages on 2026-10-19.

### Findymail

- **Docs:** https://app.findymail.com/docs/
- **Auth:** Bearer token
- **Rate limits:** Published per plan in the docs, not on the pricing page
- **Entry price:** $99/mo. Free tier: A free account with 10 credits and no card, which this directory counts as a trial rather than a free tier
- **Unit cost:** $0.0198 per credit

Endpoint paths are not reproduced here because we have not verified them from this vendor's docs. Read the docs link above before writing the call.

Prices, limits and auth read from the vendor's own pages on 2026-10-14.

### Prospeo

- **Docs:** https://prospeo.io/api-docs
- **Auth:** API key in the X-KEY header
- **Rate limits:** Per plan: Enrich 5/300/2,000 on Starter up to 30/1,800/500,000 on Pro. No API on Free.
- **Entry price:** $49/mo. Free tier: Free plan, 100 credits a month, and no API access on it
- **Unit cost:** $0.0245 per credit
- **MCP server:** `https://prospeo.io/api-docs/mcp`

Endpoint paths are not reproduced here because we have not verified them from this vendor's docs. Read the docs link above before writing the call.

Prices, limits and auth read from the vendor's own pages on 2026-10-08.

### FullEnrich

- **Docs:** https://docs.fullenrich.com/
- **Auth:** Bearer token
- **Rate limits:** 60 API calls a minute, 100 contacts per bulk, 100 concurrent per workspace
- **Entry price:** $55/mo. Free tier: 50-credit trial, no card. Then 1,000 credits a month at $0.055 each.
- **Unit cost:** $0.055 per credit
- **MCP server:** `https://mcp.fullenrich.com/mcp`

Endpoint paths are not reproduced here because we have not verified them from this vendor's docs. Read the docs link above before writing the call.

Prices, limits and auth read from the vendor's own pages on 2026-10-08.

### ZeroBounce

- **Docs:** https://www.zerobounce.net/docs/
- **Auth:** API key as a query parameter
- **Rate limits:** Real-time single validation plus bulk file endpoints
- **Entry price:** $39 one-time. Free tier: Free plan, 100 validation credits per month
- **Unit cost:** $0.0195 per validation
- **MCP server:** Open-source local server, @zerobounce/mcp

Endpoint paths are not reproduced here because we have not verified them from this vendor's docs. Read the docs link above before writing the call.

Prices, limits and auth read from the vendor's own pages on 2026-10-17.

## Build it

### 1. Order the chain by cost per successful lookup, ascending

Cheapest first, so the first provider absorbs the easy majority and the expensive ones only ever see hard rows. In the modeled run, moving FullEnrich from last to first takes the bill from $303 to roughly $417, and buys 5% more mailable contacts for 38% more money. This is a config change and it is the highest-return optimization in the stack.

### 2. Qualify before you enrich

The cheapest lookup is the one you never make. Filter on firmographics and signal data first, which costs a fraction of a cent, then enrich what survives. A list cut from 10,000 to 4,000 before enrichment costs about 60% less and usually converts better, because the rows you dropped were never going to be contacted.

### 3. Pass only the misses down the chain

Each step takes the previous step's unresolved rows, never the whole list. Every provider in this chain charges nothing on a miss, which is what keeps the arithmetic clean: you pay for results, so depth costs you only on the rows that are genuinely hard.

### 4. Route verification per source, not at the end

Findymail and Prospeo verify at the moment they find, and FullEnrich bundles verification free. Only the first provider's output needs a separate validation pass. Bolting one verifier onto the end of the pipeline means paying twice for most rows, and in the modeled run verification is already 35% of the bill.

### 5. Cap the budget before any of it runs unattended

Set a hard credit ceiling per workspace and alert on it. Every overspend worth investigating came from a loop rather than from volume: a retry that did not back off, a scheduled job that ran twice, an agent that worked the same list four times because nothing told it the first pass had succeeded.

## Gotchas

- Running the expensive provider first, usually because it was the first one bought and the waterfall grew around it.
- Verifying rows that were already verified at find time. It is a pure loss and it happens whenever verification is a pipeline stage rather than a per-source decision.
- Enriching the whole list before qualifying it.
- Forgetting that orchestration platforms bill two meters: the same four-step waterfall run inside Clay charges nothing for the misses, but every hit costs an action for Clay's work plus the data credits that provider charges, $0.0036 and $0.0452 each on annual Launch, unless you bring your own provider keys.
- Copying these hit rates. No provider in this category publishes a match rate you can hold them to, so the percentages behind the modeled run are assumptions. Measure your own on 500 rows.

## How to verify it works

- Run 500 real rows through the chain and count survivors at each step. The shape of the curve matters more than the absolute rates.
- Confirm no row reaches the verifier twice: output from the providers that verify at find time should never enter the validation step.
- Diff the credit balance against resolved rows to confirm misses cost nothing on your plan.
- Divide your own closed-won revenue by contacts enriched, and check the marginal provider still clears it.
- Re-run the test when the segment changes. A European list inverts the US order, so a single compromise chain is usually worse than two.

## What this costs to run

| Measure | Figure |
|---|---|
| per mailable contact | $0.0364 |
| per 10,000 rows | $303 |
| Apollo entry | $49/seat/mo |
| Findymail entry | $99/mo |
| Prospeo entry | $49/mo |
| FullEnrich entry | $55/mo |
| ZeroBounce entry | $39 one-time |

Rates are the providers' published entry-plan prices. Where a workload is modeled, the hit rates behind it are assumptions, not promises: no provider in this category publishes a match rate you can hold them to. Measure your own on 500 rows before you plan against these numbers.

## Sources

- Apollo API: https://docs.apollo.io/
- Findymail: https://app.findymail.com/docs/
- Prospeo: https://prospeo.io/api-docs
- FullEnrich: https://docs.fullenrich.com/
- ZeroBounce: https://www.zerobounce.net/docs/
- This stack, with the arithmetic and the reasoning behind each step: https://frontal.so/gtm-apis/stack-waterfall-enrichment

---

*Published by Frontal, the go-to-market partner for B2B tech companies past product-market fit.
Where a vendor publishes no public rate, this file says so rather than estimating.*
