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

How-to guide

How to Build a B2B Lead List for Insurtech (Buyers, Filters and Messaging)

Pick the buying committee, count the list for free, then spend records only on the people you will email.

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

An insurtech deal is signed by a business owner and blocked by a technical or risk reviewer. The champion sits in underwriting, claims or product. The veto sits in IT, security and compliance.

This guide picks that committee, finds it with LeadOcean filters, sizes the list with a free count and drafts a first message per role. It suits anyone selling software, data or services to insurtechs and the insurers they serve.

TL;DR

  • Target three roles per account: the budget owner (CEO, COO or CTO), the champion (underwriting, claims or product lead) and the gatekeeper (security, IT or compliance).
  • Size first with a free count. On 2026-10-21, US-based people at companies matching the keyword "insurtech" held 5,396 mailable VPs and C-level people across 851 employers.
  • The recipe takes about 40 minutes and spends about 30 records, so it fits inside the Free plan's 1,000.

Prerequisites

  • A LeadOcean account on the Free plan. Sign up at app.leadocean.io, no card.
  • An API key exported as $LEADOCEAN_API_KEY.
  • curl and jq, or any HTTP client.
  • Optional: the hosted MCP server at https://api.leadocean.io/mcp if you would rather run the counts from Claude.

Step 1: Pick the buying committee

Pick the roles before you touch a filter. Insurtech buyers split into three groups, and each reads a cold email differently.

You sellEconomic buyerChampionGatekeeper
Developer or infrastructure toolsCTO, VP EngineeringDirector of engineering, platform leadSecurity, compliance
Underwriting, claims or fraud softwareChief Underwriting Officer, COOHead of claims, head of underwritingIT, legal
Services, data or marketingCEO, CRO, CFOVP Product, VP DistributionFinance, legal

Company size changes the committee. At 50 people the CEO or CTO buys and one person owns compliance. At 500 people there is a claims organisation, a vendor review and a security questionnaire before any contract.

LeadOcean has no "insurtech" industry. It files carriers and brokers under Insurance, Insurance Carriers and Insurance Agencies and Brokerages, and adjusters under Claims Adjusting; Actuarial Services. Many insurtechs sit under Software Development or Financial Services. Look the exact strings up before you use them.

bash
for q in insur claims; do
  curl -s "https://api.leadocean.io/v1/enums/industry?q=$q" | jq -r '.data.values[]'
done

The same lookup is free through the MCP tool leadocean_list_enum_values. Enum values are exact strings, so Insurtech as an industry returns nothing.

One warning. Insurance holds traditional carriers and agencies as well as technology firms. If you sell to software-led insurtechs only, add a keyword filter (Step 3), then read the first batch.

Step 2: Turn the committee into filters

Write the filters as flat JSON. Every filter is an array, even when it holds one value.

json
{
  "industry": ["Insurance"],
  "hqCountry": ["US"],
  "employeeRange": ["51-200", "201-500"],
  "jobLevel": ["C-Team", "VP"]
}

For the champions and gatekeepers, switch to titles. Title values are keywords, so list the variants you want.

json
{
  "industry": ["Insurance"],
  "hqCountry": ["US"],
  "employeeRange": ["51-200", "201-500"],
  "title": ["Chief Underwriting Officer", "Head of Claims", "VP Claims", "Chief Information Security Officer"]
}

Run one list per role. A claims lead and a platform engineer on one sequence get a message that fits neither.

Exclude what you cannot sell to. Add excludeTitle values such as ["intern", "assistant"] and excludeCompanyName for competitors and existing customers.

Step 3: Split by size, function and region

Insurtech is not one market. A managing general agent, a claims platform and an embedded-insurance API face different pressure.

  • Headcount. Use employeeRange. From 51 to 200 people, the founder or CTO decides. From 201 to 500, a compliance lead and a vendor process exist. Above 1,000, expect procurement and a security review.
  • Function. Use jobFunction set to Engineering or Information Technology for builders, and Operations for claims and policy servicing. Underwriting titles are best caught with title.
  • Region. Use hqCountry for the account and country for the person. A UK lead and a US lead face different regulators, so write them separate lines.
  • Self-described insurtechs. Use companyKeywords: ["insurtech"]. It matches words in the employer's description, so it finds software-led firms the industry label mixes with carriers.

The companyKeywords filter applies only when the matching companies number 50,000 or fewer. Add a country or a size band if a count comes back with the filter named in unsupportedFilters.

Count each cut with leadocean_count_leads before you commit. If a segment holds a few hundred people or fewer, merge it with its neighbour. A list that small cannot support its own sequence.

Step 4: Size the list with a free count

Count before you pull. A count costs no records and can run as often as you like.

bash
curl -s "https://api.leadocean.io/v1/people/search?count=true" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "companyKeywords": ["insurtech"],
    "country": ["US"],
    "jobLevel": ["C-Team", "VP"],
    "limit": 1
  }' | jq '.meta'

count=true goes in the query string. The JSON body rejects unknown fields. The response has no rows, only meta.total (capped at 100,000) and meta.countOnly: true.

For the company side, GET /v1/companies/count takes the company-search filters and returns an exact total with breakdowns by industry, headcount band, HQ country and HQ state. Use it to see which states hold the accounts before you pick a region. The MCP tool leadocean_count_companies does the same.

Step 5: Pull a 25-row test batch

Pull a small batch first. Read the titles and employers. If half are the wrong kind of firm, tighten the filters before you spend more.

bash
curl -s "https://api.leadocean.io/v1/people/search" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "companyKeywords": ["insurtech"],
    "country": ["US"],
    "jobFunction": ["Engineering", "Information Technology"],
    "jobLevel": ["Director", "VP", "C-Team"],
    "limit": 25
  }' > batch.json

jq '.data | length' batch.json

A page of 25 is 25 records. Page with cursor from meta.nextCursor when you want more. One search pages to 10,000 rows, and the last page carries meta.depthCapped: true. Narrow the filters instead of walking further.

Each row carries an email status. Send to verified and catch_all_valid. Read the status before you send, because LeadOcean does not credit back bounces.

Step 6: Enrich the people you will contact

Enrich only the people you will contact. Enrich takes exactly one of 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 '{"person_id": "PERSON_ID_FROM_SEARCH", "reveal_email": true}'

Enrich also returns career history in resume_data: past roles, education, certifications and publications, each when held. A claims lead who spent ten years at a carrier knows the legacy system you replace. That is a better opener than a job title. An enrichment that finds nothing is a 404 and costs nothing.

For a phone number, call GET /v2/people/phone. A v2 contact call costs one record even when it finds nothing.

Step 7: Write messages that fit the buyer

Insurance buyers are cautious by training. Open with a specific problem and a small first step, not a claim about speed.

BuyerTheir pressureFirst line angle
CTO or VP EngineeringLegacy core systems, integration time, audit trailSay what it connects to and how long setup takes
Head of claimsCycle time, leakage, adjuster workloadName the one claims step you remove
Head of underwritingData quality, turnaround on submissionsLead with the measurable task, not a model name
CEO at a small firmRunway, carrier capacity, distribution costOffer the smallest first step, with a price

Keep claims you can prove. Do not cite a customer, a regulator or a result you cannot show. Insurance staff check claims, and they distrust urgency.

Do not promise compliance outcomes. Say what your product does. Let their team decide what it means for their licence.

A three-line email works better than a pitch. One line on their situation, one on what you do, one question.

text
Subject: Claims intake at Acme

Jane, carriers at your size often route first notice of loss through a
shared inbox. We give that queue an owner and a status for each claim.
Worth a look, or is intake settled this quarter?

The names above are placeholders. Replace them with fields from your batch.

Step 8: Export the full list

When the test batch reads right, export the rest. Bulk CSV export is not on Free; it comes with Solo at $97 a month and with Agency at $497 a month. On Free, page the search endpoint inside your 1,000 records.

bash
curl -s -X POST "https://api.leadocean.io/v1/exports" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "filters": {
      "companyKeywords": ["insurtech"],
      "country": ["US"],
      "jobLevel": ["C-Team", "VP"]
    },
    "limit": 5000
  }'

An export takes up to 50,000 rows a request and 500,000 a day. The app at app.leadocean.io has an Exports page with a filter builder, a column picker and the record price before you start.

What you get

These are free counts from the LeadOcean MCP tools on 2026-10-21. They count mailable people (verified, catch_all_valid or catch_all email), not everyone.

FilterMailable peopleEmployers
Industry Insurance, US HQ, 51 to 500 employees, VP or C-Team18,2502,323
Company keyword "insurtech", US-based person, VP or C-Team5,396851
Company keyword "insurtech", US-based person, Engineering or IT, VP or C-Team215130

Without the email condition, the first filter matches 65,865 people, the second 11,997 and the third 451. The gap is people with no usable address. The third list is small, so merge it with its neighbour rather than give it its own sequence.

The shape of one search row follows (response shape from the API reference, placeholder values).

json
{
  "success": true,
  "data": [
    {
      "profile_data": { "profile_full_name": "Jane Doe", "profile_headline": "Head of Claims at Acme" },
      "contact_data": { "has_email": true, "has_phone": false, "email_status": "verified" }
    }
  ],
  "meta": { "nextCursor": "CURSOR" }
}

Troubleshooting

ErrorCauseFix
401Missing or wrong x-api-keyRe-export $LEADOCEAN_API_KEY and check the header name
429Above the plan's rate limit (5 requests a second on Free, 200 on Agency)Wait for Retry-After, then slow the loop
402The 1,000 Free records are spentMove to Solo or Agency, or narrow the pull
Empty resultsA misspelled enum value such as Insurtech as an industryLook the value up with /v1/enums/industry or leadocean_list_enum_values
Export refusedOver 50,000 rows a request or 500,000 a daySplit by state or headcount band and run several exports
Export rejected on FreeBulk CSV export is not on FreePage the search endpoint, or move to Solo

FAQ

Is there an insurtech industry filter?

No. Use Insurance and its neighbours, or companyKeywords: ["insurtech"] for self-described insurtechs. Read a 25-row batch to check that the employers are the kind you sell to.

Does the count include people I can email?

The default count includes only people whose best email is verified, catch_all_valid or catch_all. Pass emailStatus to widen it, and label the number by what you filtered.

How many records does this guide spend?

About 30: a 25-row test batch plus a few enrichments. Counts, enum lookups and enrichments that find nothing cost no records.

Can I filter by funding stage?

Funding filters narrow a search, but they do not work in the free count tool, so the counts here leave them out. Count without them, then add them when you search.

Where is the phone number?

Call GET /v2/people/phone. Each call costs one record, including a call that finds no number.

Count your insurtech buyers free, then pull the first 25

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

Get your free API key →