How to build a B2B prospect list: Apollo, verification and enrichment
To build a B2B prospect list, pull contacts from a data source filtered by your ideal customer profile, verify every email address before you send anything, and load only the verified contacts into a separate sending tool. Add enrichment, like recent news or tech stack, only when your message needs it. Keep each campaign list small and tightly matched to one kind of buyer, and keep a do-not-contact list that every campaign checks.
Most list-building guides push one tool for everything. Our workflow separates the jobs on purpose: one tool for data, one for verification, one for sending. On our team call on August 27 I put it as plainly as I could about Apollo: "we use it for getting the lists originally... we don't use it for sending ever."
Separate the jobs: data, verification, sending
There are three jobs in list building, and they fail in different ways.
- Data finds the right people. It fails by being wrong, stale or too broad.
- Verification checks that each email address will receive mail. It fails by letting bad addresses through.
- Sending delivers your message and manages replies. It fails by damaging your domain reputation.
When one tool does all three, a failure in one becomes a failure in all. A data tool that also sends will happily send to addresses it has not verified, from infrastructure you do not control. Keeping the jobs separate means each tool does the thing it is best at.
Our flow is Apollo for the list, MillionVerifier to clean it, and Instantly to send.
Pulling the list by ICP
Start in your data tool with your ideal customer profile, field by field:
- Industry and sub-vertical.
- Company headcount, with a floor and a ceiling.
- Geography.
- Titles of the buyer, plus the titles to exclude.
- Any money signal you can filter on, such as funding stage.
Then look at the first 50 results by hand before you export anything. You will almost always find false positives: a company in the wrong business with the right label, a junior title that matched a keyword. Fix the filters and look again. Ten minutes here saves you hundreds of wasted emails later.
Verify before you send
Every list gets verified before it goes near a sending tool. No exceptions.
On the August 27 call we checked bounce rates across our campaigns and they were effectively zero. I credited that to the verification step. MillionVerifier pre-cleans every list, and only addresses that pass go into Instantly.
Why it matters: bounces tell inbox providers that you are sending to addresses you do not know. Too many and your sending domains lose reputation, and then even your good emails stop arriving. Verification is the cheapest protection you can buy.
A few notes from experience:
- Verify right before you send, not months earlier. Addresses go stale.
- Treat "unknown" or "catch-all" results with care. Send to them in small batches, if at all.
- Remove role addresses like info@ and sales@ unless that is genuinely who you want.
We take verification seriously enough that Amir, our teammate, is building our own verifier so we can test it against MillionVerifier on the same pre-cleaned list. Whatever tool you use, check it against known results now and then.
When enrichment is worth it
Enrichment adds information to each contact: recent funding, hiring, tech stack, a recent post, a podcast they appeared on. It can make a first line feel personal.
It is also where list building gets expensive and slow. Our rule: Clay is the route when you want to go deep on enrichment, not the default. Most of our campaigns do not need it because the message is an invitation, and an invitation only needs to know who the person is and what they do.
Enrich when:
- Your offer depends on a specific trigger, like a recent raise or a new hire.
- You are running account-based outreach to a short list of high-value accounts.
- Your first line is meant to reference something specific and recent.
Skip it when a clean list and a strong offer will do the job.
List size per campaign
Bigger lists are not better lists. Hunter's 2026 State of Cold Email report found that sequences with 21 to 50 recipients averaged a 6.2% reply rate, against 2.4% for sequences with more than 500 recipients.
That does not mean you should only ever email 50 people. It means each campaign should be one tight segment with a message written for it. Ten campaigns of 200 well-matched people will usually beat one campaign of 2,000 loosely matched ones.
For scale, our plans include about 1,000 checked prospects a month on Solo, about 3,000 on Growth and about 10,000 on Team. Checked means verified, not just exported.
Keep a do-not-contact list
Every campaign should check a single do-not-contact list before sending. It should include:
- Anyone who asked not to be contacted.
- Current customers, unless the campaign is meant for them.
- Active deals, so a sales conversation is not interrupted by a cold email.
- Competitors and partners you do not want to email cold.
- Past bounces.
This list protects your reputation more than any tool. Nothing damages trust faster than emailing a current customer as if they were a stranger.
Keep the list alive
A prospect list is not a one-time export. People change jobs, companies get acquired and addresses go dead. A list that was clean in spring will bounce in autumn.
So treat the list as something you maintain:
- Re-verify any contact you have not emailed in a few months before you email them again.
- When someone replies that they have moved on, update the record and ask who replaced them.
- Move people who engaged but did not buy into a separate list for a later, different message.
- Watch your contact count. On a shared account it can drop without anyone noticing, and you cannot fill a pipeline from a shrinking list.
Mistakes we have made
We have made most of the list mistakes ourselves. Sending to an export without checking the first 50 results, and finding out from the replies that half the titles were wrong. Running one huge campaign across several kinds of buyer with one message that fit none of them well. Letting a list sit for months and then sending to it as if nothing had changed.
Every one of those showed up the same way: fewer replies, more bounces and more unsubscribes. The fix was always the same too. Slow down at the list stage, because every hour there saves several later.
Should I buy an email list?
Generally no. Purchased lists are often old, unverified and shared with every other buyer, which means bad bounce rates and recipients who are tired of cold email. Build your own from a reputable data source, filtered to your buyer, and verify it yourself. Also check the rules where you and your recipients are, because some countries restrict cold email more than others.
The workflow, in order
- Write the ICP and the exclusions.
- Pull from your data source and check 50 results by hand.
- Fix filters, then export.
- Remove anyone on your do-not-contact list.
- Verify every address.
- Enrich only if the offer needs it.
- Split into small, tightly matched campaigns.
- Load into a sending tool on separate, warmed domains.
If you want verified guest lists built for you, see how we do it.
Frequently asked questions
Where can I get a B2B prospect list?
Pull it from a reputable B2B data source filtered by your ideal customer profile, then verify every email before sending. We use Apollo for data, MillionVerifier for verification and Instantly for sending.
Should I buy an email list for cold outreach?
Generally no. Bought lists are often stale and overused. Build your own from a data source, filtered to your buyer, and verify it.
How do I verify emails before sending?
Run the list through an email verification tool right before you send, remove invalid addresses, and treat catch-all or unknown results with care.
How big should a cold email list be?
Keep each campaign to one tight segment. Hunter's 2026 data shows sequences with 21 to 50 recipients averaged 6.2% replies versus 2.4% for those over 500.