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:
| Measure | Value |
|---|---|
| Find-email runs | about 1.57M, across 800+ workspaces |
| Runs that returned an email | 64% |
| Credits charged on not-found results | 0, across about 1.0M empty provider lookups |
| Found rate, runs chaining 4 or more providers | 90% (97,640 runs) |
| Found rate, single-provider runs | 66% (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:
| Provider | Credits per found email |
|---|---|
| Icypeas | 0.1 |
| Findymail, Prospeo, Hunter | 0.5 |
| FullEnrich, Dropcontact, Enrow, Datagma | 1 |
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
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
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.
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:
| Rung | Action | Credits | Record fields |
|---|---|---|---|
| 1 | icypeas.findEmail | 0.1 | firstName, lastName, domainOrCompany |
| 2 | prospeo.findEmail | 0.5 | firstName, lastName, companyDomain |
| 3 | hunter.findEmail | 0.5 | first_name, last_name, domain |
| 4 | FullEnrich.findEmail | 1 | firstName, lastName, domainName |
# 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
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:
| Action | Confidence or status | |
|---|---|---|
icypeas.findEmail | emails[].email | emails[].certainty, plus mxProvider |
prospeo.findEmail | person.email.email | Prospeo’s email object, returned as Prospeo sends it |
hunter.findEmail | email | score, accept_all (catch-all domain), verification.status |
FullEnrich.findEmail | most_probable_email | most_probable_email_status, and emails[].status for every candidate |
findyMail.findEmail | email | none beyond the address |
waterfall.verifyEmail | email | email_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 #
No. Unless you connect your own key, Cargo calls the provider on Cargo’s key and bills the action’s credits. If you already pay a provider, you can connect your key instead.
No. A find-email action that returns no email returns no data, and no credits are charged. Across about 1.0M empty provider lookups in the 90 days to Oct 16 2026, 0 credits were charged. Verification is different: waterfall.verifyEmail charges for every address it checks.
Coverage differs by provider, region and company. In Cargo platform data for the 90 days to Oct 16 2026, runs that chained four or more providers found an email 90% of the time, against 66% for single-provider runs. The lists differed, so this is a correlation rather than a controlled test.
A new account gets 100 free credits with no card. At 0.5 credits per found email on Prospeo or Hunter, that is 200 found emails; at 0.1 on Icypeas, it is 1,000.