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

How-to guide

How to Judge a B2B Prospecting Platform (5 Tests With Real Queries)

A good platform answers five questions in under an hour. Here are the queries that ask them.

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

A good sales intelligence platform lets you size a market, filter it precisely, read the email status and see the price before you commit. If a vendor cannot do all four in a trial, move on.

Most roundups rank logos. This one gives you five tests you can run against any platform with an API. The queries below run against LeadOcean, so you can also see what a passing answer looks like.

TL;DR

  • Run five tests: count, filter, search, enrich, cost. Total time is about 30 minutes.
  • On LeadOcean the walkthrough spends about 11 of the 1,000 free records. Counts and filter lookups spend none.
  • Skip any platform that hides email status, charges for empty results or gives you no count before you pull.

Prerequisites

  • A LeadOcean account on the free plan (register here). No card.
  • An API key exported as $LEADOCEAN_API_KEY.
  • curl and jq. Free allows 5 requests a second, which is plenty here.
  • The same five questions, ready to put to whichever vendor you are comparing.

Step 1: Ask for a count before you pull anything

A good platform tells you how big a list is before it charges you. Send a search with count=true as a query parameter and limit=1.

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"],
    "industry": ["Computer Software"],
    "hqCountry": ["US"],
    "employeeRange": ["51-200"]
  }' | jq '.meta'

This call is free. meta.total is capped at 100,000, so a bigger market reads as the cap. Pass: you get a number, not a sales call. Fail: the vendor makes you export to see the size.

Step 2: Check that the filters take exact values

Filters are only useful if you can discover valid values. On LeadOcean, enum filters are exact strings, and a wrong one returns an empty result, not an error.

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

Both calls are free. There are 50 people filters and 34 company filters. Look for the ones you actually use: job level, job function, industry, headcount, technology and funding.

If you work in an AI client, the MCP server does the same with leadocean_list_filters and leadocean_list_enum_values. The hosted endpoint is https://api.leadocean.io/mcp, with OAuth sign-in and no key pasted.

Step 3: Pull a small page and read the email status

Pull 10 rows, not 10,000. Then check the email status on every one.

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"],
    "industry": ["Computer Software"],
    "hqCountry": ["US"],
    "employeeRange": ["51-200"],
    "emailStatus": ["verified"],
    "limit": 10
  }' | jq '.meta, (.data | length)'

This spends 10 records, one per person returned. Pass: every row carries a status you can filter on, such as verified or catch_all. Fail: a single "email found" flag with no detail. A bounce costs you sender reputation, and LeadOcean does not refund bounced emails, so read the status.

Step 4: Enrich one person and look at what is missing

Enrichment should return what it has and cost nothing when it finds nothing. Pass exactly one input: linkedin_url, email, phone or person_id.

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

Use a profile you know is real, such as a colleague who agreed. A miss is a 404 and costs nothing. A hit costs one record. Since October 2026 the response also carries career history: past roles, education, certifications and awards. Past employers do not have a company_id yet, so do not build joins on them.

Step 5: Price the whole job before you commit

Run the maths for your real list. Take the count from Step 1 and match it to a plan.

bash
curl -s -G "https://api.leadocean.io/v1/companies/count" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  --data-urlencode "industry=Computer Software" \
  --data-urlencode "hqCountry=US" \
  --data-urlencode "employeeRange=51-200" | jq '.'

The company count is free and returns an exact total with breakdowns by industry, headcount band, HQ country, HQ state and NAICS. One record is one person or one company you receive, so a page of 25 costs 25.

Plans for reference: Free is $0 (1,000 records for life), Solo is $97 a month, Agency is $497 a month and Platform is $1,997 a month. Paid plans have a fair-use pace, not credits. See pricing. For your own vendor, ask for the price at your list size in writing. Never multiply a per-seat or per-credit rate out yourself.

What you get

This is a live result from the free leadocean_count_leads tool on 2026-10-21. The filters were VP, Sales & Business Development, Computer Software, HQ in the US, 51-200 employees.

json
{
  "total": 76,
  "totalIsExact": true,
  "totalAll": 296,
  "distinctCompanies": 36
}

The 76 is the mailable count: people whose best address is verified, catch_all_valid or catch_all, at 36 employers. Without an email filter the same query matches 296 people. The gap is the number to compare across vendors. A platform that quotes only the larger figure is counting people you cannot email.

A search page has this shape (response shape from the API reference, placeholder values). Rows carry email flags, not addresses:

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" }
        ]
      },
      "meta": { "source_ids": { "person_id": "1234567890" } }
    }
  ],
  "meta": { "count": 1, "limit": 10, "credits": 1, "nextCursor": "NEXT_CURSOR" }
}

Troubleshooting

ErrorCauseFix
401Missing or wrong x-api-key headerRe-export $LEADOCEAN_API_KEY and check the header name
429Above the plan's rate limit (5 requests a second on Free, 200 on Agency)Honour Retry-After, or move up a plan
402The 1,000 free records are spentMove to Solo or Agency. Counts still work
Empty resultsA bad enum value, such as vp instead of VP for jobLevelLook up the exact string with /v1/enums or leadocean_list_enum_values
Count looks too smallThe default count is mailable onlySet emailStatus yourself to widen it
Export refusedOver 50,000 rows a request or 500,000 a daySplit the list and narrow the filters

FAQ

How long does a proper platform test take?

About 30 minutes for the five tests above. Add an hour if you want to test a second vendor with the same ICP.

Do I need to test the user interface too?

Only if your reps will use it. LeadOcean is an API and MCP server with an app for exports. It has no sequencer, dialer, CRM or Chrome extension, so pair it with the tools you already run.

Is a bigger database always better?

No. Coverage in your segment and country matters more. Run your own ICP counts. LeadOcean holds 693M people and 67M companies, but your 76 mailable VPs are the number that counts.

What should I check besides counts?

Email status detail, price at your real volume, rate limits and what a miss costs. See accurate data for sales intelligence and the best sales intelligence platforms for the comparison side.

Test your ICP before you buy anything

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

Get your free API key →