Pre-Black Friday: 20% off, for as long as you stayEARLYBFon Solo and AgencyEnds Nov 28Start free

How-to guide

How to Build Relationships Through Sales Prospecting (With a Real Query)

The basic objective of sales prospecting is to build relationships. A relationship needs a reason to talk, and the reason is a fact you pull before you write.

Get your free API key →Free to start. No credit card. 1,000 records to spend whenever you like.

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.
  • curl and jq.
  • 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.

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

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

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

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

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

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

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

ErrorCauseFix
401Missing or wrong x-api-keyCheck $LEADOCEAN_API_KEY is exported in this shell
429Above the plan's rate limit (5 a second on Free, 200 on Agency)Wait for the Retry-After header, then retry
402The 1,000 free records are spentMove to a paid plan on pricing
Empty resultsA filter value is not an exact enum stringCheck leadocean_list_enum_values, for example VP for jobLevel
404 on enrichNobody matched the person_idSkip the person. It costs nothing
Search stops earlyOne 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 →