Law firms buy through owners and partners. Map the committee to seniority and function filters, count it for free, then pull only the rows you will email.
TL;DR
- Law firms are partnerships. Target the owner or managing partner first, then the marketing or business development lead and the operations or IT lead at the same firm.
- Size the list with a free count, then pull a 100-row sample. The recipe takes about 25 minutes and spends 100 records at most.
- On 2026-10-21 the free count found 5,608 mailable owners, partners and founders at US legal services firms with 11 to 200 employees, across 1,914 employers.
Prerequisites
- A LeadOcean account. The Free plan gives 1,000 records for life, no card, 5 requests a second. Sign up at app.leadocean.io.
- An API key stored as
$LEADOCEAN_API_KEY. curlandjq, or any HTTP client. Optional: the hosted MCP server athttps://api.leadocean.io/mcpif you work from Claude.
Base URL is https://api.leadocean.io. Every request carries the header x-api-key.
Step 1: Pick the buying committee
Whoever owns the firm owns the budget. This guide is for vendors selling software, services or data to law firms, not to legal departments inside companies.
Most deals touch four roles:
- Owner, partner or managing partner. Signs almost everything. In a firm under 200 people this is often the only approver.
- Marketing or business development lead. A director or VP of marketing or business development. Buys anything that brings in new clients.
- Operations or IT lead. Runs practice management, document handling and security. Runs the pilot for software.
- Executive sponsor. A C-level person such as a COO or CMO. Appears on larger firms.
Write the committee down as filter sets before you query anything:
owner: { seniority: [partner, owner, founder] }
marketing: { jobLevel: [Director, VP, C-Team], jobFunction: [Sales & Business Development, Advertising & Marketing] }
operations: { jobLevel: [Director, VP, C-Team], jobFunction: [Information Technology, Operations] }
sponsor: { seniority: [c_suite] }Step 2: Resolve the industry value
Filter values are exact strings. The industry list has 534 values. Check them before you guess.
for q in "legal" "law"; do
curl -s -G "https://api.leadocean.io/v1/enums/industry" --data-urlencode "q=$q" \
-H "x-api-key: $LEADOCEAN_API_KEY" | jq -r '.data.values[]'
doneIn Claude with the MCP server connected, the free tool does the same job.
leadocean_list_enum_values({ name: "industry", q: "law" })Two values hold law firms: Legal Services and Law Practice. Copy them exactly, capitals included. A guess such as Law or Law Firms returns an empty list. The counts below use Legal Services; add Law Practice to the same filter to reach the firms filed under it.
Step 3: Size the company list for free
Law is a long tail of small firms. Most of the market is a solo or small practice, and a handful of large firms sit on top. Decide which end you sell to before you count, because the committee, the price point and the sales cycle differ at each end.
Count companies first. A company count is free and tells you whether the segment can carry an outbound motion.
curl -s -G "https://api.leadocean.io/v1/companies/count" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
--data-urlencode "industry=Legal Services" \
--data-urlencode "hqCountry=US" \
--data-urlencode "employeeRange=11-50" \
--data-urlencode "employeeRange=51-200"The same call as an MCP tool is leadocean_count_companies. It spends no records and returns breakdowns by HQ state and NAICS code, so you see where the segment clusters.
On the small end, one person is the buyer and the deal closes in a few emails. On the large end, a marketing, operations or IT lead runs the evaluation and a partner committee signs off. Pick one end per campaign and write one message for it.
Step 4: Build the people filter
Search takes a flat JSON body. Filters are arrays. The count=true query parameter makes the call a free sizing call: data comes back empty and meta.total is capped at 100,000.
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 '{
"industry": ["Legal Services"],
"country": ["US"],
"employeeRange": ["11-50", "51-200"],
"seniority": ["partner", "owner", "founder"],
"limit": 1
}'Build one filter per committee role.
| Role | Filter |
|---|---|
| Owner or partner | seniority: ["partner", "owner", "founder"] |
| Marketing or business development lead | jobLevel: ["Director", "VP", "C-Team"], jobFunction: ["Sales & Business Development", "Advertising & Marketing"] |
| Operations or IT lead | jobLevel: ["Director", "VP", "C-Team"], jobFunction: ["Information Technology", "Operations"] |
| Executive sponsor | seniority: ["c_suite"] |
Enum values are case-exact: C-Team, VP, Director. Seniority is lowercase.
Step 5: Pull a sample and check email status
Spend a small number of records to check quality before a bulk pull. Page size is 1 to 100 and pagination uses cursor.
curl -s -X POST "https://api.leadocean.io/v1/people/search" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"industry": ["Legal Services"],
"country": ["US"],
"employeeRange": ["11-50", "51-200"],
"seniority": ["partner", "owner", "founder"],
"emailStatus": ["verified", "catch_all_valid"],
"limit": 100
}' | jq '.data | length, (.[0] | keys)'This spends up to 100 records. Read email_status on every row. LeadOcean does not refund bounces, so send to verified first and treat catch_all as a second wave.
One search pages to 10,000 rows. If meta.depthCapped is true, narrow the filters instead of walking further. Add a state or a headcount band.
Step 6: Export the rows you will email
For lists above a sample, use an export. It takes up to 50,000 rows a request and 500,000 a day. Bulk CSV export is not on the Free plan.
curl -s -X POST "https://api.leadocean.io/v1/exports" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "us-law-firm-owners",
"filters": {
"industry": ["Legal Services"],
"country": ["US"],
"employeeRange": ["11-50", "51-200"],
"seniority": ["partner", "owner", "founder"],
"emailStatus": ["verified"]
},
"limit": 5000
}'You can also do this in the app at app.leadocean.io. The Exports page has a filter builder, a column picker, the record price before you start, and a CSV download. It is not a sequencer. Load the CSV into the tool you already send from.
Step 7: Match the message to the role
One angle per role:
- Owner or managing partner. Lead with client intake, realization or partner time. They think in billable hours and matter flow. Name the number you move.
- Marketing or business development lead. Lead with new matters and referral sources. They are measured on inquiries, so open with how you reach buyers outside the referral network.
- Operations or IT lead. Lead with document handling, access control or admin hours saved. Offer a short pilot with one practice group.
- Executive sponsor. Lead with margin and risk. Client files are confidential, so say plainly how your product handles them, and only say what is true.
Keep each email under 90 words with one ask. Do not name a customer you have not cleared.
Split by practice area when you can. A personal injury firm, an estate planning firm and a corporate firm buy different tools. Use keywords or companyKeywords in the search body to separate them, then check a 25-row sample before you trust the split.
In a firm under 50 people, write to the owner first. Delegation is short, and one yes closes it. In a firm of 200 or more, start with the marketing or operations lead and pass the idea up with their problem stated in business terms. Never send the same template to two roles.
Step 8: Keep the list clean
Re-run the free count before every send, with the Step 4 body saved as owners.json:
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 @owners.json | jq '.meta.total'The dataset refreshes monthly, so re-run the count monthly. Partners retire, firms merge and titles change. If the total drops, re-pull the accounts you are working and drop anyone whose title no longer matches.
Person enrich returns career history too: past roles, education and certifications. Use it to open with a real detail, such as a prior firm you both know.
Step 9: Work the list in waves
Do not send to 5,608 people at once. Split the list into waves and learn from each.
- Wave one. Owners with a
verifiedemail at firms of 11 to 50 people. They decide fast. - Wave two. Owners at firms of 51 to 200 people, plus the marketing lead at the same firm.
- Wave three.
catch_alladdresses and the operations or IT lead.
Track replies per role and per headcount band. Drop the band that does not answer after two touches. The free count lets you resize any wave in seconds, so adjust the filters instead of guessing.
What you get
Free counts run on 2026-10-21 with the MCP tools leadocean_count_leads and leadocean_count_companies. The industry filter is Legal Services unless the row says otherwise, and country is US. People figures are mailable (verified, catch_all_valid or catch_all) unless the row says otherwise.
| Filter | Result |
|---|---|
| Companies, 11 to 200 employees (company count) | 18,600 companies, 16,430 of them with 11 to 50 employees |
Same company count with industry Law Practice instead | 17,661 companies, 15,202 of them with 11 to 50 employees |
| Owner, partner or founder, 11 to 200 employees | 5,608 mailable (20,276 with no email filter), 1,914 employers |
| Director/VP/C-Team, Sales & Business Development or Advertising & Marketing, 51 to 500 employees | 705 mailable (1,765 with no email filter), 231 employers |
| Director/VP/C-Team, Information Technology or Operations, 51 to 500 employees | 365 mailable (1,074 with no email filter), 174 employers |
| C-suite, 51 to 500 employees | 2,707 mailable (5,810 with no email filter), 381 employers |
The shape is clear. The owner layer is wide and the specialist layer is thin. Plan to reach owners in small firms and one specialist in each larger firm. By company count, Texas, California, Florida and New York lead the HQ states, with 2,678, 2,280, 1,367 and 1,096 firms.
Response shape from the API reference, placeholder values only.
{
"success": true,
"data": [
{
"profile_data": {
"profile_full_name": "Jane Doe",
"profile_headline": "Managing Partner at Acme"
},
"contact_data": {
"has_email": true,
"email_status": "verified",
"contact_current_experiences": [{
"job_title": "Managing Partner",
"company_name": "Acme",
"company_domain": "acme.com"
}]
}
}
],
"meta": { "count": 1, "limit": 100, "credits": 1, "nextCursor": "CURSOR", "depthCapped": false }
}Troubleshooting
| Error | Cause | Fix |
|---|---|---|
| 401 | Missing or wrong x-api-key | Check $LEADOCEAN_API_KEY is exported and sent as the x-api-key header. |
| 429 | Above the plan's rate limit (5 a second on Free, 200 on Agency) | Back off and honor Retry-After. |
| 402 | Out of records on the Free plan | The 1,000 records are spent. Move to Solo ($97 a month) or Agency ($497 a month). |
| Empty results | Bad enum value, such as Law as an industry or Partner in jobLevel | Resolve values with GET /v1/enums/{name} or leadocean_list_enum_values. |
| Export refused | Over 50,000 rows a request or 500,000 a day | Split by state or headcount band and run several exports. |
FAQ
Which industry value should I use for law firms?
Use Legal Services and Law Practice together. Both are exact strings in the 534-value industry list, and each holds a large share of US firms. Resolve them with the free enum lookup before you query.
How many law firm contacts can I get for free?
The Free plan gives 1,000 records for life, no card. Counts never spend records, so you can size the whole segment first and pull a 100-row sample.
Can I get phone numbers for partners?
Yes, through GET /v2/people/phone or the find_phone MCP tool. Each call costs one record, including a call that finds nothing.
Does this replace my sequencer or CRM?
No. LeadOcean returns data through an API, an MCP server and an app with an Exports page. Send from the tool you already use.
Related reading: lead generation for IT services and MSPs, lead generation for web3, lead generation for travel, pricing and the blog hub.
Size your law firm list before you spend a record
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →