Your GTM belongs in gitRegister
Blog

Find and Verify Work Emails at Scale (Waterfall, 0 Credits on Misses)

16 Oct
6min read

To find and verify work emails for a go-to-market list, run one Cargo batch call per email provider over your rows, cheapest provider first and only the misses passed on, then one verify call over the emails you found. A miss costs 0 credits, so you pay only for emails found and addresses checked.

No Hunter, Prospeo or FullEnrich account is needed: Cargo calls each provider on its own key and bills credits. The steps below are the find-work-email and verify-email-list skills, end to end, with the fields each provider returns.

What 1.57M find-email runs show #

Cargo platform data, 90 days to Oct 16 2026:

MeasureValue
Find-email runsabout 1.57M, across 800+ workspaces
Runs that returned an email64%
Credits charged on not-found results0, across about 1.0M empty provider lookups
Found rate, runs chaining 4 or more providers90% (97,640 runs)
Found rate, single-provider runs66% (1.14M runs)

One run can try several providers, which is why empty provider lookups outnumber runs that found nothing. The waterfall gap is correlational: the two groups ran on different lists, so it is not a controlled test of the same contacts. It is still the clearest reason to chain providers rather than pick one.

What a found email costs, per provider, from each action’s credit definition:

ProviderCredits per found email
Icypeas0.1
Findymail, Prospeo, Hunter0.5
FullEnrich, Dropcontact, Enrow, Datagma1

A new account starts with 100 free credits and no card, which covers, for example, 200 emails found on Prospeo or Hunter, or 1,000 on Icypeas.

Run it #

1. Install and sign in

shellscript
npm install -g @cargo-ai/cli
cargo-ai login --email you@company.com                 # sends a code
cargo-ai login --email you@company.com --code 123456   # creates the account on first use

There is no browser step, so a coding agent can run this itself. Signed-out catalog browsing and free dry runs are coming to the CLI; today, the sign-up above is the way in.

2. Find the actions

shellscript
cargo-ai orchestration action list find email
cargo-ai orchestration action list verify email

Each result carries an action object to pass to the next command and a credits array with its price. Nothing runs and nothing is charged. The examples below leave out the connectorUuid that object may carry, in which case Cargo uses the workspace’s default connector for that provider.

3. Pilot the first rung on 5 rows

Start with the cheapest provider. --limit 5 submits only the first five records, so you can read the output and the cost before the full run.

shellscript
cargo-ai orchestration action execute-batch \
  --action '{"kind":"connector","integrationSlug":"icypeas","actionSlug":"findEmail"}' \
  --records '[{"firstName":"Ada","lastName":"Lovelace","domainOrCompany":"example.com"}]' \
  --limit 5 --wait-until-finished

4. Run the full list, then escalate only the misses

Drop --limit to run every row. Download the results with cargo-ai orchestration batch download --uuid <batch uuid>, keep the rows that came back without an email, and send those to the next provider. Each provider names its inputs differently:

RungActionCreditsRecord fields
1icypeas.findEmail0.1firstName, lastName, domainOrCompany
2prospeo.findEmail0.5firstName, lastName, companyDomain
3hunter.findEmail0.5first_name, last_name, domain
4FullEnrich.findEmail1firstName, lastName, domainName
shellscript
# Rung 4, on the rows rungs 1 to 3 missed
cargo-ai orchestration action execute-batch \
  --action '{"kind":"connector","integrationSlug":"FullEnrich","actionSlug":"findEmail"}' \
  --records "$(cat misses.json)" \
  --wait-until-finished

Never send the full list to every rung: the found emails are already paid for, and a second provider charges again for the same person.

5. Verify what you found

shellscript
cargo-ai orchestration action execute-batch \
  --action '{"kind":"connector","integrationSlug":"waterfall","actionSlug":"verifyEmail"}' \
  --records '[{"email":"ada@example.com"}]' \
  --wait-until-finished

waterfall.verifyEmail (Waterfall.io) costs 0.1 credits per address and, unlike a finder, charges for every address it checks. Other verifiers in the catalog: ZeroBounce (0.1), NeverBounce (0.2), Findymail (0.25), Bouncer (0.3) and Hunter (1). Verify even when the finder sent its own status: a finder grading its own result is not an independent check.

What comes back #

Each finder returns the provider’s own record. The fields to read:

ActionEmailConfidence or status
icypeas.findEmailemails[].emailemails[].certainty, plus mxProvider
prospeo.findEmailperson.email.emailProspeo’s email object, returned as Prospeo sends it
hunter.findEmailemailscore, accept_all (catch-all domain), verification.status
FullEnrich.findEmailmost_probable_emailmost_probable_email_status, and emails[].status for every candidate
findyMail.findEmailemailnone beyond the address
waterfall.verifyEmailemailemail_status (valid when deliverable), smtp_provider, mx_records

A not-found row comes back with no data and is not charged. cargo-ai orchestration action get-output-schema --action '<action object>' prints any action’s output schema without running it.

Frequently asked questions #

AurelienOct 16, 2026

Give your agents a runtime

Bring the agents you have.Start free, deploy in one command.