LinkedIn works for B2B sales when you split the job in two. Use data to build the list. Use LinkedIn for the human part: the profile view, the comment, the connection note.
This guide shows the list half with real requests. Everything runs against https://api.leadocean.io.
TL;DR
- Size the audience for free, pull 25 profiles, enrich the ones you want, and keep LinkedIn for outreach. About 20 minutes.
- It spends about 30 of the 1,000 records on the free plan. Counts and empty enrichments cost nothing.
- LeadOcean has no sequencer or Chrome extension. You bring your own LinkedIn account and your own outreach tool.
Prerequisites
- A LeadOcean API key from the free plan, exported as
$LEADOCEAN_API_KEY. The free plan allows 5 requests a second. curlandjq.- A LinkedIn account you already use. Respect its terms: this recipe never automates it.
Step 1: Define who you want and size the list
Write the buyer as filters before you open LinkedIn. Pick a level, a function, a country and a company size. Then count.
curl -s -X POST "https://api.leadocean.io/v1/people/search?count=true" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "content-type: application/json" \
-d '{
"jobLevel": ["VP"],
"jobFunction": ["Sales & Business Development"],
"country": ["US"],
"employeeRange": ["51-200"],
"limit": 1
}' | jq '.meta'The count=true flag is a query parameter, never a body field. It is a free sizing call. meta.total is capped at 100,000.
Enum values are exact strings. Check them with GET /v1/enums or the leadocean_list_enum_values MCP tool before you guess.
Step 2: Pull a first page of profiles
Fetch 25 people. Search body is flat JSON, filters are arrays, and limit runs from 1 to 100.
curl -s -X POST 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"],
"limit": 25
}' > page1.json
jq '.meta' page1.jsonThis spends 25 records. For the next page, pass meta.nextCursor back as cursor in the body. Each row carries its id at meta.source_ids.person_id. One search pages to 10,000 rows, then meta.depthCapped turns true. Narrow the filters instead of walking further.
Step 3: Enrich the people worth a LinkedIn touch
Read the page and pick 5 to 10 people. Then enrich each by linkedin_url, email, phone or person_id. Send exactly one.
curl -s -X POST https://api.leadocean.io/v1/people/enrich \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "content-type: application/json" \
-d '{"linkedin_url": "https://www.linkedin.com/in/jane-doe-example", "reveal_email": true}'An enrichment that finds nothing returns a 404 and costs nothing. Since October 2026 the response also carries career history in resume_data: past roles, education, certifications and awards. It is the raw material for a specific opener.
Step 4: Write one specific line per person
A connection note that names a past role beats a note that names nothing. Pull the two facts you need with jq.
curl -s -X POST https://api.leadocean.io/v1/people/enrich \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "content-type: application/json" \
-d '{"linkedin_url": "https://www.linkedin.com/in/jane-doe-example"}' \
| jq '{now: .contact_data.contact_current_experiences, before: .resume_data}'Then write the note by hand. Keep it under 300 characters:
Hi Jane, saw you moved from Acme to Globex to run sales. We help
RevOps teams get verified emails by API. No pitch, just keen to
connect with people building the same motion.Step 5: Run a simple weekly LinkedIn rhythm
Keep the human work small and repeatable. This is the whole routine:
Mon Pull 25 new profiles (Step 2). Enrich 10 (Step 3).
Tue View profile, like or comment on one recent post. 10 people.
Wed Send connection notes (Step 4). 10 people.
Thu Accepted? Send the email from reveal_email, referencing the connection.
Fri Count replies. Narrow or widen the filters from Step 1.Email is the follow-up channel, not the opener. Check email_status before you send, because bounced emails are not refunded.
What you get
Step 1 returns a free count. Here is the same filter run through the leadocean_count_leads MCP tool on 21 October 2026:
{
"total": 18567,
"totalIsExact": true,
"totalAll": 60456,
"distinctCompanies": 12192
}That is 18,567 US sales VPs at companies of 51-200 people. Each has a verified or catch-all email (the tool default). They span 12,192 employers. Without the email condition the same filters match 60,456.
The enrich response, shape from the API reference with placeholder values:
{
"profile_data": { "...": "Jane Doe, headline, location" },
"contact_data": {
"has_email": true,
"email_status": "verified",
"contact_current_experiences": [{ "...": "VP Sales at Acme" }]
},
"resume_data": {
"experiences": [{ "...": "Director of Sales at Globex, with dates" }],
"educations": [],
"certifications": []
}
}Troubleshooting
| Error | Cause | Fix |
|---|---|---|
| 401 | Missing or wrong x-api-key header | Check $LEADOCEAN_API_KEY is exported and sent as x-api-key |
| 429 | Above the plan's rate limit (5 a second on Free, 200 on Agency) | Honour the Retry-After header and slow the loop |
| 402 | The 1,000 free records are spent | Move to a paid plan, see pricing |
Empty data | A filter value is not an exact enum string | Check GET /v1/enums and copy the string as written |
| 404 on enrich | Nobody matched that input | Free. Try email or person_id instead |
| Export stops | Over 50,000 rows a request or 500,000 a day | Split the export by country or level |
FAQ
Is this allowed under LinkedIn's terms?
This recipe does not scrape or automate LinkedIn. The data comes from the LeadOcean API. You still do the viewing, commenting and messaging yourself.
Do I need Sales Navigator?
No. You can build lists with filters, then use LinkedIn for outreach. For the Sales Navigator route, read how to use LinkedIn Sales Navigator for lead generation.
What about LinkedIn scrapers?
They automate the part LinkedIn restricts. See best LinkedIn scrapers before you pick one.
How do I run this for a team?
Use the Exports page in the app at app.leadocean.io for bulk CSV, which is not on the free plan. SDRs can follow the LinkedIn guide for SDRs.
What does it cost at scale?
Build your LinkedIn prospect list from an API
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →