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 Consulting Firms (Partners, Practice Leads and Operations)

Find the buying committee, size the list with a free count, and pull only the rows you will email.

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

Consulting firms buy through partners. Map the committee to seniority and title filters, count it for free, then pull only the rows you will email.

TL;DR

  • Consulting firms buy through partners, not departments. Target the partner or founder, the practice or sales lead and the operations 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 12,021 mailable VPs and C-level people at US consulting firms with 51 to 500 employees, across 2,200 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.
  • curl and jq, or any HTTP client. Optional: the hosted MCP server at https://api.leadocean.io/mcp if 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

Consulting is a people business with a thin back office. Whoever owns revenue and delivery owns the budget. This guide is for vendors selling software, services or data to consulting firms.

Most deals touch four roles:

  • Partner, founder or managing director. Signs almost everything. In a firm under 200 people this is often the only approver.
  • Practice or sales lead. A VP or director of business development. Buys anything that fills the pipeline.
  • Operations lead. Runs staffing, utilization and delivery tooling. Runs the pilot for operations software.
  • Finance or IT lead. Rarely the champion, often the blocker. Appears on larger firms.

Write the committee down as filter sets before you query anything:

yaml
partner:     { seniority: [partner, founder, owner] }
practice:    { jobLevel: [Director, VP, C-Team], jobFunction: [Sales & Business Development] }
operations:  { jobLevel: [Director, VP, C-Team], jobFunction: [Operations] }
sponsor:     { seniority: [c_suite] }

One data note. In this industry the seniority field partner is useful and the job function field is not. Many partners carry a function of General Business or Other. Filter on seniority and title first, function second.

Step 2: Resolve the industry values

Filter values are exact strings. The industry list has 534 values and several describe consulting. Check them before you guess.

bash
for q in consulting "strategic management"; 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[]'
done

In Claude with the MCP server connected, the free tool does the same job.

code
leadocean_list_enum_values({ name: "industry", q: "consulting" })

The values that matter follow.

  • Management Consulting
  • Business Consulting and Services
  • Operations Consulting
  • Strategic Management Services
  • Outsourcing and Offshoring Consulting

Business Consulting and Services is the largest by far. Use the first four together unless you sell to a niche.

Step 3: Size the company list for free

Count companies first. A company count is free and tells you whether the segment can carry an outbound motion.

bash
curl -s "https://api.leadocean.io/v1/companies/count" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -G --data-urlencode "industry=Management Consulting" \
  --data-urlencode "industry=Business Consulting and Services" \
  --data-urlencode "industry=Operations Consulting" \
  --data-urlencode "industry=Strategic Management Services" \
  --data-urlencode "hqCountry=US" \
  --data-urlencode "employeeRange=51-200" \
  --data-urlencode "employeeRange=201-500"

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.

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.

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": ["Management Consulting", "Business Consulting and Services",
                 "Operations Consulting", "Strategic Management Services"],
    "country": ["US"],
    "employeeRange": ["51-200", "201-500"],
    "seniority": ["partner", "founder", "owner"],
    "limit": 1
  }'

Build one filter per committee role.

RoleFilter
Partner or founderseniority: ["partner", "founder", "owner"]
Practice or sales leadjobLevel: ["Director", "VP", "C-Team"], jobFunction: ["Sales & Business Development"]
Operations leadjobLevel: ["Director", "VP", "C-Team"], jobFunction: ["Operations"]
Executive sponsorseniority: ["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.

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": ["Management Consulting", "Business Consulting and Services"],
    "country": ["US"],
    "employeeRange": ["51-200", "201-500"],
    "seniority": ["partner", "founder", "owner"],
    "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.

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": "us-consulting-partners",
    "filters": {
      "industry": ["Management Consulting", "Business Consulting and Services"],
      "country": ["US"],
      "employeeRange": ["51-200", "201-500"],
      "seniority": ["partner", "founder", "owner"],
      "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:

  • Partner or founder. Lead with revenue or billable hours. Partners think in utilization and win rate. Name the number you move.
  • Practice or sales lead. Lead with pipeline. They are measured on new engagements, so open with how you find or warm buyers.
  • Operations lead. Lead with staffing, time capture or reporting. Offer a short pilot on one project team.
  • Finance or IT lead. Lead with cost and access control. Client data is sensitive, so say plainly how your product handles it, and only say what is true.

Keep each email under 90 words with one ask. Do not name a customer you have not cleared.

In a firm under 200 people, write to the partner first. Delegation is short, and one yes closes it. In a firm of 200 to 500, start with the practice or operations lead, then copy the idea to a partner with the lead's problem stated in business terms.

Reach two roles in the same firm within two weeks. Never send the same template to both.

Step 8: Keep the list clean

Re-run the free count before every send, with the Step 4 body saved as partners.json:

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 @partners.json | jq '.meta.total'

Re-run the free count monthly, since the dataset refreshes monthly. Consulting partners move between firms often. 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 employer you both know.

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 the four consulting values from Step 1. Country is US and headcount is 51 to 500. People figures are mailable (verified, catch_all_valid or catch_all) unless the row says otherwise.

FilterResult
Companies: the four industries, HQ US, 51 to 500 employees6,160 companies
People: VP or C-Team12,021 mailable (43,633 with no email filter), 2,200 employers
People: seniority partner, founder or owner4,183 mailable (16,419 with no email filter), 1,237 employers
People: Director/VP/C-Team, Sales & Business Development1,338 mailable (4,735 with no email filter), 555 employers
People: Director/VP/C-Team, Operations561 mailable (2,228 with no email filter), 352 employers

Of the 6,160 companies, 5,765 are filed under Business Consulting and Services and 190 under Management Consulting. The state breakdown put Kentucky first (1,041), then California (704), New York (467), Texas (386) and Utah (316). Kentucky also topped the HQ-state breakdown for US construction companies counted the same day, so read it as a quirk in the HQ-state data, not a consulting cluster. Check a sample before you build a territory on it.

Response shape from the API reference, placeholder values only.

json
{
  "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

ErrorCauseFix
401Missing or wrong x-api-keyCheck $LEADOCEAN_API_KEY is exported and sent as the x-api-key header.
429Above the plan's rate limit (5 a second on Free, 200 on Agency)Back off and honor Retry-After.
402Out of records on the Free planThe 1,000 records are spent. Move to Solo ($97 a month) or Agency ($497 a month).
Empty resultsBad enum value, such as Partner in jobLevel or Consulting as an industryResolve values with GET /v1/enums/{name} 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.

FAQ

Which industry value should I use for consulting?

Use Management Consulting, Business Consulting and Services, Operations Consulting and Strategic Management Services together. Add Outsourcing and Offshoring Consulting if you sell to that niche. Resolve each with the free enum lookup.

How many consulting 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 web3, lead generation for travel, lead generation for telecom pricing and the blog hub.

Size your consulting 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 →