Lead source

Find people with verified emails

Filter on emailStatus and emailType, then count the people you can reach. Sizing is free.

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

Filter on emailStatus and emailType, then count the people you can reach. Sizing is free.

A verified B2B email list is a normal people search with one extra filter. You pick who you want by title, level and country, then restrict the list to addresses that passed our own verifier.

The filter

FilterTypeExample valuesNote
emailStatusarray of enum["verified"], ["verified", "catch_all_valid"]13 exact strings. Resolve with leadocean_list_enum_values (name email_status).
emailTypearray of enum["work"], ["work_any"], ["personal"]7 exact strings. work means the address is at the person's current employer.
hasEmailbooleantrueOnly people with a known email, whatever its status.

On a business address, verified means our own verifier sent to it and the server accepted. A supplier saying an address is good does not earn the word. Those addresses are published as untested.

Safe to send: verified and catch_all_valid. Do not send: invalid, spam_trap, abuse, disposable. Treat role (info@) and derived (built from a company pattern, never tested) with care. As a filter, catch_all also matches catch_all_valid.

Pair emailStatus with emailType set to work. That asks for a deliverable address at the company the person works at today. work_other is usually a former employer, so ask for it on purpose.

How many you can reach

Three live counts from leadocean_count_leads, run on 2026-10-01. They spent no records.

FiltersPeople
emailStatus verified, jobLevel C-Team, country US, employeeRange 11-50249,505
emailStatus verified, emailType work, jobFunction Sales & Business Development, jobLevel VP and Director, country GB16,784
jobLevel C-Team, country US, employeeRange 11-50, no emailStatus (tool default: verified, catch_all_valid or catch_all)764,727

Rows one and three differ only in status. Verified alone is a third of the default mailable set. Pick the strict list when a bounce costs you more than reach.

On the REST API, meta.total stops at 100,000. The MCP tool returned exact totals above that.

Run it from an AI agent

Connect the MCP server at https://api.leadocean.io/mcp (OAuth sign-in, no key pasted), then ask in plain words.

Find VPs and Directors in sales at UK companies, with a verified work email. Size it first, then show me 25.

The agent counts first with the free tool, then calls leadocean_search_leads with this:

json
{
  "emailStatus": ["verified"],
  "emailType": ["work"],
  "jobFunction": ["Sales & Business Development"],
  "jobLevel": ["VP", "Director"],
  "country": ["GB"],
  "limit": 25
}

The search costs 1 record per person returned. Each row carries has_email, email_status and email_type, so you can see why a person matched. The address itself comes with reveal_email on a lookup, or in an export.

Run it with the API

One flat JSON body to POST /v1/people/search. Filters are arrays of strings.

bash
curl -X POST "https://api.leadocean.io/v1/people/search" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "emailStatus": ["verified"],
    "emailType": ["work"],
    "jobFunction": ["Sales & Business Development"],
    "jobLevel": ["VP", "Director"],
    "country": ["GB"],
    "limit": 25
  }'

For the free sizing call, put count=true in the URL (not the body) and set limit to 1.

bash
curl -X POST "https://api.leadocean.io/v1/people/search?count=true" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "emailStatus": ["verified"],
    "emailType": ["work"],
    "jobFunction": ["Sales & Business Development"],
    "jobLevel": ["VP", "Director"],
    "country": ["GB"],
    "limit": 1
  }'

data comes back empty and meta.countOnly is true.

Export the list

POST /v1/exports takes the same filters inside a filters object. One export is up to 50,000 rows, and an account can export 500,000 rows a day.

bash
curl -X POST "https://api.leadocean.io/v1/exports" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "verified-sales-leaders-gb",
    "filters": {
      "emailStatus": ["verified"],
      "emailType": ["work"],
      "jobFunction": ["Sales & Business Development"],
      "jobLevel": ["VP", "Director"],
      "country": ["GB"]
    },
    "limit": 5000,
    "preset": "search"
  }'

Poll GET /v1/exports/{id}, then download. Prefer clicking? The Exports page in the app at app.leadocean.io has the filter builder, a column picker with email_N_address and email_N_status, the record price before you start, and a CSV download.

Combine it

  • Add title (for example ["head of growth"]) and jobLevel to name one buyer. See find people.
  • Add industry or employeeRange (for example ["51-200"]) to keep one kind of company.
  • Add hasPhone set to true to keep people you can also call.

Already have a name and no address? See find email from Twitter and find email from an email signature. For one person at a time, use find work email.

More ways to build a people list are on the find people hub.

FAQ

What does verified mean here?

On a business address, our own verifier sent to it and the mailbox accepted. A supplier's claim does not count. Personal addresses are the exception: we do not verify consumer domains, so verified there means a supplier asserted it.

Is a search count of verified exact?

Treat it as an upper bound. Enrichment applies the strict rule per address, but people search cannot. A person can show verified in a search row and untested when enriched. The enriched answer is the right one.

Should I include catch_all?

Add catch_all_valid for a safe list: we confirmed that mailbox exists. Plain catch_all means the domain accepts everything, so we cannot confirm the address. Use it for reach, not for a first send.

What does it cost?

Counting is free, as are list_filters and list_enum_values. A search costs 1 record per person returned, and bounced addresses are not refunded. The free plan has 1,000 records, one-off, no card. Pro is $499 a month. See pricing.

Size your verified email list for free, then pull it

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

Get your free API key →