Pre-Black Friday: 20% off, for as long as you stayEARLYBFon Solo and AgencyEnds Nov 28Start free

How-to guide

How to Pick an Outbound Email Tool (With Your Own List Numbers)

Four numbers decide which platform you need. Pull them from the API in 20 minutes before you open a single pricing page.

Get your free API key →Free to start. No credit card. 1,000 records to spend whenever you like.

TL;DR

  • An outbound tool is three parts: data, sending and replies. Pick each on your list numbers, not on feature grids.
  • Four numbers decide it: list size, verified share, mailboxes you can run, and how many replies a human must read. You can get the first two from LeadOcean in a few minutes.
  • This takes about 20 minutes and spends about 50 LeadOcean records on the Free plan, or 100 for a test export on a paid plan. Counts are free.

Prerequisites

  • A LeadOcean account on the Free plan: start free. No card.
  • An API key in your shell: export LEADOCEAN_API_KEY=...
  • curl and jq.
  • A rough idea of who you sell to (a title, a country, a company size).

Step 1: Know what the three parts do

Most "outbound email tools" bundle three jobs. Buy them as one product or as separate parts, but know which job you are paying for.

text
part      job                                        breaks if weak
data      who to email, and a verified address       bounces, a burned domain
sending   mailboxes, warm-up, sequences, throttling  spam folder, low volume
replies   inbox, routing, handoff to CRM             missed answers, slow follow-up

LeadOcean is the data part only. It has no sequencer, dialer or CRM. It returns people, companies and email status through an API, an MCP server and a CSV export, and your sending tool does the rest.

Rule of thumb: if you send from one to three mailboxes, a lightweight sequencer is enough. If you run many mailboxes, you need mailbox rotation and a shared inbox, and that is where tools differ most.

Step 2: Size your list for free

List size is the first filter. A list of 2,000 people never needs a platform built for 2 million.

Count by the filters you will actually use. The MCP tool leadocean_count_leads and the search endpoint with count=true are both free.

bash
curl -s -X POST "https://api.leadocean.io/v1/people/search?count=true" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "jobLevel": ["VP"],
    "jobFunction": ["Sales & Business Development"],
    "country": ["US"],
    "employeeRange": ["51-200"],
    "limit": 1
  }' | jq '.meta'

Note that count=true is a query parameter, not a body field. The body rejects unknown fields. meta.total is capped at 100,000.

In Claude or any MCP client, the same question is one prompt: "Count VP-level sales people in the US at companies with 51-200 employees." The tool defaults to mailable addresses. That means verified, catch_all_valid and catch_all.

Step 3: Split verified from catch-all

The second number is how much of the list you can send to safely. Run the same count twice, once with the default and once with emailStatus set to verified only.

json
{
  "jobLevel": ["VP"],
  "jobFunction": ["Sales & Business Development"],
  "country": ["US"],
  "employeeRange": ["51-200"],
  "emailStatus": ["verified"],
  "limit": 1
}

Send that body to the same URL as Step 2. The gap between the two totals is your catch-all share (catch_all_valid and catch_all). Sending tools differ in how they treat it, and some skip it by default. Read email status types and catch-all emails explained before you decide, and see email verification explained for the checks behind each status.

Step 4: Turn the list into a send plan

Now do the arithmetic that picks the platform. Use your own numbers.

text
list              = verified total from Step 3
mailboxes         = how many you can run and keep warm
per_mailbox_day   = the daily cap you are willing to run
days_to_send      = list / (mailboxes * per_mailbox_day)

Take the verified count from the output below. 4,552 people on 3 mailboxes at 30 sends a day each is 4,552 / 90, or about 51 days for the first touch. Add follow-up steps and the real time grows.

That tells you what to buy:

  • Days under 10: one or two mailboxes and a simple sequencer. Do not pay for rotation.
  • Days over 30 and you cannot add mailboxes: shrink the list with tighter filters (title, seniority, company size) instead of buying more tooling.
  • Many mailboxes or many clients: you need mailbox rotation, per-client workspaces and a shared inbox. Check those three features first.
  • Replies need routing to a CRM: check the native CRM sync, or a webhook you can call yourself.

The 30 a day figure is a placeholder. Set your own cap from your provider's limits and your domain's age.

Step 5: Pull a small test export

Never judge a sending tool on a list you have not tested. Export 100 rows and load them.

bash
curl -s -X POST https://api.leadocean.io/v1/exports \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "sender-test",
    "filters": {
      "jobLevel": ["VP"],
      "jobFunction": ["Sales & Business Development"],
      "country": ["US"],
      "employeeRange": ["51-200"],
      "emailStatus": ["verified"]
    },
    "limit": 100,
    "preset": "full"
  }'

The export runs async. Poll GET /v1/exports/{id} until status is done, then call GET /v1/exports/{id}/download. Exports take up to 50,000 rows a request and 500,000 a day. Bulk CSV export is not on the Free plan. On Free, pull 25 people with the search endpoint, then enrich each by person_id with reveal_email true to get the address. Search rows carry no email addresses.

You can also use the Exports page in the app: filter builder, column picker and the record price shown before you start.

Check the CSV headers your sending tool needs. LeadOcean returns email_1_address, email_1_status and so on. Map them on import.

Step 6: Match a platform type and score it

Your Step 4 numbers point to one of three kinds of product. Then run the same 100 rows through each candidate and score only what you can measure.

text
platform type                      pick it when
sequencer with mailbox rotation    Step 4 says you need more than a few mailboxes
sales engagement suite             reps work leads by hand and a manager needs activity views
workflow / automation tool         volume is low and the list changes daily

test              how to check                                   pass
import            map email_1_address, title, company            no manual fixes
status handling   does it skip catch_all or flag it?             matches your Step 3 choice
mailbox limits    plan limit on connected mailboxes              covers your Step 4 count
reply routing     inbox, webhook or CRM sync                     reaches your CRM
real cost         price at your monthly send volume              fits your budget

In every case the data layer is separate from the sender. If a platform bundles contacts, ask how many addresses it lets you export and what status each one carries. Take prices and limits from each vendor's own pricing page on the day you buy, and write down the date.

What you get

The counts below come from leadocean_count_leads, run on 2026-10-21 with the filters shown. They are free calls.

text
Filters: jobLevel VP, jobFunction Sales & Business Development,
         country US, employeeRange 51-200

Default (verified + catch_all_valid + catch_all):  18,567 people
  distinctCompanies: 12,192
No email condition (totalAll):                       60,456 people
emailStatus verified only:                            4,552 people
  distinctCompanies: 3,463

Read it this way: 60,456 people match the role, 18,567 have an address worth sending to, and 4,552 are fully verified. The platform you pick has to handle the 18,567 or you must accept the 4,552.

The export call answers with this shape (response shape from the API reference, placeholder values):

json
{
  "success": true,
  "data": {
    "id": "exp_xxxxxxxx",
    "name": "sender-test",
    "status": "queued",
    "requested": 100,
    "estimatedTotal": 4552,
    "rows": 0,
    "billed": 0,
    "pollAfter": 5
  }
}

Troubleshooting

ErrorCauseFix
401Missing or wrong x-api-keyCheck $LEADOCEAN_API_KEY is exported in this shell
429Above the plan's rate limit (5 requests a second on Free, 200 on Agency)Honour the Retry-After header, or batch calls
402Out of records (Free is 1,000 for life)Narrow the filters or move to a paid plan; see pricing
Count of 0 or an error on a filterEnum value is not an exact string, such as vp instead of VPLook it up with leadocean_list_enum_values before guessing
400 on POST /v1/exportsAsked for more than 50,000 rows in one requestSplit into several exports; the day ceiling is 500,000 rows
403 on exportContact columns requested without the enrich scopeUse a key with the enrich scope, or the search preset

FAQ

Does LeadOcean send email?

No. LeadOcean is the data source. You export or call the API, then load the people into the sending tool you picked.

Should I include catch-all addresses?

Only if your sending tool and domain can take some extra bounce risk. Start with verified for a new domain. The default LeadOcean count includes catch-all, so compare both numbers.

How many records does a test cost?

Counts cost nothing. A search page of 25 is 25 records, and a 100-row export is 100. Enrichments that find nobody cost nothing.

Can I do this from Claude instead of curl?

Yes. The hosted MCP server at https://api.leadocean.io/mcp signs in with OAuth and has 13 tools. leadocean_count_leads, leadocean_list_filters and leadocean_list_enum_values are free.

What if I only send a few hundred emails a week?

Then list size is not your problem. Pick the simplest sequencer with a reply inbox you like, and spend your effort on the filters.

Size your outbound list before you pick a platform

Free to start. No credit card. 1,000 records to spend whenever you like.

Get your free API key →