Filter on domain, companyName or companyLinkedin, then count the people you can reach. Sizing is free.
Use domain when you know the company. It is the tightest of the three. Add jobLevel, jobFunction or title to reach one buyer.
The filter
| Filter | Type | Example values | Note |
|---|---|---|---|
domain | array of strings | ["stripe.com"] | Company website domain. Exact company, no look-alikes. |
companyName | array of strings | ["Shopify"] | Name keywords, not an exact match. Wider than domain. |
companyLinkedin | array of strings | ["https://www.linkedin.com/company/stripe"] | Company LinkedIn URL. Use it when you hold the page, not the domain. |
None of the three is a closed list, so there is no enum to resolve. The filters that narrow the people are closed lists: jobLevel takes C-Team, VP, Director, Manager, Staff or Other. jobFunction takes strings like Sales & Business Development. Check them with leadocean_list_enum_values.
How many you can reach
Four live counts from leadocean_count_leads, run on 2026-10-01. Each count is mailable people: verified, catch_all_valid or catch_all email, the tool's default. It spent no records.
| Filters | Mailable people |
|---|---|
domain stripe.com | 10,301 |
domain stripe.com, jobFunction Sales & Business Development, jobLevel VP and Director | 47 |
domain shopify.com, jobLevel C-Team | 211 |
companyName Shopify, jobLevel C-Team | 764 |
The last two differ because companyName matches name keywords. domain stays on one company. Use domain for an account list.
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.
Size the VPs and directors in sales at acme.com, then show me 25 of them.
The agent counts first with the free tool, then calls leadocean_search_leads with this:
{
"domain": ["acme.com"],
"jobFunction": ["Sales & Business Development"],
"jobLevel": ["VP", "Director"],
"limit": 25
}The search costs 1 record per person returned. The plain roster of one company is also available as GET /v1/companies/{domain}/people. See list the employees of a company.
Run it with the API
One flat JSON body to POST /v1/people/search. Filters are arrays of strings.
curl -X POST "https://api.leadocean.io/v1/people/search" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"domain": ["acme.com"],
"jobFunction": ["Sales & Business Development"],
"jobLevel": ["VP", "Director"],
"limit": 25
}'For the free sizing call, put count=true in the URL (not the body) and set limit to 1.
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 '{
"domain": ["acme.com"],
"emailStatus": ["verified", "catch_all_valid", "catch_all"],
"limit": 1
}'data comes back empty and meta.countOnly is true. meta.total stops at 100,000 on the REST API.
Each row in a real search is a thin person record. The values below are placeholders, not a captured response.
| Field | Placeholder |
|---|---|
contact_data.contact_current_experiences[] | job title "VP Sales", domain "acme.com" |
contact_data.has_email | true |
contact_data.email_status | "verified" |
contact_data.email_type | "work" |
meta.source_ids.person_id | "1234567890" |
Send a person_id to enrich that person when you want the address.
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.
curl -X POST "https://api.leadocean.io/v1/exports" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "acme-sales-leaders",
"filters": {
"domain": ["acme.com"],
"jobFunction": ["Sales & Business Development"],
"jobLevel": ["VP", "Director"]
},
"limit": 500,
"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, the record price before you start, and a CSV download.
Combine it
- Pass several domains in one
domainarray to cover an account list, then addjobLevelto keep decision makers. See the decision maker mapper skill. - Add
title(for example["Head of Sales"]) orseniorityto reach one role. Wrap a title in brackets for an exact match. - Add
emailTypeworkandemailStatusverifiedto keep only deliverable work addresses.
Other ways to build a list are on the lead sources hub. To search without naming a company, see find people, find companies and find new companies.
FAQ
Do I use domain or company name?
Use domain when you have the website. Use companyName when you only have a name and can accept extra matches. companyLinkedin fits lists exported from LinkedIn.
How many people can I get from one company?
The Stripe count above is 10,301 mailable people. A roster walk stops at 10,000 rows. Narrow with jobLevel or jobFunction and run smaller searches.
Does it return emails?
A search returns a thin record with has_email and email_status. Enrich a person by person_id to get the address. reveal_email adds no extra record.
What does it cost?
Counting is free, as are list_filters and list_enum_values. A search costs 1 record per person returned. The free plan has 1,000 records, one-off, no card. Pro is $499 a month. See pricing.
Size the people at your target accounts for free
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →