The basic objective of sales prospecting is to build relationships, not to book a meeting at any cost. A meeting follows when the other person sees a reason to talk. This guide turns that into four API calls: size a list, pull people, enrich them for shared context, and write one specific opener each.
TL;DR
- Pick a small group you can know well, pull their titles and career history, and open each message with one fact about them.
- It takes about 20 minutes and spends about 30 LeadOcean records, inside the free 1,000.
- The count in Step 1 is free. A person we hold nothing for is a 404 and costs nothing.
Prerequisites
- A free LeadOcean key in
$LEADOCEAN_API_KEY(start free, no card: pricing). Free runs at 5 requests a second. curlandjq.- Somewhere to send mail from. LeadOcean returns data only. It has no sequencer, inbox or CRM.
Step 1: Choose a group small enough to know
Relationships do not scale to 129,494 people, so size the list first and then cut it down. Counting is free and spends no records.
curl -s "https://api.leadocean.io/v1/people/search?count=true&limit=1" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "content-type: application/json" \
-d '{
"jobLevel": ["VP"],
"jobFunction": ["Sales & Business Development"],
"country": ["US"]
}' | jq '.meta'On 2026-10-21 the same filters through the free MCP tool leadocean_count_leads returned 129,494 people with a verified, catch_all_valid or catch_all email, across about 58,121 companies. Without the email condition it matched 350,517. Quote whichever one you actually filtered on.
That is a market, not a relationship list. Add employeeRange or industry until the count is a number you can read through by hand.
Step 2: Pull one page of people
One search page of 25 is 25 records. Ask only for addresses worth sending to.
curl -s https://api.leadocean.io/v1/people/search \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "content-type: application/json" \
-d '{
"jobLevel": ["VP"],
"jobFunction": ["Sales & Business Development"],
"country": ["US"],
"employeeRange": ["51-200"],
"emailStatus": ["verified"],
"limit": 25
}' > people.jsonThe body is flat JSON, filters are arrays, and limit runs 1 to 100. Page on with cursor. Enum values are exact strings, so check them with leadocean_list_enum_values if a filter returns nothing.
Step 3: Enrich five people for shared context
Search gives you a title and a company. Enrich adds past roles, schools, certifications and awards, which is what you need to find something in common. Enrich takes exactly one of linkedin_url, email, phone or person_id. Each search row carries its person_id at meta.source_ids.person_id.
jq -r '.data[0:5][].meta.source_ids.person_id' people.json
curl -s -X POST https://api.leadocean.io/v1/people/enrich \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "content-type: application/json" \
-d '{"person_id": "PERSON_ID_FROM_PEOPLE_JSON"}' > person.json
jq '.data.resume_data.experiences[0:3], .data.resume_data.educations[0:1]' person.jsonPast employers carry no company_id yet, so match them by company name. If resume_data is empty for someone, skip the personal opener and write about their role instead.
Step 4: Write one opener per person
Use one fact, then one question. Keep it under 60 words and do not pitch.
Subject: {{past_company}} to {{company}}
Jane, I noticed you moved from {{past_title}} at {{past_company}} to run
sales at {{company}}. When the team grew past {{headcount}} people, what
broke first in how you hand off leads?Send it from your own mailbox and read the replies yourself. Follow up only on people who answered, and log what they said. The relationship is the thread of those notes, not the list.
What you get
The shape below is from the API reference, with placeholder values. Fields are present only when held.
{
"success": true,
"data": {
"profile_data": { "profile_full_name": "Jane Doe" },
"contact_data": {
"has_email": true,
"email_status": "verified",
"contact_current_experiences": [
{ "job_title": "VP Sales", "company_name": "Acme", "company_domain": "acme.com" }
]
},
"resume_data": {
"experiences": [
{ "job_title": "Director of Sales", "company_name": "Example Co" }
],
"educations": [ { "...": "school, diploma, specialization, dates" } ]
}
}
}Response shape from the API reference (api.leadocean.io/openapi.json and leadocean.io/docs/enrich, October 2026), with placeholder values. Experience objects also carry start and end dates and a current flag. Run Step 3 on one person and read your own person.json for the exact date and school keys.
Troubleshooting
| Error | Cause | Fix |
|---|---|---|
| 401 | Missing or wrong x-api-key | Check $LEADOCEAN_API_KEY is exported in this shell |
| 429 | Above the plan's rate limit (5 a second on Free, 200 on Agency) | Wait for the Retry-After header, then retry |
| 402 | The 1,000 free records are spent | Move to a paid plan on pricing |
| Empty results | A filter value is not an exact enum string | Check leadocean_list_enum_values, for example VP for jobLevel |
| 404 on enrich | Nobody matched the person_id | Skip the person. It costs nothing |
| Search stops early | One search pages to 10,000 rows (meta.depthCapped) | Narrow the filters instead of walking the index |
FAQ
What is the basic objective of sales prospecting?
It is to build relationships with people who may need what you sell. The meeting and the deal come from that. Prospecting that only chases meetings produces replies that say "not interested".
How many prospects can one rep build a relationship with?
LeadOcean has no number for this and neither should you invent one. Start with the 25 you can read about in an afternoon, then widen only if replies hold up.
Where does the personal fact come from?
From person enrich: past roles, education, certifications and awards, each when held. Since October 2026 that is returned in resume_data.
Does LeadOcean send the emails?
No. It returns data through the API, the MCP server and the Exports page in the app. Send from your own tool.
Is the email list safe to send to?
Filter on emailStatus and read the status before sending. There is no refund for bounced emails.
For more on method, see 10 sales prospecting techniques that convert, best AI tools for sales prospecting and good sales intelligence and B2B prospecting platforms. All posts live in the blog.
Find the people worth a real conversation
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →