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 Energy (Who to Target and How)

Pick the buyers, find them 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.

Energy buyers sit in operations, engineering and procurement, not in marketing. Target directors and above at mid-size US energy firms, size the list with a free count, and spend records only on the people you will write to.

TL;DR

  • Target C-team, VPs and directors at US oil, gas, utility and power companies with 51 to 1,000 employees. A free count on 21 October 2026 found 35,513 mailable people at 3,581 companies.
  • It takes 30 to 45 minutes. Sizing costs 0 records. A 25-row test pull costs 25 records.
  • The Free plan has 1,000 records for life, so you can validate the segment before paying anything.

Prerequisites

  • A LeadOcean account and API key from https://app.leadocean.io/register. Export it as $LEADOCEAN_API_KEY.
  • curl and jq, or any HTTP client.
  • Optional: Claude Desktop or Claude Code connected to the hosted MCP server at https://api.leadocean.io/mcp (OAuth sign-in, no key pasted).
  • A one-line description of what you sell to energy firms. The filters follow from it.
bash
export LEADOCEAN_API_KEY="your_key_here"

Step 1: Pick the buying committee

Decide who signs, who uses and who blocks before you touch a filter. Energy purchases are slow and technical, so the committee is wider than in software. Engineers and operators veto what executives approve.

RoleWhy they matterLeadOcean filter
CEO, president, ownerSigns at firms under 200 peopleseniority: owner, c_suite
VP or Director of OperationsOwns uptime, field crews and cost per unitjobLevel: VP, Director with jobFunction: Operations
Engineering leadSpecifies equipment, software and standardsjobFunction: Engineering
Procurement or supply chain headRuns vendor approval and contractsjobFunction: Purchasing, Supply Chain & Logistics
CFOApproves capital and long contractsjobFunction: Finance & Accounting

Pick two roles for the first campaign. At a 300-person utility or operator, an operations director and an engineering director cover most technical deals.

Step 2: Resolve the industry values

Industry is a closed list of 534 exact strings, and energy is spread across several. Resolve them before you filter. The free leadocean_list_enum_values MCP tool does it; the REST equivalent is GET /v1/enums/industry.

bash
curl -s "https://api.leadocean.io/v1/enums/industry?limit=500" \
  -H "x-api-key: $LEADOCEAN_API_KEY" | jq -r '.data.values[] | select(test("Oil|Energy|Power|Utilities"))'

The core values are Oil and Gas, Oil and Energy, Utilities, Renewable Energy Power Generation, Electric Power Generation and Electric Power Transmission; Control; and Distribution. Also check Solar Electric Power Generation, Wind Electric Power Generation, Nuclear Electric Power Generation, Oil; Gas; and Mining, Energy Technology and Services for Renewable Energy. A wrong spelling returns an empty result, not an error. Copy the strings exactly.

Step 3: Size the list for free

A count spends no records. Send count=true as a query parameter with limit 1. The body stays flat JSON with arrays.

bash
curl -s -X POST "https://api.leadocean.io/v1/people/search?count=true&limit=1" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "industry": ["Oil and Gas", "Oil and Energy", "Utilities",
                 "Renewable Energy Power Generation", "Electric Power Generation",
                 "Electric Power Transmission; Control; and Distribution"],
    "country": ["US"],
    "jobLevel": ["C-Team", "VP", "Director"],
    "employeeRange": ["51-200", "201-500", "501-1000"]
  }' | jq '.meta'

meta.total is capped at 100,000, so a broad filter can read as exactly 100,000. Narrow it until the number is below the cap. The result also carries meta.distinctCompanies, which tells you how many employers the people span.

To size the companies, connect the MCP server and ask Claude for a company count. Try: "Use leadocean_count_companies for US oil and gas, utility and power companies with 51 to 1,000 employees." It is free too.

Use the company count to plan territory. On 21 October 2026 it put 1,914 of the 6,396 companies in Texas, nearly a third, with Louisiana and Oklahoma adding 525 more. If you sell to oil and gas, those three states are the place to start. Run the same count with only Utilities before you plan a utility territory, because its state split will differ. Then cut the list by state or by headcount band so each rep owns one slice.

The company count also shows NAICS codes. In this set the largest is 221118 (other electric power generation), then 213112 (support activities for oil and gas). The second code is service firms, not operators. If you sell to operators, read those accounts first and drop the ones that do not fit.

Step 4: Narrow to the committee

Add the function filter for the roles you picked in Step 1. Operations, engineering and procurement leaders at the same companies make a tight first list.

json
{
  "industry": ["Oil and Gas", "Oil and Energy", "Utilities",
               "Renewable Energy Power Generation", "Electric Power Generation",
               "Electric Power Transmission; Control; and Distribution"],
  "country": ["US"],
  "jobLevel": ["C-Team", "VP", "Director"],
  "jobFunction": ["Operations", "Engineering", "Purchasing", "Supply Chain & Logistics"],
  "employeeRange": ["51-200", "201-500", "501-1000"],
  "limit": 25
}

Run it as a normal search (no count) to pull the first 25 rows. That spends 25 records. Check titles and company names before you export more.

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

One search pages to 10,000 rows. If meta.depthCapped is true, split by headcount band or add a state filter instead of walking further.

Step 5: Export the list

For more than a few hundred rows, export instead of paging. The export body takes the search filters inside filters, plus a row limit, and every row costs one record. Exports take up to 50,000 rows a request and 500,000 a day. Bulk CSV export is not on the Free plan, so use the 25-row pull and the API for validation there.

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 energy committee",
    "filters": {
      "industry": ["Oil and Gas", "Utilities", "Renewable Energy Power Generation"],
      "country": ["US"],
      "jobLevel": ["C-Team", "VP", "Director"],
      "jobFunction": ["Operations", "Engineering", "Purchasing", "Supply Chain & Logistics"],
      "employeeRange": ["51-200", "201-500", "501-1000"]
    },
    "limit": 2500
  }'

You can also build the same export in the app at https://app.leadocean.io: filter builder, column picker, a price preview before you start, and a CSV download. The app has no sequencer or CRM, so load the CSV into the tool you already send from.

Read email_status on every row before sending. Bounced emails are not refunded.

Step 6: Enrich the people you will write to

Search returns the profile. Enrich returns the email and the career history for one person at a time, so run it only on the rows you will contact. It 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}'

Each enrichment costs one record. A person LeadOcean holds nothing for is a 404 and costs nothing. Career history comes back under resume_data: past roles, education and certifications. An operations director who came from a utility, or an engineer who moved from an operator to a developer, gives you a first line that is about them. Past employers carry no company_id yet.

Step 7: Match the message to the role

Energy buyers answer specific, technical and risk-aware messages. Lead with the operating problem, not the product.

  • Operations directors: downtime, safety and cost per unit. Name the cost of one unplanned outage day, if you have a source for it.
  • Engineering leads: fit with their standards and existing systems. Say what you integrate with and what you replace.
  • Procurement heads: contract terms, lead time and supplier risk. Offer a short vendor packet, not a call.
  • Executives: margin, regulatory exposure and capital timing. One sentence, one number you can prove.

Split the copy by sub-sector. A utility cares about reliability and rate cases. An oil and gas operator cares about field cost and commodity swings. A renewables developer cares about interconnection and project timelines.

Keep emails under 90 words, plain text, one question. Do not claim you saw their projects or filings unless you did. Use your own proof, not an invented stat.

What you get

This is the output of the free counts on 21 October 2026, run through the LeadOcean MCP tools. Counts include only addresses with verified, catch_all_valid or catch_all email status (the tool default).

QueryMailable peopleDistinct companiesWithout email filter
Six energy industries, US, C-Team or VP or Director, 51 to 1,000 employees35,5133,581118,304
Same, plus jobFunction Operations, Engineering, Purchasing or Supply Chain & Logistics2,6711,0098,685

In the first count, 16,949 people are in Oil and Gas and 16,418 in Utilities. Renewable Energy Power Generation holds 1,109. By headcount, 15,431 are at 51 to 200 employee firms, 9,020 at 201 to 500 and 11,062 at 501 to 1,000.

leadocean_count_companies for US companies in the same six industries with 51 to 1,000 employees returned 6,396 companies on 21 October 2026. Of these, 3,890 are Oil and Gas and 2,166 are Utilities. By state, Texas leads with 1,914, then California with 466 and Kentucky with 365.

The function cut leaves 2,671 mailable people at 1,009 companies. At 25 records a test pull, you can check the segment before committing to the rest.

The function cut holds 1,323 mailable people in Oil and Gas and 1,120 in Utilities. Renewable Energy Power Generation adds 122 and Electric Power Generation 75. By level it holds 1,679 directors, 758 VPs and 231 C-suite. That shape suits a director-led campaign, with VPs copied on the second touch.

Two cautions on the company count. Most of the companies sit in the 51 to 200 band (4,807 of 6,396), so expect small teams and short committees there. And Oil and Gas includes field service firms as well as operators, so read the first 25 company names before you write operator copy.

Response shape from the API reference (placeholder values, not a real person):

json
{
  "success": true,
  "data": [
    {
      "profile_data": {
        "profile_full_name": "Jane Doe",
        "profile_headline": "Director of Operations at Acme Energy"
      },
      "contact_data": {
        "has_email": true,
        "has_phone": false,
        "email_status": "verified",
        "contact_current_experiences": [
          { "company_name": "Acme Energy", "company_domain": "acme.com", "job_title": "Director of Operations" }
        ]
      },
      "meta": { "source_ids": { "person_id": "PERSON_ID" } }
    }
  ],
  "meta": { "nextCursor": "CURSOR", "depthCapped": false }
}

Troubleshooting

ErrorCauseFix
401Missing or wrong x-api-keyCheck $LEADOCEAN_API_KEY is exported and the header name is exact
429Above the plan's rate limit (5 requests a second on Free, 200 on Agency)Back off for the Retry-After seconds, then retry
402Out of records (Free is 1,000 for life)Counts and filter lookups stay free. Move to Solo ($97 a month) or Agency ($497 a month) to keep pulling
Empty dataAn industry or jobFunction string is not an exact enum valueResolve it with GET /v1/enums or leadocean_list_enum_values and copy it verbatim
meta.total stuck at 100,000The count is cappedAdd employeeRange, country or a function filter until it drops
Export refusedOver 50,000 rows a request or 500,000 a day, or Free planSplit the export by headcount band or state. Bulk CSV is not on Free

FAQ

How many energy contacts can I get for free?

The Free plan gives 1,000 records for life, with no card. Counting is free and unlimited, so you can size the full market first and spend records only on the sample.

Which industry values cover energy?

Energy is split across several strings, including Oil and Gas, Utilities, Renewable Energy Power Generation and Electric Power Generation. Resolve them with the free enum lookup before you search.

Should I target executives or engineers?

At firms under 200 people, the executive usually decides. Above that, go to operations, engineering and procurement directors, who run the evaluation. Use the count to compare the size of each group.

Does LeadOcean send the emails?

No. LeadOcean returns the data. Export the CSV and load it into your sender. Plans are on the pricing page.

Where do I see how other industries compare?

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

Size your energy list for free, then pull the first 25 rows

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

Get your free API key →