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 Medical Devices (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.

Medical device companies buy through a committee. Engineering picks the part or tool, quality and regulatory approve it, and supply chain or operations sign for it.

This guide names that committee, finds it with LeadOcean filters, sizes the list with a free count and drafts a first message per role. It suits anyone doing B2B lead generation for medical devices, whether you sell components, software, testing or services to device makers.

TL;DR

  • Target four roles per account: the R&D or engineering lead who specifies, the quality or regulatory lead who approves, the supply chain lead who buys and the executive who funds it.
  • Size first with a free count. On 2026-10-21, US medical device and medical equipment companies held 7,653 mailable sales leaders at director level or above across 1,938 employers.
  • The recipe takes about 45 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

A device sale rarely closes on one signature. Pick the roles before you touch a filter.

Seller typeEconomic buyerChampionGatekeeper
Components, materials, contract manufacturingVP Operations, COODirector of engineering or R&DQuality, purchasing
Software, data, connectivityCTO, VP EngineeringDirector of product or R&DIT, security, quality
Testing, regulatory or consulting servicesCEO, COOVP Regulatory or QualityFinance, legal
Capital equipment, packaging, sterilizationVP ManufacturingDirector of operationsPurchasing, quality

Quality and regulatory teams hold a veto in this industry. A supplier change can trigger documentation work on their side, so an engineer who likes your product still needs them on board.

Company size changes the committee. A 30-person startup has a founder who is also the buyer. A 2,000-person manufacturer has a purchasing group, a quality system and a longer cycle.

LeadOcean files device makers under Medical Device and Medical Equipment Manufacturing. Clinics, labs and pharma sit under other values. Look the exact strings up before you use them.

bash
for q in medical diagnostic surgical; do
  curl -s "https://api.leadocean.io/v1/enums/industry?q=$q" \
    -H "x-api-key: $LEADOCEAN_API_KEY" | jq -r '.data.values[]'
done

Enum values are exact strings. The same lookup is free through the MCP tool leadocean_list_enum_values.

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": ["Medical Device", "Medical Equipment Manufacturing"],
  "jobLevel": ["C-Team", "VP", "Director"],
  "jobFunction": ["Research & Development", "Engineering"],
  "country": ["US"]
}

Map each seller type to a function. A component supplier sells to Engineering, Research & Development, Purchasing and Supply Chain & Logistics. A tooling or process vendor sells to Manufacturing & Production and Operations.

Quality and regulatory roles have no function of their own. Find them with the title filter, for example ["Regulatory Affairs", "Quality Assurance"].

Run one list per role. Mixing an engineering director and a purchasing manager into one sequence gives you a message that fits neither.

Add keywords when you sell into a device type. The companyKeywords filter matches words in the employer's description, specialties and tags, so ["orthopedic"] or ["catheter"] finds companies that an industry label alone misses. It applies when the matching companies number 50,000 or fewer. Check the effect with a count before you rely on it.

Funding and revenue filters are not available in a free people count, so size the list without them. At search time, fundingType and minLastFundingYear narrow it further. Expect a smaller list than the count shows.

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

Step 3: 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 '{
    "industry": ["Medical Device", "Medical Equipment Manufacturing"],
    "jobLevel": ["C-Team", "VP", "Director"],
    "country": ["US"],
    "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 where the accounts sit before you pick a region.

Step 4: Pull a 25-row test batch

Pull a small batch first. Read the titles. If half of them are the wrong role, 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 '{
    "industry": ["Medical Device", "Medical Equipment Manufacturing"],
    "jobFunction": ["Purchasing", "Supply Chain & Logistics", "Operations"],
    "jobLevel": ["C-Team", "VP", "Director"],
    "country": ["US"],
    "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 5: Enrich the champions 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 patents, each when held. An engineer with a patent or a past role at a named device maker gives you 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 6: Write messages that fit the buyer

Device buyers answer to design controls, audit trails and launch dates, not to feature lists. Open with the work they have this quarter.

BuyerTheir pressureFirst line angle
Director of R&D or engineeringA design freeze and a test scheduleName the step your product shortens, in days
Quality or regulatory leadDocumentation, audits and change controlLead with the records you provide and how a change is handled
Supply chain or purchasing leadLead time and a single-source riskLead delivery time, a second-source option and a clear quote path
CEO of a small companyRunway to the next clearance or raiseLead the cost of delay, then one number

Keep claims you can prove. Do not cite a customer or a result you cannot show. Quality teams ask for evidence, and a vague claim ends the thread.

Sequence by role, not by company. Send engineering a note on the technical problem. Send quality a note on documentation and change control. Send supply chain a note on lead time. When one replies, you can name the others at the account.

Check the timing. Device teams plan around design freezes, clearance submissions and trade shows. A message sent the week before a major show lands in a full inbox, so aim for the weeks after.

Match the tone to the reader. Engineers want the spec and the test data. Quality leads want the document list. Executives want one number and one next step.

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

text
Subject: Second source for Acme Medical housings

Jane, device teams at your stage often run a single supplier for
molded housings. We hold a second line with a 3-week lead time.
Worth a short look, or is sourcing settled this year?

The names and the lead time above are placeholders. Replace them with the fields from your batch and a claim you can back.

Step 7: 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 '{
    "name": "meddevice-us-director-plus",
    "filters": {
      "industry": ["Medical Device", "Medical Equipment Manufacturing"],
      "jobLevel": ["C-Team", "VP", "Director"],
      "country": ["US"]
    },
    "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. All use Medical Device and Medical Equipment Manufacturing (the first row uses Medical Device alone), people located in the US, and Director, VP or C-Team level.

FilterMailable peopleEmployers
Medical Device only, all functions14,1551,756
Sales & Business Development7,6531,938
Research & Development or Engineering2,445800
Purchasing, Supply Chain & Logistics or Operations4,2241,326
Titles Regulatory Affairs or Quality Assurance1,258451

Without the email condition, the first filter matches 31,579 people. The gap is people with no usable address. Rows two to five are not additive, because one person can match more than one filter and the industry set differs from row one.

The shape of one search row follows (response shape from the API reference, placeholder values). Search rows carry no contact points; enrich with reveal_email for the address.

json
{
  "success": true,
  "data": [
    {
      "profile_data": {
        "profile_full_name": "Jane Doe",
        "profile_headline": "Director of Engineering at Acme",
        "profile_url": "https://www.linkedin.com/in/jane-doe"
      },
      "contact_data": {
        "has_email": true,
        "has_phone": false,
        "email_status": "verified",
        "email_type": "work"
      },
      "meta": { "source_ids": { "person_id": "1234567890" } }
    }
  ],
  "meta": { "count": 1, "limit": 25, "credits": 1, "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 Medical DevicesLook the value up with GET /v1/enums/industry?q=... or leadocean_list_enum_values
Export refusedOver 50,000 rows a request or 500,000 a daySplit by country 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

Which industry values cover medical devices?

Two: Medical Device and Medical Equipment Manufacturing. Hospitals, practices and diagnostic labs use other values, so add them only if you sell to those buyers, and keep that list separate.

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.

How do I find quality and regulatory contacts?

There is no function value for them, so use the title filter with terms such as Regulatory Affairs and Quality Assurance. Count first, then pull a small batch and read the titles.

Where is the phone number?

Call GET /v2/people/phone. It costs one record a call on every plan, Free included, even when it finds nothing.

Count your medical device list free, then pull the first 25 contacts

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

Get your free API key →