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

How-to guide

How to Use LinkedIn Sales Navigator for Lead Generation (and Where an API Takes Over)

Build the search in Sales Navigator, save the signals, then rebuild it as an API query when you need the full list and the emails.

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

Sales Navigator is good at finding people and watching them. It is weak at handing you a list. This guide shows the search habits that work, then the point where you switch to an API.

LinkedIn's help center says a search shows up to 2,500 lead results across 100 pages (October 2026). Fullenrich's guide says the tool has over 50 search filters (October 2026). Both facts shape the workflow.

TL;DR

  • Build a narrow lead search in Sales Navigator, save it, and use alerts for timing. About 30 minutes including an API key.
  • When you need more than 2,500 people or any email, rebuild the search as filters and size it free with count=true. Sizing spends 0 records.
  • Pulling a 25-row sample spends 25 of your 1,000 free records. Enriching a profile URL spends 1 record when it finds someone.

Prerequisites

  • A Sales Navigator seat. LeadOcean does not replace it, and has no rep workspace or Chrome extension.
  • A LeadOcean key from app.leadocean.io. Free has no card.
  • The key in your shell as $LEADOCEAN_API_KEY, plus curl and jq.
bash
export LEADOCEAN_API_KEY="paste-your-key-here"

Step 1: Write the buyer as five filters

A good search names five things: function, seniority, geography, company size and a title keyword.

Write them down before you open the tool. Here is one example buyer.

text
Function:   Sales
Seniority:  VP
Geography:  United States
Company:    51-200 employees
Title:      "Head of Sales" OR "VP Sales"

Sales Navigator search takes Boolean operators, per Fullenrich's guide (October 2026). Use quotes for exact phrases and OR between variants. Put NOT before titles you want out, such as NOT intern.

Step 2: Run and save the search in Sales Navigator

Apply the filters, then save the lead search, not just the leads. Fullenrich's guide says a saved search alerts you when a new person matches (October 2026).

The same guide says Sales Navigator alerts you when a saved lead changes jobs. A new VP is a better reason to write than a cold list. Alerts are the part of Sales Navigator an API does not replace.

Check the total. If it sits near the cap, your search is too broad. Tighten it before you do anything else.

Step 3: Size the same search for free with the API

Rebuild the five filters as a LeadOcean query. Send count=true as a query parameter with limit 1. It spends 0 records. Enum values are exact strings, so VP not "Vice President".

bash
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 | {total, countOnly}'

meta.total is capped at 100,000. A people count also carries meta.distinctCompanies, the number of employers the matches span. That tells you how many accounts you are really targeting.

Step 4: Pull a sample and read the rows

Fetch 25 rows to check the match before you commit more records. This spends 25 records. Page further with cursor, and keep limit between 1 and 100.

bash
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"],
    "title": ["Head of Sales", "VP Sales"],
    "limit": 25
  }' | jq '.meta'

One search pages to 10,000 rows. On the last page meta.depthCapped is true and there is no nextCursor. If you hit that, narrow the filters. That is four times the Sales Navigator view.

Step 5: Get the email for profiles you already found

Sales Navigator shows a profile, not a guaranteed email. If you hold LinkedIn URLs, enrich each one. Enrich takes exactly one of linkedin_url, email, phone or person_id, and reveal_email returns the address.

bash
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",
    "reveal_email": true
  }'

A person we hold nothing for is a 404 and costs nothing. Read the email status before you send. LeadOcean gives no refund for bounced emails.

For a phone number, call GET /v2/people/phone. For the full flow, see find an email from LinkedIn.

Step 6: Ask an agent to do it from chat

The hosted MCP server at https://api.leadocean.io/mcp exposes 13 tools. leadocean_count_leads is free, so an agent can size a segment before it spends anything. Sign-in is OAuth, with no key pasted.

text
Count US VPs of Sales Development at companies with 51-200 employees.
Tell me the mailable total and how many distinct companies that is.
Do not pull any rows.

Use this to test five segments in a minute, then take only the best one to Step 4.

What you get

Step 3 ran through the free leadocean_count_leads tool on 2026-10-21. The filters were jobLevel VP, jobFunction Sales & Business Development, country US and employeeRange 51-200.

json
{"total":18567,"totalIsExact":true,"totalAll":60456,"distinctCompanies":12192,"credits":0}

That is a mailable count: the tool defaults to verified, catch_all_valid and catch_all addresses. totalAll is the same filters with no email condition. The call cost 0 records.

A search row has this shape. Response shape from the API reference (placeholder values):

json
{
  "success": true,
  "data": [
    {
      "profile_data": {
        "profile_full_name": "Jane Doe",
        "...": "headline, location"
      },
      "contact_data": {
        "has_email": true,
        "email_status": "verified",
        "email_type": "work"
      },
      "meta": { "source_ids": { "person_id": "<person_id>" } }
    }
  ],
  "meta": { "count": 25, "nextCursor": "<opaque cursor>" }
}

Troubleshooting

ErrorCauseFix
401Missing, wrong or revoked keyRe-copy the key from app.leadocean.io. The header is x-api-key.
429Above the plan's rate limit (5 a second on Free, 200 on Agency)Honor Retry-After and slow the loop.
402Fewer records left than the request needsCheck GET /v1/account, or move to Solo or Agency.
Empty resultsAn enum value outside the list, such as Vice PresidentUse VP. Check GET /v1/enums/job_level.
404 on enrichNobody matched that profile URLIt costs nothing. Try email or person_id instead.
Export refusedOver 50,000 rows a request or 500,000 a day, or the plan has no bulk exportSplit the export, or use Solo or Agency. Bulk CSV is not on Free.

FAQ

Is Sales Navigator worth it for lead generation?

Yes for finding and tracking people, no as a list source. It caps a search view at 2,500 leads and does not give you a file. Pair it with a data source for the list.

Can Sales Navigator find email addresses?

This guide does not rely on it for addresses. Use enrich with a LinkedIn URL to get an address, and check its status first.

Does the API return the same people as my saved search?

No. It matches the same kind of person by filter. LeadOcean holds 693M people, and a query returns what it holds, not your saved list.

How many records does this cost?

Sizing costs 0. A 25-row sample costs 25. The Free plan has 1,000 records for life, so you can test four or five segments.

For the wider playbook, read how to use LinkedIn for B2B sales and the best LinkedIn lead generation tools. The usability guide covers evaluating data tools. More guides are on the blog.

Size your Sales Navigator search free

Free to start. No credit card. 1,000 records to spend whenever you like.

Get your free API key →