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 Edtech (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.

Edtech sells to three different buyers: schools and districts, universities, and companies that train their own staff. Each has its own committee, calendar and budget, so you build one list per buyer.

This guide picks the committee, finds it with LeadOcean filters, sizes the list with a free count and drafts the first message for each role.

TL;DR

  • Split the market into K-12 and districts, higher education, and corporate learning. Never write one message for all three.
  • Size first with a free count. On 2026-10-21, the two e-learning industries held 43,905 mailable VPs, directors and C-level people across 12,608 companies.
  • 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

Edtech deals are rarely signed by the person who wants the product. Name the roles before you touch a filter.

BuyerEconomic buyerChampionGatekeeper
School or districtSuperintendent, CFO, chief academic officerDirector of curriculum or instructional technologyIT director, procurement, data privacy lead
University or collegeProvost, CIO, VP of student successDean, director of online learningIT security, procurement
Corporate learningCHRO, VP PeopleHead of learning and developmentIT, finance

Public buyers run on fiscal years and board meetings. Corporate buyers run on quarters. Check each district's or university's fiscal year on its own site and reach out well before the budget is set.

LeadOcean has no "edtech" industry value, and it files schools under industries like Higher Education and Primary and Secondary Education. The vendors that sell to them sit mostly under E-Learning Providers and E-learning. Look up the exact strings before you use them.

bash
curl -s "https://api.leadocean.io/v1/enums/industry?limit=500" \
  -H "x-api-key: $LEADOCEAN_API_KEY" | jq -r '.data.values[]' | grep -iE "learn|educat|school|training"

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 with one value.

This first set targets the buyers of other edtech vendors: the e-learning companies themselves, useful if you sell a tool to edtech teams.

json
{
  "industry": ["E-Learning Providers", "E-learning"],
  "jobLevel": ["C-Team", "VP", "Director"],
  "employeeRange": ["51-200", "201-500", "501-1000"],
  "country": ["US"]
}

If you sell to schools, swap the industry. Use Higher Education for universities and Primary and Secondary Education for districts, and add the function filter.

json
{
  "industry": ["Higher Education"],
  "jobFunction": ["Education", "Information Technology"],
  "jobLevel": ["C-Team", "VP", "Director"],
  "country": ["US"]
}

Keep the three segments in separate lists. The pitch, the title mix and the buying calendar all differ.

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": ["E-Learning Providers", "E-learning"],
    "jobLevel": ["C-Team", "VP", "Director"],
    "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, plus meta.distinctCompanies.

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 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": ["E-Learning Providers", "E-learning"],
    "jobLevel": ["C-Team", "VP", "Director"],
    "employeeRange": ["51-200", "201-500"],
    "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.

Send to verified and catch_all_valid addresses first. LeadOcean does not credit back bounces, so read email_status before you send.

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 and certifications. A director of instructional technology who used to teach is a better opener than a job title. Past employers carry no company_id yet. 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

Education buyers answer to outcomes, budgets and privacy review, not features. Open with the problem they have this term.

BuyerTheir pressureFirst line angle
District CFOBudget cycles, funding expiryCost per student and when the line item renews
Curriculum directorTeacher adoption, standardsA pilot that fits one grade or course
University provostRetention, enrollmentOne retention metric for one program
L&D headCompletion, time to skillHours saved per employee
IT or privacy leadData handling, integrationsPlain answers on data use and SSO

Keep the email under 80 words. Say who else in education uses the product only if you have an approved reference.

Plain example for a curriculum director:

text
Subject: One course pilot for spring

Hi Jane,

Acme Learning helps instructional teams pilot a tool in one course before
a district decision. Setup takes a week and needs no new rostering.

Open to a 15-minute call before the budget meeting?

Names, domain and subject are placeholders. Use your own product and a claim you can back up.

Step 7: Split the list into three campaigns

Do not send one message to the whole list. Run each buyer type on its own copy.

  1. Schools and districts. Industry Primary and Secondary Education. Target superintendents, CFOs, curriculum and IT directors. Send ahead of budget season.
  2. Colleges and universities. Industry Higher Education. Target provosts, deans, CIOs and online-learning directors. Lead with a program-level result.
  3. Corporate learning and edtech vendors. Industry E-Learning Providers and E-learning, plus the L&D function. Budgets follow the company's own planning cycle.

Run the count again for each segment. The totals will not add up to the combined list, because a person can match more than one filter set. Use the combined count for planning and the segment counts for sending.

To sell outside the US, swap country for another ISO code, such as GB or AU, and count again. Industry labels are the same worldwide, but school systems are not, so check titles on a test batch before you write copy.

Step 8: Rank accounts before you send

A list of thousands is too many to write by hand. Rank accounts and send to the top group first.

  • Count people per company in the test batch. An account with three matching titles is a committee you can reach from several sides.
  • Prefer a work email marked verified. It bounces less than a catch-all address.
  • Use GET /v1/companies/{domain}/people for your top accounts. It lists the other people at one domain, so you can fill the missing roles in a committee.
  • Drop accounts where the only match is a Staff or Other level title.

Send in batches of 50 to 100 and read the replies. If replies cluster on one role, shift the next batch toward it.

What you get

Output of leadocean_count_leads on 2026-10-21 for the industries E-Learning Providers and E-learning with jobLevel C-Team, VP and Director. The count includes only people whose best email is verified, catch_all_valid or catch_all.

json
{
  "total": 43905,
  "totalIsExact": true,
  "totalAll": 161183,
  "distinctCompanies": 12608,
  "unsupportedFilters": []
}

Add employeeRange of 51-200, 201-500 and 501-1000 and country US. The same count on the same date narrows to this:

json
{
  "total": 6130,
  "totalIsExact": true,
  "totalAll": 15230,
  "distinctCompanies": 735
}

That is a 6,130-person mailable list at 735 mid-sized US companies. The free company count for US-headquartered companies in the same industries and size bands returned 1,805 on 2026-10-21, led by California (320), New York (137) and Texas (119).

The buyer segments from Step 7 were counted the same way on 2026-10-21. Filters: US, jobFunction Education or Information Technology, jobLevel C-Team, VP or Director, default mailable counting. The vendor row has no function filter.

SegmentIndustryMailable peopleOrganizationsAll people, no email condition
Colleges and universitiesHigher Education81,1105,203139,645
Schools and districtsPrimary and Secondary Education22,2275,69551,249
Edtech vendors, mid-sizeE-Learning Providers, E-learning6,13073515,230

Universities average about 16 mailable leaders per organization in this count. Schools and districts average about 4. Plan for several contacts per account in higher education, and one or two per account for schools.

Two cautions on these numbers. Primary and Secondary Education covers private schools and school groups as well as public districts, so read the first 25 rows before you write district copy. Higher Education includes community colleges and for-profit schools, which buy on different terms from research universities. Neither label tells you which is which, so tag the accounts by hand after the test batch.

Record shape, from the API reference (placeholder values):

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

Troubleshooting

ErrorCauseFix
401Missing or wrong x-api-key headerCheck $LEADOCEAN_API_KEY is exported and sent in the x-api-key header
429More than the plan's rate limit (5 requests a second on Free, 200 on Agency)Wait for the Retry-After seconds, then retry slower
402The 1,000 Free records are spentMove to a paid plan or reduce the pull; counts still work
Empty resultsAn enum value is not an exact string, such as "Education" for industryResolve the value with list_enum_values first
unsupported_filters on a countA filter like fundingType or hqCity is not supported in people countsDrop it and count without it
meta.depthCapped: trueOne search stops at 10,000 rowsSplit by country or headcount band

FAQ

Is there an edtech industry filter?

No. LeadOcean has 534 industry values and none is called edtech. Use E-Learning Providers and E-learning for vendors, Higher Education and Primary and Secondary Education for buyers, then check the title mix on a 25-row batch.

Which segment should I start with?

Start with the one you already close. Districts and universities buy on a fiscal year, so begin outreach well before their budget decisions.

How many records does this cost?

About 30: 25 for the test batch and a handful of enrichments. Counts, enum lookups and GET /v1/companies/count are free.

Why is the mailable count so much lower than totalAll?

The default count keeps only people whose best email is verified, catch_all_valid or catch_all. totalAll is the same filters with no email condition. In higher education the gap is wide: 81,110 mailable against 139,645 in all on 2026-10-21. The rest have no address worth sending to, or none on file. Do not pad the list with them. Write to the mailable people first, and reach the rest another way if the account matters.

Can I download the whole list as a CSV?

Yes, on a paid plan. Bulk CSV export is not on Free. Solo is $97 a month and Agency is $497 a month, both with a fair-use pace instead of credits. See pricing.

Count your edtech buyers free, then pull only the ones you will email

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

Get your free API key →