B2B data pays off when you can size, find, reach, qualify and refresh accounts from code. Each benefit below is one request you can run today.
TL;DR
- The five benefits: market sizing, precise targeting, reachable contacts, better qualification, fresher records.
- It takes about 30 minutes end to end.
- It spends about 10 of the 1,000 free records. Counts are free.
Prerequisites
- A LeadOcean account on the free plan (1,000 records for life, no card, 5 requests a second).
- An API key from the app, exported as
$LEADOCEAN_API_KEY. curl, or an MCP client connected tohttps://api.leadocean.io/mcp(13 tools).
Step 1: Size your market before you spend anything
The first benefit is knowing how big the audience is before you commit budget. Counts are free, so ask as often as you like.
curl -X POST "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"],"country":["CA"]}'Or ask the MCP tool leadocean_count_leads with the same filters. Companies have their own free sizing call: GET /v1/companies/count, or leadocean_count_companies.
Step 2: Target by fit, not by list
The second benefit is filters that match how you sell: level, function, country, headcount and technology. LeadOcean has 50 people filters and 34 company filters.
curl 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":["CA"],"limit":5}'Enum values are exact strings. Look them up with leadocean_list_enum_values before you guess.
Step 3: Get contacts you can actually reach
The third benefit is an email you can send to. Read email_status on each record. Verified, catch_all_valid and catch_all are the mailable set.
curl -G https://api.leadocean.io/v2/people/email/work \
--data-urlencode "linkedin_url=https://www.linkedin.com/in/jane-doe" \
-H "x-api-key: $LEADOCEAN_API_KEY"Phone numbers come from GET /v2/people/phone. A v2 contact call that finds nothing still costs one record, so enrich first and call v2 only for people you want.
Step 4: Qualify with company and career context
The fourth benefit is knowing who you are talking to. Enrich returns the current role and, since October 2026, career history: past roles, education, certifications and awards.
curl -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"}'Past employers carry no company_id yet. Enrich the company with POST /v1/companies/enrich using acme.com.
Step 5: Keep records fresh and export in bulk
The fifth benefit is a pipeline that does not rot. The dataset is refreshed monthly, and each record carries its own fetched_at date. Re-enrich on a schedule instead of trusting a stale CSV.
curl -X POST https://api.leadocean.io/v1/exports \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"CA sales VPs","filters":{"jobLevel":["VP"],"jobFunction":["Sales & Business Development"],"country":["CA"]},"limit":1000}'Exports take up to 50,000 rows a request and 500,000 a day. Bulk CSV export is not on the free plan. Solo ($97 a month) includes it.
What you get
A free count from leadocean_count_leads on 21 October 2026, filtered to mailable addresses (verified, catch_all_valid or catch_all):
{
"query": "jobLevel VP, jobFunction Sales & Business Development, country CA",
"total": 5574,
"totalIsExact": true,
"totalAll": 18800,
"distinctCompanies": 3873
}totalAll is the same filters with no email condition. The gap shows how much of the audience has no mailable address.
A free company count on the same date with leadocean_count_companies (hqCountry US, employeeRange 51-200, technologies HubSpot) came to 22,147 companies. Software Development was the largest industry at 2,828.
A record from enrich has this shape (response shape from the API reference, placeholder values):
{
"success": true,
"data": {
"profile_data": { "...": "Jane Doe, VP Sales" },
"contact_data": {
"has_email": true,
"email_status": "verified",
"contact_current_experiences": [{ "...": "VP Sales at Acme" }]
},
"resume_data": { "experiences": [], "educations": [] }
},
"meta": {}
}Troubleshooting
| Error | Cause | Fix |
|---|---|---|
| 401 | Missing or wrong x-api-key | Check $LEADOCEAN_API_KEY is exported and the key is active. |
| 429 | Above the plan's rate limit (5 a second on Free, 200 on Agency) | Honor Retry-After, or move to a plan with a higher limit. |
| 402 | Out of records | The free 1,000 are spent. Move to Solo or Agency. |
| Empty results | Bad enum value, such as VP Sales as a job level | Call leadocean_list_enum_values and use the exact string. |
| 404 on enrich | Nobody matched | Costs nothing. Try another identifier. |
| Export refused | Over 50,000 rows a request or 500,000 a day | Split the request or narrow the filters. |
FAQ
Does counting cost records?
No. leadocean_count_leads, GET /v1/companies/count and search with count=true and limit=1 are free.
Is the count a mailable count?
By default yes: verified, catch_all_valid and catch_all addresses only. totalAll shows the unfiltered total.
How fresh is the data?
The dataset is refreshed monthly. Each record carries its own fetched_at date.
What if an email bounces?
There is no refund for bounces. Read email_status before you send.
More on options: best B2B databases, B2B databases for Hong Kong, the B2B data API resource and pricing.
Run these five queries on your own data
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →