ZoomInfo exports tend to be big and account-shaped: dozens of contacts at each target company, pulled for a whole territory at once. That shape changes how you should check them. One company's mail server decides the fate of every contact at that domain, so you read the results by account as well as by row.
The steps below take a ZoomInfo export from download to sequencer. For the same job on a smaller Apollo list, see how to verify Apollo leads.
The short version
- A ZoomInfo export as CSV, with company domain and account name columns
- A ZapBounce account, and an API key if the file is too large to handle by hand
The steps
Export only this month's accounts
Pull the contacts for accounts your reps will actually work in the next few weeks. A check describes the mailbox on the day it runs, so verifying a whole year's territory up front wastes credits on addresses that will change before you reach them.
Merge exports from every rep
Combine the CSVs from each territory into one file. ZapBounce charges a duplicate address once per batch, so the same buyer pulled by two reps costs one credit, not two.
Upload the file or send it by API
Upload on the bulk page, or post the file to
POST /v1/filesfrom a script. Abatch.completedwebhook tells your script when the results are ready.Sort the results by company domain
Open the result file and sort by the domain column. Every contact at a catch-all domain comes back
catch_all, so you'll see those accounts as solid blocks.Load valid contacts into outreach
Move
validrows into your sequencer. Keep theroleflag in view: aninfo@orsales@address at a target account is a shared inbox, not a buyer.Test catch-all accounts one domain at a time
For each catch-all company, send to one or two contacts first from a mailbox you can spare. If those land without bouncing, release the rest of that account. If they bounce, hold the account and look for another route in.
Drop invalid contacts and re-check unknowns
Remove
invalidrows and flag them in your CRM so the next export skips them. Rununknownrows again the next day. An unknown is never billed, so the second pass costs only the answers you get.
Why account-based lists need per-domain reading
A catch-all domain accepts every address at the SMTP stage, so no verifier can confirm a single mailbox there. In one 10,000-address B2B benchmark, about 28% of addresses sat on catch-all domains. On an account-based list, that share arrives in lumps: a whole target account is catch-all or it isn't.
Reading the results by domain turns that into a plan. You test each catch-all account with a small send instead of betting the whole block, and your valid accounts go out on schedule.
Handling licensed data carefully
You confirm a lawful basis to process every address you upload, including contacts licensed from a data provider. ZapBounce checks the addresses you already hold. Finding new ones through permutation, dictionary or appending runs falls outside the acceptable use policy.
Uploads are kept 30 days by default. For a licensed file you'd rather not store, set that key's retention to 0 and the batch is deleted when you download it. ZapBounce never sells uploaded addresses or adds them to a shared database, and the DPA page lists every sub-processor.
Budgeting a large ZoomInfo export
ZapBounce prices by volume on one public ladder: $89 for 50,000 checks, $139 for 100,000 and $549 for 500,000. Credits never expire, so buying the larger tier for a year of exports carries no risk of losing what you don't use. The pricing page lists every tier, and 100 free checks a month let you test a sample first.
Questions people ask
How do I verify ZoomInfo emails before a campaign?
Export the ZoomInfo contacts for this month's accounts, merge and dedupe the files, and run them through a live SMTP check. Send valid contacts, test catch-all accounts with one or two sends each, and drop invalid ones.
Why do some ZoomInfo contacts bounce?
Contacts bounce when the person left the company after the data was collected, or when a catch-all domain accepted the address at the SMTP stage and rejected the real email later. A check in the week you send catches the first case and labels the second.
What should I do with catch-all ZoomInfo contacts?
Group them by company domain and send to one or two contacts per account first. If those do not bounce, release the rest of that account. About 28% of a 10,000-address B2B benchmark sat on catch-all domains, so this group is often large.
How much does it cost to verify 100,000 ZoomInfo contacts?
At ZapBounce, 100,000 checks cost $139. Duplicates and unknown results are never billed, and credits never expire, so unused credits carry into next quarter's exports.