No award tells you which provider covers your market. Breadth is how many of your target people and companies a database holds. Depth is how much it knows about each one. Both are measurable in about 40 minutes.
Examples use placeholders (Acme, acme.com, Jane Doe). Swap in your own filters.
TL;DR
- Breadth is a count on your segment: people, distinct companies and mailable share. Depth is a field audit on one enriched record.
- Run the same filters at every vendor you compare. Ask whether a count is free before you pay.
- On LeadOcean this takes about 40 minutes and spends 1 record of the 1,000 free ones. Counts and enum lookups cost nothing.
Prerequisites
- A LeadOcean key from app.leadocean.io. The Free plan works: no card, 1,000 records for life.
- The key in your shell:
export LEADOCEAN_API_KEY=... curlandjq.- A written segment: country, seniority, company size. One line is enough.
All requests go to https://api.leadocean.io with the header x-api-key.
Step 1: Define breadth as three counts
Breadth is not one number. Count people, count the employers they span, and count how many have an address you can send to. A vendor with a big total and few distinct employers is deep in a few accounts, not broad.
Enum values are exact strings. Look them up first. This call is free.
curl -s "https://api.leadocean.io/v1/enums/job_level" \
-H "x-api-key: $LEADOCEAN_API_KEY"C-Team is a job level. c_suite is a seniority. Mixing them returns nothing, not an error.
Step 2: Count people on your segment
Send count=true as a query parameter with limit=1. It returns no rows and costs nothing.
curl -s -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":["C-Team"],"country":["DE"],"employeeRange":["51-200"]}' \
| jq '.meta | {total, totalIsExact, distinctCompanies}'REST meta.total stops at 100,000. For an exact total and a breakdown, use the free MCP tool leadocean_count_leads. Its default counts only people with a verified, catch_all_valid or catch_all email. Label that number mailable, not everyone.
Step 3: Count companies on the same segment
People counts hide gaps in company coverage. Size the companies with the free company count, which takes the company-search filters.
curl -s "https://api.leadocean.io/v1/companies/count?hqCountry=DE&employeeRange=51-200" \
-H "x-api-key: $LEADOCEAN_API_KEY" | jq .The result carries an exact total and breakdowns by industry, headcount band, HQ country, HQ state and NAICS. The same call exists as the MCP tool leadocean_count_companies. Compare the company total with distinctCompanies from step 2. The ratio tells you how many companies have a mailable C-level contact on file.
Step 4: Read the breakdowns for gaps
A total hides thin spots. Read the facets: which industries dominate, which states appear, and whether the labels are clean. Dirty labels are a depth problem you can see without paying.
In the run below, the HQ state facet for Germany returns clean names such as Bavaria and Hesse, but also stray values (Be, Hh, Bw, GA). That is real data noise. A vendor that shows you its facets lets you find it before you buy. One that only shows a total does not.
Filter by what you will actually use. The company side has 34 filters and the people side has 50, so check that the fields you sell on are filterable at each vendor.
Step 5: Audit depth on one record
Depth is the number of fields a record carries and how many are filled. Enrich one person you already know, by LinkedIn URL, and list the keys. This spends 1 record, and nothing if we hold no one at that URL.
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"}' \
| jq '.data | {top: keys, contact: (.contact_data | keys), resume: (.resume_data | keys)}'Since October 2026 enrich also returns career history in resume_data: past roles, education, certifications and awards, each when held. Past employers carry no company_id yet, so you cannot join them to company records.
One record is not a sample. Repeat on 10 people from different countries if you have budget, and note which fields are empty for each.
Step 6: Score the vendors side by side
Put the same rows in one table per vendor. Same segment, same filters, same status gate.
cat <<'TABLE'
metric vendor_a vendor_b
people (mailable)
distinct companies
companies in segment
filters usable for my segment
fields filled on 1 record
count free before purchase (y/n)
TABLEWeight the rows by how you sell. An outbound team cares about mailable people. An ABM team cares about company coverage and distinct employers. A product team cares about depth fields and API access.
What you get
Counts run on 2026-10-21 with the free MCP tools leadocean_count_leads and leadocean_count_companies for C-Team people in Germany at companies of 51-200 employees. No rows were returned.
| Measure | Result |
|---|---|
People, no email filter (totalAll) | 53,126 |
| People, default mailable set | 11,661 |
| Distinct employers of the mailable people | 5,880 |
| Companies, HQ in Germany, 51-200 employees | 31,655 |
| Top industry of those people | IT Services and IT Consulting (774) |
| Seniority split of mailable people | c_suite 7,993, owner 3,668 |
About a fifth of the people in this slice have a mailable address, and the mailable people cover 5,880 employers out of 31,655 companies. That gap is the real breadth finding. A single headline total would have hidden it.
Response shape from the API reference, placeholder values:
{
"success": true,
"data": {
"profile_data": { "profile_full_name": "Jane Doe" },
"contact_data": {
"has_email": true,
"email_status": "verified",
"contact_current_experiences": [
{ "job_title": "Chief Executive Officer", "company_name": "Acme", "company_domain": "acme.com" }
]
},
"resume_data": {
"experiences": [],
"educations": [],
"certifications": [],
"awards": []
},
"meta": { "source_ids": { "person_id": "1234567890" }, "fetched_at": "2026-10-01" }
},
"meta": { "credits": 1 }
}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 | Wait for the Retry-After value, then retry |
| 402 | The 1,000 free records are spent | Upgrade to Solo ($97 a month) or Agency ($497 a month) |
| Empty results | A filter value is not an exact enum string, such as c_suite in jobLevel | List the values with /v1/enums/job_level and copy one |
meta.depthCapped is true | One search pages through 10,000 rows at most | Narrow the filters instead of paging further |
| Export refused | A request is over 50,000 rows, or the day is over 500,000 | Split the export, or wait for the next day |
FAQ
Which B2B lead gen providers are recognized for breadth and depth?
Review sites and analyst lists name providers, but their criteria are rarely your segment. Treat recognition as a shortlist and run the counts above on two or three vendors. LeadOcean holds 693M people and 67M companies, but your segment is what matters.
What is the difference between breadth and depth in B2B data?
Breadth is how many people and companies a database covers. Depth is how many fields each record carries and how many are filled. A database can be broad and shallow, or the reverse.
Can I measure breadth without paying?
On LeadOcean, yes. Search with count=true, the people count tool and the company count are free. Ask every vendor whether sizing a segment costs credits.
Does a bigger total mean better coverage?
No. Totals include people with no usable email. Compare the mailable count and the distinct employers on your own filters. See the accuracy test for the status gate.
How much does a LeadOcean breadth check cost?
Nothing on Free. See pricing: Free, then Solo at $97 and Agency at $497 a month. For tool comparisons see AI lead gen tools, and for support quality see customer support.
Measure your own segment before you trust a badge
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →