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. curlandjq. 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.
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.
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.
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.
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.
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.
{
"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:
{
"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
| Error | Cause | Fix |
|---|---|---|
| 401 | Missing or wrong x-api-key header | Re-export $LEADOCEAN_API_KEY and check the header name |
| 429 | Above the plan's rate limit (5 requests a second on Free, 200 on Agency) | Honour Retry-After, or move up a plan |
| 402 | The 1,000 free records are spent | Move to Solo or Agency. Counts still work |
| Empty results | A bad enum value, such as vp instead of VP for jobLevel | Look up the exact string with /v1/enums or leadocean_list_enum_values |
| Count looks too small | The default count is mailable only | Set emailStatus yourself to widen it |
| Export refused | Over 50,000 rows a request or 500,000 a day | Split 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 →