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

Industry playbook

How to Build a B2B Lead List for Manufacturing (Who to Target and How)

Pick the buying committee, find it with six filters, size the list for free, then spend records only on the people you will write to.

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

Manufacturing deals are committee deals. The person who feels the pain is rarely the person who signs, so build the list around the roles in the room, not one title. Size it with a free count first, then spend records only on the people you will write to.

TL;DR

  • Target operations, purchasing and engineering leaders at US manufacturers with 201 to 1,000 employees. A free count on 21 October 2026 found 1,011 mailable people at 283 companies for operations and purchasing VPs and directors alone.
  • It takes 30 to 45 minutes. Sizing costs 0 records. A 25-row test pull costs 25 records. The Free plan gives you 1,000 records for life.
  • Lead with the plant's problem (downtime, scrap, lead time, supplier risk), not your product.

Prerequisites

  • A LeadOcean API key from app.leadocean.io. The Free plan has no card and allows 5 requests a second.
  • The key in your shell: export LEADOCEAN_API_KEY=your_key_here.
  • curl and jq, or any HTTP client.
  • Optional: the hosted MCP server at https://api.leadocean.io/mcp, if you want to run the counts from Claude. It has 13 tools, and the count tools are free.

Step 1: Map the buying committee

A manufacturing purchase usually has five roles. Write them down before you touch a filter.

RoleTypical titlesWhat they care aboutLeadOcean filter
Economic buyerCEO, President, COO, General ManagerMargin, capacity, riskjobLevel: C-Team
Operations ownerVP Operations, Plant Manager, Director of ManufacturingUptime, throughput, yieldjobFunction: Operations or Manufacturing & Production
PurchasingDirector of Procurement, Strategic Sourcing ManagerCost, supplier risk, termsjobFunction: Purchasing
Technical evaluatorDirector of Engineering, Quality ManagerFit, spec, compliancejobFunction: Engineering
Supply chainVP Supply Chain, Logistics DirectorLead time, inventoryjobFunction: Supply Chain & Logistics

Pick two or three roles for the first campaign. Operations plus purchasing is a good start for most industrial products. Engineering matters when your product has to meet a spec.

Step 2: Resolve the exact filter values

Enum filters take exact strings. Never guess them. Ask the free enum endpoint.

bash
curl -s "https://api.leadocean.io/v1/enums/industry?q=manufacturing" | jq -r '.data.values[]'

The industry list has 534 values and many are manufacturing sub-sectors, such as Industrial Machinery Manufacturing, Fabricated Metal Products and Plastics Manufacturing. In Claude, the same lookup is one free tool call:

text
leadocean_list_enum_values({ name: "industry", q: "manufacturing" })

Start with the broad label Manufacturing. Add sub-sectors later if your product fits one. Job functions are exact too: Operations, Purchasing, Engineering, Manufacturing & Production, Supply Chain & Logistics.

Step 3: Size the list for free

Send count=true as a query parameter with limit=1. It spends no records, and meta.total is capped at 100,000.

bash
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": ["Manufacturing"],
    "jobFunction": ["Operations", "Purchasing"],
    "jobLevel": ["VP", "Director"],
    "country": ["US"],
    "employeeRange": ["201-500", "501-1000"],
    "limit": 1
  }' | jq '.meta'

To size the companies, use the free company count. It returns an exact total with breakdowns by headcount band, HQ state and NAICS.

bash
curl -s "https://api.leadocean.io/v1/companies/count?industry=Manufacturing&hqCountry=US&employeeRange=201-500,501-1000" \
  -H "x-api-key: $LEADOCEAN_API_KEY" | jq '{total: .data.total, state: .data.facets.hq_state[0:5]}'

If the number is under 300, widen the headcount bands or add the Engineering function. If it is over 10,000, narrow by state or sub-sector. One search pages to 10,000 rows, so narrow the filters instead of walking the index.

Step 4: Pull a 25-row test

Spend 25 records to check that the titles match the committee you mapped.

bash
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": ["Manufacturing"],
    "jobFunction": ["Operations", "Purchasing"],
    "jobLevel": ["VP", "Director"],
    "country": ["US"],
    "employeeRange": ["201-500", "501-1000"],
    "emailStatus": ["verified", "catch_all_valid"],
    "limit": 25
  }' | jq '.data[] | {headline: .profile_data.profile_headline, email_status: .contact_data.email_status}'

Read the titles. If you see too many "Director of Sales" rows, you picked the wrong function. Change the filter, not the pitch. Page further with the cursor from meta.

Step 5: Export the list

When the test looks right, export it. Bulk CSV export is not on Free. Solo ($97 a month) includes it, and Agency ($497 a month) allows 50k rows a file. A request takes up to 50,000 rows and an account up to 500,000 rows a day.

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": {
      "industry": ["Manufacturing"],
      "jobFunction": ["Operations", "Purchasing"],
      "jobLevel": ["VP", "Director"],
      "country": ["US"],
      "employeeRange": ["201-500", "501-1000"]
    },
    "columns": ["profile_first_name", "profile_last_name", "current_job_title", "current_company_name", "email_1_address", "email_1_status"],
    "limit": 1000
  }'

You can also do this in the app: the Exports page has a filter builder, a column picker and a price preview before you download the CSV. Column ids come from GET /v1/exports/columns, which is free.

Step 6: Write for the plant, not the boardroom

Each role gets its own angle. Keep the first email under 90 words and name one problem.

RoleAngleOpening line shape
OperationsUnplanned downtime and changeovers"How many hours did {line} stop last quarter?"
PurchasingSupplier risk and single-source exposure"What happens to {part family} if one supplier slips?"
EngineeringSpec fit, qualification time"How long does a new part take to qualify?"
Supply chainLead time and inventory carrying cost"Where does inventory sit longest in your network?"
Economic buyerMargin and capacity without capex"Can you add output without a new line?"

Use the company's real signals when you have them: a new plant, a hiring spree in a function, a technology on its site. Do not claim a result you cannot prove.

Step 7: Prioritize accounts and run the sequence

Do not email 1,000 people on day one. Rank the companies first, then send in waves of 100 to 200 so you can read the replies.

Rank on three signals you can filter for. Headcount: larger plants buy more. State: cluster your reps or events by region. Technology: the stack on a site tells you what they already own. Use technologies and technologyCategories to add that cut. They cover about 7.8M crawled sites, so some plants will have no tech data.

json
{
  "industry": ["Manufacturing"],
  "hqState": ["Ohio", "Michigan", "Indiana"],
  "technologyCategories": ["CRM"],
  "jobFunction": ["Operations"],
  "jobLevel": ["Director", "VP"],
  "limit": 100
}

Check the unsupported-filter note before you quote a count that uses hqState, because some company-level filters are rejected by the free people count. Run it as a real search instead, or use the company count, which supports it.

Send two touches to operations and purchasing at the same account a few days apart, with different angles. Stop when one person replies. Read email_status before you send, because bounced emails are not refunded. Load the CSV into your own sender: LeadOcean returns the data and has no sequencer.

What you get

This is the free count from the MCP server on 21 October 2026. Filters: industry Manufacturing, job function Operations or Purchasing, job level VP or Director, country US, employee range 201-500 or 501-1000. The count is mailable people (verified, catch-all valid or catch-all).

json
{
  "total": 1011,
  "totalIsExact": true,
  "totalAll": 2988,
  "distinctCompanies": 283,
  "credits": 0
}

totalAll is the same filters with no email condition. The company count for US Manufacturing with 201 to 1,000 employees was 941 on the same date, led by California (121), Ohio (67) and Illinois (65). Both counts cost 0 records.

A person record from the Step 4 search has the shape below. This is the response shape from the API reference, with placeholder values.

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

Troubleshooting

ErrorCauseFix
401Missing or wrong x-api-key headerCheck $LEADOCEAN_API_KEY is exported and sent as x-api-key
429Above the plan's rate limit (5 a second on Free, 200 on Agency)Back off for the Retry-After seconds, then retry
402The 1,000 Free records are spentMove to Solo or Agency on the pricing page
Empty resultsA filter value is not an exact enum stringResolve it with leadocean_list_enum_values, for example Operations not ops
Count looks too smallThe default count is mailable people onlyRead totalAll for the unfiltered total
Export refusedOver 50,000 rows in a request or 500,000 in a daySplit the export by state or sub-sector

FAQ

Which titles should I target in manufacturing?

Target by function and level, not title. Use Operations, Purchasing, Engineering and Supply Chain & Logistics with VP and Director levels. Titles vary too much between plants to match one by one.

How big should my first manufacturing list be?

Start with 300 to 1,000 mailable people. That is enough to test two angles and learn which role replies. Widen only after you have replies.

Does the count include people without email?

No. The default count is mailable people: verified, catch-all valid or catch-all. Pass emailStatus or hasEmail to change that, and say which you used.

Can I find plant managers directly?

Search by title with "Plant Manager" plus the Manufacturing industry. Titles are keywords, so check the 25-row test before you export.

How do I reach people on the shop floor?

You mostly will not. Shop-floor staff rarely have a listed work email. Aim at plant managers, directors and above, and use phone for the ones with no verified email.

How fresh is the data?

The dataset is refreshed monthly, and each record carries its own fetched_at date. Re-run your count before each campaign.

What does it cost?

Counts are free. The Free plan gives you 1,000 records for life with no card. Solo is $97 a month and Agency is $497 a month. See the pricing page.

See the playbooks for Web3, Travel and Telecom, or return to the blog hub.

Find your manufacturing buyers with a free count

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

Get your free API key →