Filter on title, jobLevel or seniority, then count the people you can reach. Sizing is free.
These three filters describe the person, not the company. title matches job title keywords. jobLevel and seniority match the band of their current role. Use them first, then narrow by place, department or skill.
The filter
| Filter | Type | Example values | Note |
|---|---|---|---|
title | array of strings | ["Head of Sales"], ["VP Sales", "CRO"] | Free text, keyword match. Wrap a value in brackets, ["[CEO]"], for an exact match. excludeTitle removes titles. |
jobLevel | array of enum | ["C-Team"], ["VP", "Director"] | One of 6 exact strings: C-Team, VP, Director, Manager, Staff, Other. |
seniority | array of enum | ["founder"], ["c_suite", "vp"] | One of 12 lowercase strings, finer than jobLevel: owner, founder, c_suite, partner, vp, head, director, manager, senior, entry, intern, unknown. |
Case is exact on the two enums. C-Team works. c-team and CEO do not. Resolve any value with leadocean_list_enum_values (name job_level or seniority). It is free.
Pick jobLevel for a broad band. Pick seniority when you need founders or heads, which jobLevel does not split out.
How many you can reach
Three 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 |
|---|---|
title Head of Sales, country US | 5,480 |
jobLevel VP, jobFunction Sales & Business Development, country CA | 5,066 |
seniority founder, employeeRange 11-50, country US | 288,253 |
The third total is above 100,000. The MCP tool reported it as exact. The REST API stops meta.total at 100,000.
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 Heads of Sales in the US. Size it first, then show me 25.
The agent counts first with the free tool, then calls leadocean_search_leads with this:
{
"title": ["Head of Sales"],
"country": ["US"],
"limit": 25
}The search costs 1 record per person returned. Rows come back without contact points: profile and resume data, plus has_email, has_phone and email_status flags. We show no sample rows here, because pulling one spends records and we only paste numbers from free calls.
Run it with the API
One flat JSON body to POST /v1/people/search. Filters are arrays of strings, limit is 1 to 100.
curl -X POST "https://api.leadocean.io/v1/people/search" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": ["Head of Sales"],
"country": ["US"],
"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 '{
"title": ["Head of Sales"],
"country": ["US"],
"emailStatus": ["verified", "catch_all_valid", "catch_all"],
"limit": 1
}'data comes back empty and meta.countOnly is true. Page through a real search with meta.nextCursor.
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": "heads-of-sales-us",
"filters": {
"title": ["Head of Sales"],
"country": ["US"]
},
"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, the record price before you start, and a CSV download.
Combine it
- Add
countryorcityto place people. See find people by location. - Add
jobFunction(for example["Sales & Business Development"]) to reach one department. See find people by department. - Add
keywordsto match skills in the person's own profile. See find people by skill.
Once you hold a person, enrich the person for contact details. More ways to build a list are on the lead sources hub.
FAQ
Should I use title or jobLevel?
Use title when you target a role, like Head of Sales. Use jobLevel or seniority when you target a band, like every VP. They combine, and each narrows the other.
Do the counts include everyone who matches?
No. They are mailable people, with a verified, catch_all_valid or catch_all email. Pass emailStatus or hasEmail to count a different slice.
Why does my enum value return an error?
Enum strings are exact. VP and C-Team for jobLevel, vp and c_suite for seniority. Look up the list with leadocean_list_enum_values before you guess.
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 your people 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 →