You find a venture capitalist's email by looking it up in a data source first and guessing from a name pattern only when the lookup is empty. A lookup returns an address someone has already checked. A guess is a coin flip you must verify.
VC addresses come from four places. A data provider holds a work address it collected and checked. The firm's site lists a shared inbox such as info@ or pitch@, which is rarely a partner's own. A name pattern gives you a guess. A personal address sits in some records but suits a first pitch poorly.
Only the first is worth building a process around. This guide follows that order and uses the LeadOcean API. Every step has a request you can run.
TL;DR
- It takes about 15 minutes to size the audience, find one investor's address and check its status.
- The walkthrough spends about 4 records: up to 3 from the search and 1 from the reveal. Counts are free.
- Send only to
verified,catch_all_validorcatch_all. Anything you guessed gets verified first.
Prerequisites
- A LeadOcean API key from app.leadocean.io. The free plan has 1,000 records, one-off, and no card.
- The key in your shell as
$LEADOCEAN_API_KEY. curlandjq.- A target firm domain. The examples use
acme.com.
export LEADOCEAN_API_KEY="paste-your-key-here"Step 1: Size the venture capitalist audience for free
Count how many investors you can mail before you spend a record. Send count=true and limit=1 as query parameters. Arrays go comma-separated.
curl -s -G https://api.leadocean.io/v1/people/search \
-H "x-api-key: $LEADOCEAN_API_KEY" \
--data-urlencode "title=Venture Capitalist" \
--data-urlencode "salesRegion=NORAM" \
--data-urlencode "emailStatus=verified,catch_all_valid,catch_all" \
--data-urlencode "count=true" \
--data-urlencode "limit=1" | jq '.meta | {total, totalIsExact, countOnly}'salesRegion takes NORAM, LATAM, EMEA or APAC. Swap in country=GB for one market. Titles at funds vary: Partner, Principal, Managing Director and Investor all appear. The literal title Venture Capitalist is the narrow cut, so widen it once you see the count.
Step 2: Find the investor at your target firm
Search by company domain and seniority. The search returns a thin row with no address in it. The row carries a person_id and flags that say whether we hold an email.
curl -s https://api.leadocean.io/v1/people/search \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"domain": ["acme.com"],
"seniority": ["partner", "founder"],
"limit": 3
}' | jq '.data[] | {person_id: .meta.source_ids.person_id, contact_data}'Each person returned costs 1 record. Keep limit small. Funds use partner far more than "venture capitalist" in titles, so the seniority filter catches more than a title keyword does. Read the title before you pick one.
Step 3: Reveal the address
Send the person_id to enrich with reveal_email set to true. Enrich takes exactly one of linkedin_url, email, phone or person_id. There is no name plus domain lookup, which is why Step 2 comes first.
curl -s 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_2", "reveal_email": true}' \
| jq '.data.contact_data | {email_status, contact_emails}'This costs 1 record. A person we hold nothing for is a 404 and costs nothing. GET /v2/people/email/work with the same person_id returns one current-employer address or null. It costs 1 record per call, even when it finds nothing.
Step 4: Read the status before you send
The status says how far to trust the address. verified was tested. catch_all_valid means we confirmed the mailbox on a domain that accepts everything. catch_all means the domain accepts everything and the mailbox is unproven.
curl -s 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_2", "reveal_email": true}' \
| jq -r '.data.contact_data
| select(.email_status | IN("verified","catch_all_valid","catch_all"))
| .contact_emails[0].email'Empty output means the status failed the filter. LeadOcean gives no refund for bounced emails, so this check is your only protection. Investors guard their inboxes and a bounce costs you sender reputation. Treat catch_all as sendable at low volume, not as proof.
Investors also answer on warm paths. A named intro from a founder they backed beats any cold address. Use the email when no intro exists, and make the first line about their portfolio, not your product. Keep it under 100 words and ask one question.
Step 5: Fall back to a name pattern
When the data holds no address, build candidates from the investor's name and the firm domain. Pick the shape you can confirm from a known address at the same firm.
| Pattern | Example for Jane Doe at Acme |
|---|---|
| first | jane@acme.com |
| first.last | jane.doe@acme.com |
| first initial, last | jdoe@acme.com |
| first initial dot last | j.doe@acme.com |
first="jane"; last="doe"; domain="acme.com"
printf '%s\n' "$first@$domain" "$first.$last@$domain" "${first:0:1}$last@$domain" "${first:0:1}.$last@$domain"Never send to a candidate you have not verified. Run each one through an email verifier you trust first. A domain that accepts all mail cannot confirm a single mailbox, so a guess there stays a guess.
What you get
Step 1 is free. We ran it on 2026-10-21 with leadocean_count_leads, title Venture Capitalist, for each sales region. The counts are mailable investors (verified, catch_all_valid or catch_all, the tool default), not everyone we hold.
| Region | Mailable venture capitalists | All matches, any email state | Exact |
|---|---|---|---|
| NORAM | 107 | 709 | Yes |
| EMEA | 22 | 196 | Yes |
| APAC | 55 | 366 | Yes |
| LATAM | 8 | 39 | Yes |
| All regions | 229 | 1,474 | Yes |
The gap between the two columns is the point. Most investors sit in the data without a checked address, so the mailable list is the smaller, safer one. The regions do not sum to the total because some records carry no region. This is the literal title only. Partners and principals at funds are a larger set: seniority partner with industry Venture Capital and Private Equity Principals counted 9,280 mailable (28,270 in all) on the same day.
A revealed person comes back in the shape below. This is the response shape from the API reference, with placeholder values.
{
"success": true,
"data": {
"profile_data": { "...": "name, title, company" },
"contact_data": {
"has_email": true,
"email_status": "verified",
"email_type": "work",
"contact_emails": [
{ "email": "jane.doe@acme.com", "type": "work", "status": "verified" }
]
}
}
}Troubleshooting
| Error | Cause | Fix |
|---|---|---|
| 401 | The x-api-key header is missing, or the key is wrong or revoked. | Copy a fresh key from the app and reload $LEADOCEAN_API_KEY. |
| 402 | Your records are spent. On Free the 1,000 are a one-off allowance and do not reset. | Check GET /v1/account, or move to a paid plan. |
| 429 | You went above your plan's rate limit: 5 requests a second on Free, 200 on Agency. | Wait the Retry-After seconds and retry. |
| Empty results | A filter value is not an exact enum string, such as north america for NORAM. | Call leadocean_list_enum_values for the filter and pass the exact string. |
| 404 on enrich | We hold nothing for that person. | Nothing was charged. Try another person_id or fall back to Step 5. |
| Export refused | One export is capped at 50,000 rows a request and 500,000 rows a day. | Split the job across requests and days, or narrow the filters. |
FAQ
Is it legal to email a venture capitalist you do not know?
Rules differ by country, and this guide is not legal advice. Check the law where your recipient sits and keep the message relevant to what they invest in. Ask your own counsel about anything in doubt.
Why does the search not show the email?
Search returns a thin row with flags such as has_email and email_status. The address comes from enrich with reveal_email set, and that call costs 1 record.
How many investors can I get on the free plan?
You have 1,000 records, one-off. Each investor costs about 2: 1 from search and 1 from the reveal. That is roughly 500 investors, minus any 404s that cost nothing.
Can I pull a whole region at once?
Bulk CSV export is not on Free. On a paid plan the Exports page in the app takes the same filters, shows the record price before you start, and gives you a CSV. POST /v1/exports does the same by API, up to 50,000 rows a request.
What if the investor uses a personal address?
Enrich can return a personal address when we hold one, flagged by email_type. Work addresses are the safer default for a first message.
For the same recipe on other roles, see VP of Sales, VP of Marketing and VP of Engineering. More recipes live in the blog hub. Plans are on pricing.
Size your venture capitalist list free, then pull verified addresses
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →