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

How-to guide

How to Respond to the LinkedIn Premium Price Increase (Without Losing Your Lead Data)

Work out which part of your Premium or Sales Navigator seat you actually use. If it is lead search and contact data, an API does that part for less.

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

TL;DR

  • If your bill went up, do not just pay it. split the seat into two jobs: messaging and profile features, and lead search with contact data. Only the second has a cheaper substitute.
  • The audit and a first sizing query take about 30 minutes. Sizing is free. A 25-row test pull spends 25 of the 1,000 free LeadOcean records.
  • Keep LinkedIn for what only LinkedIn does, such as InMail and viewing your own network. Move list building to POST /v1/people/search and read emails from POST /v1/people/enrich.

This page prints no LinkedIn price. FullEnrich's guide reports that LinkedIn announced a Premium price increase in 2023 (FullEnrich, checked October 2026). LinkedIn's own price page sits behind sign-in, so we could not read a current figure. Read yours from your billing page.

Why the price is only half the question

A price rise forces a renewal decision. Most teams answer it with a vote on the number. The better answer is a usage audit.

A seat bundles several products. InMail is messaging. "Who viewed your profile" is a vanity feature. Advanced search is a data product. You pay one price for all three, so a rise hits the one you use least just as hard as the one you use daily.

A technical buyer can price the data part on its own. It is a query, a result set and a contact field. That is what an API sells, and it is measurable in records, not seats.

Prerequisites

  • Your LinkedIn billing page open, so you have your real monthly or yearly figure and your seat count.
  • A LeadOcean key from app.leadocean.io. Free has no card and 1,000 records, one-off.
  • The key in your shell as $LEADOCEAN_API_KEY.
  • curl and jq.
bash
export LEADOCEAN_API_KEY="paste-your-key-here"

Step 1: Write down what the seat does for you

List the features you used in the last 30 days. Be honest. A seat you opened twice does not need renewing at any price.

LinkedIn's Sales Navigator plan page (October 2026) lists 50+ advanced search filters, AI account and lead insights, buyer intent, CRM integrations and team seat management. Sort your own usage into two buckets:

text
Bucket A (LinkedIn only):  InMail, profile views, your connections, job posts
Bucket B (data):           lead search, saved lists, export of names and emails

If bucket A is empty, you are paying LinkedIn for data. That is the part you can replace.

One more filter on the audit: count the seats. A team of five on Sales Navigator pays five times. A team that needs one person to build lists and four to read them can share a single export. That alone often changes the answer.

Step 2: Turn one saved search into API filters

Take your most-used saved search and write it as a flat JSON body. Filters are arrays of strings. Enum values are exact, so Director, not Dir..

bash
cat > search.json <<'JSON'
{
  "jobLevel": ["Director"],
  "jobFunction": ["Sales & Business Development"],
  "country": ["US"],
  "employeeRange": ["51-200"],
  "limit": 1
}
JSON

If you do not know a value, ask the free filter endpoint instead of guessing.

bash
curl -s "https://api.leadocean.io/v1/enums" \
  -H "x-api-key: $LEADOCEAN_API_KEY" | jq 'keys'

Step 3: Size the list for free

Send count=true as a query parameter with limit 1. It costs 0 records. meta.total is capped at 100,000.

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 @search.json | jq '.meta | {total, countOnly}'

Agents can do the same with the leadocean_count_leads MCP tool, which is also free. On 2026-10-21 it counted this exact audience (Director, Sales & Business Development, US, 51-200 employees). The result is in the output block below.

Compare that number with what your saved search shows in Sales Navigator. A gap of a few percent is normal, because the two indexes differ. A gap of half means a filter was translated wrong. Fix the filter before you judge the data.

Step 4: Pull a small test page

This is the step that settles the argument. Eyeball ten rows against your saved search. Look at titles, company size and country, not names.

Pull 25 rows, not the whole list. A search page of 25 is 25 records. Check that the people match what Sales Navigator showed you.

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": ["Director"],
    "jobFunction": ["Sales & Business Development"],
    "country": ["US"],
    "employeeRange": ["51-200"],
    "limit": 25
  }' > page1.json
jq '.meta' page1.json

For more rows, pass the cursor from the previous page. One search pages to 10,000 rows. When meta.depthCapped is true, narrow the filters instead of walking further.

Do not export the whole list on the first pass. A test page that looks wrong costs 25 records. A full export that looks wrong costs far more.

Step 5: Read the email, not just the name

Search finds people. Enrich returns the contact. Send a LinkedIn URL (or an email, phone or person_id) to POST /v1/people/enrich. Set reveal_email to true to get 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-123abc/","reveal_email":true}' \
  | jq '.data.contact_data | {has_email, email_status}'

A person we hold nothing for is a 404 and costs 0. Read email_status before any send. LeadOcean gives no refund for bounced emails.

Step 6: Export the full list

When the test page looks right, export. POST /v1/exports takes up to 50,000 rows a request and 500,000 a day. Bulk CSV export is not on Free. Solo at $97 a month includes it.

bash
curl -s -X POST "https://api.leadocean.io/v1/exports" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "filters": {
      "jobLevel": ["Director"],
      "jobFunction": ["Sales & Business Development"],
      "country": ["US"],
      "employeeRange": ["51-200"]
    },
    "limit": 5000
  }'

The export body nests the search filters under filters and sets limit beside them. Every row costs one record.

You can also build the same export without code on the Exports page in the app: filter builder, column picker, a price preview, then a CSV download.

Step 7: Decide, with numbers

The test answers two questions. Does the API return the people your saved search did? Does the cost per month beat the new seat price? You have the first answer from Step 4.

Put the two costs side by side for one month.

text
LinkedIn seat, per month (from your billing page):  $____
LeadOcean Solo, one person:                          $97
LeadOcean Agency, a team with 5 keys:                $497

LeadOcean paid plans have a fair-use pace, not credits. There is no per-record price and no overage invoice. A LinkedIn seat buys a workspace with InMail and a UI. LeadOcean has none of that: no inbox, no dialer, no CRM, no Chrome extension. If your team lives in the Sales Navigator interface all day, price that gap before you move. If they export lists to a sequencer anyway, the API replaces the data half.

Cold email also needs warmed mailboxes. See inbox warming, inbox warm-up and Gmail warmup before you send from the list.

What you get

Free count run with the leadocean_count_leads MCP tool, 2026-10-21. Filters: jobLevel Director, jobFunction Sales & Business Development, country US, employeeRange 51-200. The default counts people with a verified, catch_all_valid or catch_all email.

json
{
  "total": 36453,
  "totalIsExact": true,
  "totalAll": 119788,
  "distinctCompanies": 20473,
  "credits": 0
}

total is the mailable count. totalAll is the same filters with no email condition. A search row has this shape. Response shape from the API reference (October 2026), with placeholder values:

json
{
  "success": true,
  "data": [
    {
      "profile_data": { "profile_full_name": "Jane Doe" },
      "contact_data": { "has_email": true, "email_status": "verified" },
      "meta": { "source_ids": { "person_id": "1000000001" } }
    }
  ],
  "meta": { "count": 1, "limit": 25, "nextCursor": null }
}

Search rows carry flags, not addresses. The email comes from enrich in Step 5.

Troubleshooting

ErrorCauseFix
401Missing, wrong or revoked keyRe-copy the key from app.leadocean.io and re-export $LEADOCEAN_API_KEY. The header is x-api-key.
429Above your plan's rate limit on one key (5 a second on Free, 200 on Agency)Honor Retry-After, add a short sleep, or run fewer workers.
402The free 1,000 records are spentCheck GET /v1/account, or move to Solo at $97 a month or Agency at $497 a month.
Empty resultsA filter value outside the catalogue, such as Vice PresidentEnum values are exact strings. Use VP and check GET /v1/enums.
Export refusedThe request is over 50,000 rows or the day is over 500,000Split the export across requests or days.

FAQ

Should I cancel LinkedIn Premium after a price increase?

Cancel if you only used it for lead search and contacts. Keep it if you rely on InMail or your own network. The audit in Step 1 answers this in ten minutes.

Does LeadOcean replace Sales Navigator?

For list building and contact data, yes. For the workspace, no. LeadOcean is an API, an MCP server and an exports page. It has no sequencer, dialer or CRM.

Do I need a card to test it?

No. Free is 1,000 records, one-off, no card, every feature. Counts and enrichments that find nothing cost 0.

How often is the data refreshed?

The dataset is refreshed monthly. Each record also carries its own fetched_at date.

Replace the lead-data half of your LinkedIn seat

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

Get your free API key →