Lead source

Find people by skill

Filter on keywords, which reads a person's headline, summary, skills and job descriptions, 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 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

FilterTypeExample valuesNote
keywordsarray 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.
jobFunctionarray of enum["Engineering"], ["Information Technology"]One of 22 exact strings. Resolve with leadocean_list_enum_values (name job_function).
jobLevelarray 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.

FiltersMailable people
keywords Kubernetes, jobFunction Engineering, jobLevel VP and Director, country US162
keywords machine learning and deep learning, jobLevel Manager, country GB1,155
keywords Salesforce administration, employeeRange 201-500, country US29

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:

json
{
  "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.

bash
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.

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 '{
    "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.

bash
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 jobFunction and jobLevel to keep the skill holders who own the decision. See find people by department.
  • Add country or continent to pick a market. See find people by location.
  • Add employeeRange and technologyCategories to 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 →