Filter on keywords, which reads a person's headline, summary, skills and job descriptions, then count the people you can reach. Sizing is free.
There is no closed list of skills. keywords is free text matched against the person's own profile, not their employer's. It finds the Kubernetes engineer, the Salesforce admin and the payroll specialist, whatever their title says.
The filter
| Filter | Type | Example values | Note |
|---|---|---|---|
keywords | array of strings | ["Kubernetes"], ["machine learning", "deep learning"] | Free text, not an enum. Each value is a phrase whose words must all appear. Several values OR together. |
jobFunction | array of enum | ["Engineering"], ["Information Technology"] | One of 22 exact strings. Resolve with leadocean_list_enum_values (name job_function). |
jobLevel | array of enum | ["VP", "Director"], ["Manager"] | Six exact values: C-Team, VP, Director, Manager, Staff, Other. |
profileKeywords is an alias that behaves the same. excludeKeywords drops people whose profile matches a phrase.
Matching is text, not a skill graph. A person who lists a skill and a person who describes the work in their summary both match. Use a specific phrase: Kubernetes is tighter than cloud.
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 |
|---|---|
keywords Kubernetes, jobFunction Engineering, jobLevel VP and Director, country US | 162 |
keywords machine learning and deep learning, jobLevel Manager, country GB | 1,155 |
keywords Salesforce administration, employeeRange 201-500, country US | 29 |
Skill phrases are narrow. Add a filter and the count drops fast, so size before you pull. The third count is small because a two-word phrase needs both words in the profile.
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 engineering VPs and directors in the US who mention Kubernetes in their profile. Size it first, then show me 25.
The agent counts first with the free tool, then calls leadocean_search_leads with this:
{
"keywords": ["Kubernetes"],
"jobFunction": ["Engineering"],
"jobLevel": ["VP", "Director"],
"country": ["US"],
"limit": 25
}The search costs 1 record per person returned. Each row says whether we hold an email (has_email), its email_status and whether we hold a phone (has_phone).
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 '{
"keywords": ["Kubernetes"],
"jobFunction": ["Engineering"],
"jobLevel": ["VP", "Director"],
"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 '{
"keywords": ["Kubernetes"],
"jobFunction": ["Engineering"],
"jobLevel": ["VP", "Director"],
"country": ["US"],
"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.
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": "kubernetes-eng-leaders-us",
"filters": {
"keywords": ["Kubernetes"],
"jobFunction": ["Engineering"],
"jobLevel": ["VP", "Director"],
"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
jobFunctionandjobLevelto keep the skill holders who own the decision. See find people by department. - Add
countryorcontinentto pick a market. See find people by location. - Add
employeeRangeandtechnologyCategoriesto match company size and stack, for example["201-500"]and["CRM"].
More ways to build a people list are on the find people hub.
FAQ
Is there a list of skills I can pick from?
No. keywords is free text. Type the phrase as people write it, such as Kubernetes or payroll, and size it with a count before you pull.
What is the difference between keywords and title?
title matches the job title only. keywords matches the whole profile: headline, summary, skills and job descriptions. Use title for a named role and keywords for a skill that sits across many titles.
Why is my count so small?
Each value is a phrase whose words must all appear. Two words give a narrower match than one. Pass several values to OR them, as in ["machine learning", "deep learning"]. The default count also covers mailable people only.
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 skills 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 →