Aviation is three markets that share a word: airlines and operators, component makers and MROs, and flight schools. Each has its own committee, so you build one list per market.
This guide picks the roles, finds them with LeadOcean filters, sizes the list with a free count and drafts the first message for each.
TL;DR
- Target operators, component makers and training providers separately. Buying cycles, titles and budgets differ.
- Size first with a free count. On 2026-10-21, five aviation industries held 151,331 mailable C-level, VP and director contacts across 16,196 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. curlandjq, 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
Aviation purchases go through safety, compliance and procurement. Name the roles before you touch a filter.
| Market | Economic buyer | Champion | Gatekeeper |
|---|---|---|---|
| Airline or operator | COO, VP Operations | Director of maintenance, fleet or IT | Procurement, safety and compliance |
| Component maker or MRO | VP Operations, VP Supply Chain | Director of engineering or quality | Purchasing, quality assurance |
| Flight training provider | Owner, CEO | Chief pilot, director of training | Finance |
Aviation sales cycles run long and need a technical champion. The champion is usually in operations or engineering, not in sales.
LeadOcean has no single "aviation" value. Look up the exact industry strings first. Do not guess: enum values are exact.
for q in aviation airline flight aerospace; do
curl -s "https://api.leadocean.io/v1/enums/industry?q=$q" \
-H "x-api-key: $LEADOCEAN_API_KEY" | jq -r '.data.values[]'
doneOn 2026-10-21 the lookup returned Airlines and Aviation, Airlines/Aviation, Aviation and Aerospace, Aviation and Aerospace Component Manufacturing and Flight Training. 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.
{
"industry": [
"Airlines and Aviation",
"Airlines/Aviation",
"Aviation and Aerospace",
"Aviation and Aerospace Component Manufacturing",
"Flight Training"
],
"jobLevel": ["C-Team", "VP", "Director"],
"employeeRange": ["201-500", "501-1000", "1001-5000"],
"country": ["US"]
}Add jobFunction when one product has one owner. A predictive-maintenance tool sells to Operations and Engineering. A parts marketplace sells to Purchasing and Supply Chain & Logistics.
Check the sample before you trust the industry label. The Airlines and Aviation value is broad, and some companies filed under it are not aircraft businesses. In the free company count on 2026-10-21, 84,306 of the 113,740 companies under the five values carried NAICS code 484121, long-distance trucking. A 25-row test batch in Step 4 shows how clean your segment is.
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.
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": ["Airlines and Aviation","Airlines/Aviation","Aviation and Aerospace","Aviation and Aerospace Component Manufacturing","Flight Training"],
"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. The MCP tool leadocean_count_leads returned the figures below, some above that cap.
For the company side, GET /v1/companies/count returns an exact total with breakdowns by industry, headcount band and HQ country. It is free too.
Step 4: Pull a 25-row test batch
Pull a small batch first. Read the titles and companies. If a fifth of them are off-segment, tighten the filters before you spend more.
curl -s "https://api.leadocean.io/v1/people/search" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "content-type: application/json" \
-d '{
"industry": ["Aviation and Aerospace","Aviation and Aerospace Component Manufacturing"],
"jobFunction": ["Operations","Engineering","Supply Chain & Logistics","Purchasing"],
"jobLevel": ["VP","Director"],
"employeeRange": ["201-500","501-1000","1001-5000"],
"limit": 25
}' > batch.json
jq '.data | length' batch.jsonA 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.
Read email_status before you send. Send to verified and catch_all_valid. 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.
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 returns career history in resume_data: past roles, education and certifications. A prior role at an airline or an engineering certification is 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
Aviation buyers answer to safety, uptime and regulators. Open with the operating problem, not your product.
| Buyer | Their pressure | First line angle |
|---|---|---|
| Airline COO or VP Operations | Aircraft on ground, crew and schedule disruption | One concrete way you cut downtime or delay |
| MRO or component maker, VP Supply Chain | Lead times and parts availability | Shorter sourcing time on a named part class |
| Director of engineering or quality | Audit load and documentation | Less manual paperwork, same traceability |
| Flight school owner | Student pipeline and fleet cost | More enquiries or lower cost per student |
Keep the first email under 90 words. Name the role, one pressure and one question. Skip claims about safety or regulation you cannot back.
Send by segment, not to the whole list. A message to MRO purchasing should never reach an airline CFO.
Step 7: Split the list into three sends
One list per market keeps the message honest. Save each filter set as its own JSON file and name it after the buyer.
mkdir -p lists
cat > lists/operators.json <<'JSON'
{"industry":["Airlines and Aviation","Airlines/Aviation"],"jobFunction":["Operations","Engineering"],"jobLevel":["C-Team","VP","Director"],"employeeRange":["501-1000","1001-5000","5001-10000"],"limit":25}
JSON
cat > lists/suppliers.json <<'JSON'
{"industry":["Aviation and Aerospace Component Manufacturing","Aviation and Aerospace"],"jobFunction":["Purchasing","Supply Chain & Logistics","Engineering"],"jobLevel":["VP","Director"],"employeeRange":["201-500","501-1000","1001-5000"],"limit":25}
JSON
cat > lists/schools.json <<'JSON'
{"industry":["Flight Training"],"jobLevel":["C-Team","VP","Director","Manager"],"limit":25}
JSONRun the free count on each file before you pull rows. Drop any list whose count is too small to justify a campaign, and merge it into a neighbour.
Aerospace manufacturing and airline operations are not the same market. An aircraft maker buys tooling and materials. An airline buys maintenance, software and ground services. Do not send one pitch to both.
Step 8: Check the list before you send
Run three checks on the test batch. They take five minutes and save a bounced campaign.
- Titles: scan for the wrong function, such as sales roles in a list meant for operations.
- Companies: remove any employer that is not an aircraft, parts or training business.
- Email status: keep
verifiedandcatch_all_valid, and hold the rest back.
When the batch is clean, pull the rest with the same filters and the cursor. Spend records only on the rows you will actually send to. If you want a CSV for another tool, use POST /v1/exports (not on Free) or the Exports page at app.leadocean.io, which shows the record price before you start.
What you get
The free counts below ran on 2026-10-21 through the MCP tools leadocean_count_leads and leadocean_count_companies. Counts spend no records. The people counts are mailable (verified, catch_all_valid or catch_all).
| Filter | Mailable people | Employers |
|---|---|---|
| Five aviation industries, C-Team, VP, Director | 151,331 (518,295 without the email condition) | 16,196 |
| Same, US, 201 to 5,000 employees | 14,225 (38,523 without the email condition) | 767 |
| Aviation and Aerospace plus Component Manufacturing, VP and Director in Operations, Engineering, Purchasing, Supply Chain & Logistics, 201 to 5,000 employees | 1,577 (4,026 without the email condition) | 292 |
The company count for the same five industries was 113,740 companies. Most are small: 69,908 have 1 to 10 employees. The headcount filter does real work here.
A search row looks like this. Response shape from the API reference, placeholder values:
{
"success": true,
"data": [
{
"profile_data": {
"profile_full_name": "Jane Doe",
"profile_headline": "VP Operations at Acme"
},
"contact_data": {
"has_email": true,
"email_status": "verified",
"contact_current_experiences": [{
"job_title": "VP Operations",
"company_name": "Acme",
"company_domain": "acme.com"
}]
}
}
],
"meta": { "count": 1, "limit": 25, "credits": 1, "nextCursor": "CURSOR", "depthCapped": false }
}Troubleshooting
| Error | Cause | Fix |
|---|---|---|
| 401 | Missing or wrong x-api-key header | Check $LEADOCEAN_API_KEY is exported and sent as x-api-key. |
| 429 | Above the plan's rate limit (5 requests a second on Free, 200 on Agency) | Wait for the Retry-After header, then slow the loop. |
| 402 | The 1,000 Free records are spent | Move to Solo ($97 a month) or Agency ($497 a month). Counts stay free. |
| Empty results | A bad enum value, such as Aviation for the industry | Look the value up with GET /v1/enums/industry?q=... or leadocean_list_enum_values. |
meta.depthCapped: true | One search reached 10,000 rows | Narrow by country, function or headcount and search again. |
| Export refused | A request above 50,000 rows, or above 500,000 rows a day | Split the export by country or headcount. Bulk CSV is not on Free. |
FAQ
Is there an aviation industry filter?
There are five related industry values, not one. Use Airlines and Aviation, Airlines/Aviation, Aviation and Aerospace, Aviation and Aerospace Component Manufacturing and Flight Training. Resolve them with leadocean_list_enum_values.
How many aviation contacts will the Free plan cover?
The Free plan gives 1,000 records for life, no card. This recipe spends about 30, so most of the allowance stays for a real campaign. Counts and filter lookups spend nothing.
Can I reach pilots or airport staff?
Search by title and industry, for example a chief pilot or director of ground operations. Check the test batch first, because many frontline roles carry no work email.
How much does a bigger list cost?
Solo is $97 a month and Agency is $497 a month, with a fair-use pace instead of credits. Solo includes bulk CSV export. See /pricing.
Related reading
- Lead generation for Web3
- Lead generation for travel
- Lead generation for telecom
- LeadOcean pricing
- All guides on the LeadOcean blog
Count your aviation 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 →