You sell to a CEO by making one sentence about the business easy to forward, then sending it to a person you counted first. This guide covers what a CEO cares about, who sits beside them, how many are reachable by region, and four first lines.
TL;DR
- A CEO buys outcomes the board will ask about: growth, margin, risk and speed. Skip features. Lead with one number tied to one of those four.
- Count first, send second. On 2026-10-21 LeadOcean showed 533,889 mailable people with a C-Team job level and "CEO" in the title across four sales regions, 334,375 of them in NORAM.
- The recipe takes about 25 minutes and spends about 26 LeadOcean records. Every count is free.
Prerequisites
- A free LeadOcean account and an API key from app.leadocean.io. Free gives you 1,000 records for life, no card, 5 requests a second.
- The key in your shell as
$LEADOCEAN_API_KEY. curlandjq.- Optional: Claude or any MCP client connected to
https://api.leadocean.io/mcp, which has 13 tools including free counts.
What a CEO actually cares about
A CEO is judged on whether the company grows, makes money and survives. Everything they read passes that filter, and most of it fails.
They care about four things.
- Growth. Revenue, new markets and new customers. Anything that adds pipeline without adding headcount gets a second look.
- Margin. Cost per dollar earned. A tool that cannot show what it saves or earns is a line item waiting to be cut.
- Risk. Churn, a missed quarter, a bad hire, a data problem that reaches the board. They avoid new risk and pay to remove old risk.
- Speed. How long before the change shows up. A CEO will take a smaller result in a month over a larger one in a year.
They do not read feature lists. They read a sentence tied to one of these four, and they read it in about ten seconds.
What kills the deal
CEOs rarely say no to the product. They say no to the ask. Answer these in the first email.
- "Send it to my VP." Often the right outcome. Ask who, and use the CEO's name in the forward.
- "We have a vendor for that." Do not argue. Ask what the vendor cannot do in the next ninety days.
- "No time." Make the ask smaller. One question, one number, a reply of one line.
- Too long. A CEO email over 90 words reads as a pitch to a junior. Cut it.
Where a CEO sits in the buying committee
A CEO is usually the final approver, not the evaluator. In a company under about 50 people they are often all of the committee. Above that, the people around them decide what reaches their desk.
- The functional head (VP of Sales, VP of Marketing, VP of Engineering) owns the problem and brings the CEO a recommendation. See how to sell to a VP of Marketing and how to sell to a VP of Engineering.
- The CFO or finance lead checks the cost and the contract before the CEO signs.
- RevOps or an operations lead vets integration, data quality and risk.
- People and talent leads matter when the buy changes hiring. See how to sell to a recruiter.
In a small company, write to the CEO as the buyer. In a larger one, write to the CEO only when the idea is strategic or when you have a count that makes the point. Otherwise write to the functional head and make the forward easy.
Step 1: Count CEOs by region (free)
Start with a count. It spends zero records and tells you whether the region is worth a campaign.
leadocean_count_leads counts mailable people by default: verified, catch_all_valid and catch_all addresses. Run it from any MCP client. The filter below uses jobLevel C-Team and the title keyword CEO, so it also matches titles that contain "CEO", such as "Co-CEO".
{
"tool": "leadocean_count_leads",
"arguments": {
"jobLevel": ["C-Team"],
"title": ["CEO"],
"salesRegion": ["NORAM"],
"facets": false
}
}Repeat with EMEA, APAC and LATAM. Enum values are exact strings, so check them with leadocean_list_enum_values if a count comes back empty. For one country, use country with an ISO code such as ["DE"].
Step 2: Read the count for each region
Put the counts in one table before you pick a market. These ran on 2026-10-21 with jobLevel: ["C-Team"], title: ["CEO"] and the default mailable email statuses.
| Region | Mailable | Employers covered | All matches (any email status) |
|---|---|---|---|
| NORAM | 334,375 | about 215,614 | 1,268,341 |
| EMEA | 123,326 | about 101,111 | 693,555 |
| APAC | 49,416 | 38,624 | 336,028 |
| LATAM | 26,772 | 22,910 | 187,833 |
Read three things from this. NORAM is 63% of the mailable list across the four regions (334,375 of 533,889). EMEA is the second market and APAC and LATAM are each a separate, smaller one. And the last column shows how much of each region you would mail blind: in NORAM, 1,268,341 match but only 334,375 are mailable.
The "about" employer figures are estimates. The count is mailable people, not companies, so one company can appear more than once when it has co-CEOs or several people with CEO in the title.
Step 3: Pull a sample from your best region
Pull 25 rows from the region you picked. This spends 25 records. Search is a flat JSON body, filters are arrays, and limit runs from 1 to 100.
curl -s -X POST https://api.leadocean.io/v1/people/search \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"jobLevel": ["C-Team"],
"title": ["CEO"],
"salesRegion": ["EMEA"],
"employeeRange": ["51-200", "201-500"],
"emailStatus": ["verified"],
"limit": 25
}' | jq '.data[] | {name: .profile_data.profile_full_name, person_id: .meta.source_ids.person_id}'Add the company-size filter first. A CEO at 20 people and a CEO at 5,000 are different buyers. Page with the cursor value from meta. One search pages to 10,000 rows, so narrow the filters instead of walking the whole index.
Step 4: Enrich one record to read the career history
Before you write, read one profile. Person enrich returns career history: past roles, education, certifications and awards. Past employers carry no company_id yet.
Enrich takes exactly one of linkedin_url, email, phone or person_id. Use the person_id a step 3 row carries at meta.source_ids.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_STEP_3", "reveal_email": true}' \
| jq '.data.resume_data.experiences[0:3]'This costs one record. A person we hold nothing for returns a 404 and costs nothing.
Look for the path. A founder-CEO thinks in product and runway. A CEO who came up through sales thinks in pipeline. A CEO hired from a larger company in the last year is building a plan and is open to new vendors.
Step 5: Write the first line
The first line must show you know the business. Pick one of these four angles and keep the email under 90 words.
1. Growth: "Acme's team could reach {N} more buyers in {region} without a new hire. Want the count?"
2. Margin: "How many hours a week does your team spend building lists? I can show what that costs per quarter."
3. Risk: "Bounced mail hurts your domain before it hurts your pipeline. How do you check addresses today?"
4. Territory: "I counted {N} mailable CEOs in {region} on {date}. Want the list?"The territory line works because it is checkable. You ran a free count, so the number is real. Send it with the count and the date.
Match the angle to the region. A NORAM CEO at a small company often owns pipeline, so lead with growth. An EMEA CEO often runs several countries, so lead with territory. A founder-CEO reads risk and margin faster than a hired one.
These are starting points from how the segments are shaped, not measured results. Do not claim a reply rate you have not measured. Test two angles on 100 contacts each and keep the winner.
Step 6: Save the list as a CSV
When the sample converts, export the list. Bulk CSV export is not on the Free plan. Solo ($97 a month) includes it, and Agency ($497 a month) exports 50k rows a file. The ceiling is 50,000 rows a request and 500,000 rows a day.
curl -s -X POST https://api.leadocean.io/v1/exports \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "ceo-list",
"filters": {
"jobLevel": ["C-Team"],
"title": ["CEO"],
"salesRegion": ["EMEA"],
"employeeRange": ["51-200", "201-500"],
"emailStatus": ["verified"]
},
"limit": 5000
}'Search filters go inside filters, and limit sets the row count. Poll GET /v1/exports/{id} until the file is ready.
You can build the same export in the app at app.leadocean.io. The Exports page has a filter builder, a column picker and a price preview before you download. See pricing for the plans.
What you get
The count in step 1, run on 2026-10-21 with jobLevel: ["C-Team"], title: ["CEO"] and salesRegion: ["EMEA"], returned:
{
"total": 123326,
"totalIsExact": true,
"totalAll": 693555,
"distinctCompanies": 101111,
"credits": 0
}total is the mailable count. totalAll is everyone matching without the email filter. The call cost no records.
A search row follows the response shape from the API reference, shown here with placeholder values. Rows carry no addresses; enrich by person_id for those.
{
"success": true,
"data": [
{
"profile_data": { "profile_full_name": "Jane Doe", "profile_headline": "CEO at Acme" },
"contact_data": {
"has_email": true,
"email_status": "verified",
"email_type": "work",
"contact_current_experiences": [
{ "job_title": "CEO", "company_name": "Acme", "company_domain": "acme.com" }
]
},
"meta": { "source_ids": { "person_id": "1234567890", "person_group_id": "1234567890" } }
}
],
"meta": { "count": 1, "nextCursor": "..." }
}Troubleshooting
| Error | Cause | Fix |
|---|---|---|
| 401 | Missing or wrong x-api-key header | Check $LEADOCEAN_API_KEY is set in this shell and sent as x-api-key. |
| 429 | Above the plan's rate limit (5 a second on Free, 200 on Agency) | Honor Retry-After, or pace the loop. |
| 402 | Out of records | The Free plan's 1,000 records are one-off. Move to Solo ($97 a month) or Agency ($497 a month). |
Empty data | A filter value does not match an exact enum string | Check values with leadocean_list_enum_values. Case matters (C-Team, not c-team, for jobLevel). |
| Export refused | The request is over 50,000 rows, or the day is over 500,000 rows | Split the export by region or company size, and spread it over days. |
FAQ
How do I find a CEO's email address?
Search by title, region and company size, then read email_status before you send. Enrich with reveal_email set to true returns the address for one person at one record. Send only to verified addresses first.
Should I email the CEO or the VP who owns the problem?
In a company under about 50 people, email the CEO. In a larger one, email the functional head and write the forward for them. Email the CEO directly only when you have a strategic point or a count that makes it.
How long should a cold email to a CEO be?
Under 90 words, with one question. A CEO will answer a question of one line and ignore a pitch of five paragraphs.
How many CEOs can I reach by email?
On 2026-10-21, the filter in this guide counted 533,889 mailable people across NORAM, EMEA, APAC and LATAM. Your number depends on your size, industry and region filters, so run the free count.
Does the Free plan cover this recipe?
Yes, up to step 5. The counts are free and the sample and one enrichment spend about 26 of the 1,000 records. Bulk CSV export in step 6 needs Solo or Agency.
More role playbooks are in the blog.
Count the CEOs in your market before you write the first email
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →