You source founders with a data API by sizing the pool first, pulling only new companies, reading each founder's history, and re-running the same query on a schedule. LeadOcean is monthly data, not a tick-by-tick feed. That is enough for sourcing, because founders do not change employers hourly.
This guide is the short version. Every step is a request you can run against https://api.leadocean.io. The company and founder examples use placeholders.
TL;DR
- It takes about 30 minutes: one free sizing call, one company search, one founder lookup, one career read.
- The walkthrough spends about 20 records. Counts, filter lists and empty enrichments are free.
- "Live" here means a monthly refresh plus a
fetched_atdate on each record. There are no webhooks, so you poll.
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 thesis you can write as filters: a country, a founding year, a headcount band and a keyword.
export LEADOCEAN_API_KEY="paste-your-key-here"Step 1: Size the sourcing pool for free
Count the companies that match your thesis before you pull a single row. GET /v1/companies/count takes the company-search filters, returns an exact total, and costs nothing. Each filter is a query parameter.
curl -s -G https://api.leadocean.io/v1/companies/count \
-H "x-api-key: $LEADOCEAN_API_KEY" \
--data-urlencode "hqCountry=US" \
--data-urlencode "minFounded=2025" \
--data-urlencode "employeeRange=1-10" \
--data-urlencode "keywords=artificial intelligence" \
| jq '.data | {total, totalIsExact, states: .facets.hq_state[0:3]}'The breakdown by industry, headcount band, HQ country and HQ state tells you where the pool sits before you spend anything. Narrow until the total is a list you would read. Free people counts do not take funding filters, so this guide sizes the pool without them and applies them in Step 2.
Step 2: Pull the new companies
Search companies with the same filters. The body is flat JSON, filters are arrays, and limit runs from 1 to 100. Each company returned costs 1 record, so keep limit at 5 while you test.
curl -s https://api.leadocean.io/v1/companies/search \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"hqCountry": ["US"],
"minFounded": 2025,
"employeeRange": ["1-10"],
"keywords": ["artificial intelligence"],
"fundingType": ["Pre seed", "Seed"],
"minLastFundingYear": 2025,
"limit": 5,
"fields": ["company_data.company_name", "company_data.company_domain"]
}' | jq '{rows: .data, next: .meta.nextCursor}'fundingType values are exact strings from leadocean_list_enum_values, such as Pre seed, Seed and Series A. A company with no funding figure on file is never returned by a funding filter, so a newly formed company that has not been recorded yet will not appear. Run the same query without the funding keys to catch those.
To page, pass meta.nextCursor back as cursor. One search pages to 10,000 rows, then meta.depthCapped turns true. Narrow the filters instead of walking further.
Step 3: Find the founders at each company
List the people at one domain, filtered to founders. The result is a thin row with a person_id. Pass the domain without https://.
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": ["founder", "owner"],
"limit": 5
}' | jq '.data[] | {person_id: .meta.source_ids.person_id, headline: .profile_data.profile_headline}'Each person returned costs 1 record. seniority takes lowercase values such as founder, owner and c_suite. If the company has no founder tagged, repeat with jobLevel set to ["C-Team"].
Step 4: Read the founder's career history
Enrich the founder by person_id. Since October 2026 the response carries resume_data: past roles, education, certifications, awards and more, each when we hold it. This is the pedigree check most sourcing workflows want.
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_3"}' \
| jq '.data.resume_data | {experiences, educations}'Enrich takes exactly one of linkedin_url, email, phone or person_id. A founder we hold nothing for is a 404 and costs nothing. Past employers carry no company_id yet, so match them by name, not by joining to company records.
Step 5: Re-run it every month
The dataset refreshes monthly, and each record carries its own fetched_at date. Keep the Step 1 request in a scheduled job and compare the total with last month's. A jump means new companies fit the thesis, so run Step 2 again and keep the rows you have not seen.
curl -s -G https://api.leadocean.io/v1/companies/count \
-H "x-api-key: $LEADOCEAN_API_KEY" \
--data-urlencode "hqCountry=US" \
--data-urlencode "minFounded=2025" \
--data-urlencode "employeeRange=1-10" \
--data-urlencode "keywords=artificial intelligence" \
| jq -r --arg d "$(date +%F)" '"\($d),\(.data.total)"' >> pool-size.csvCrustdata documents Watcher APIs with webhooks for founder moves and new stealth companies on its venture capital page (checked October 2026, source). LeadOcean has no webhooks. If you need an alert the same hour, that is the gap. If a monthly diff is fast enough, polling a free count costs nothing.
You can run the same flow from an AI client. The hosted MCP server at https://api.leadocean.io/mcp exposes 13 tools, and leadocean_count_companies and leadocean_count_leads are free. Sign-in is OAuth, so no key is pasted.
What you get
Step 1 is free. We ran it on 2026-10-21 with leadocean_count_companies: HQ in the US, founded 2025 or later, 1-10 employees, keyword "artificial intelligence".
| Count | Result | Exact |
|---|---|---|
| Matching companies | 2,728 | Yes |
| Top HQ state | California, 528 | Yes |
| Next states | Texas 240, Florida 216, New York 185 | Yes |
We then ran leadocean_count_leads with seniority set to founder on the same company filters. It returned 252 people with a verified, catch_all_valid or catch_all email, across 236 distinct companies. That is the mailable count. Without the email condition the same filters match 874 founders. The seniority breakdown in that response labels all 252 as owner, so read titles on the sample before you trust the band.
A founder comes back in the shape below. This is the response shape from the API reference, with placeholder values.
{
"success": true,
"data": {
"profile_data": {
"profile_full_name": "Jane Doe",
"profile_headline": "Founder at Acme"
},
"contact_data": {
"has_email": true,
"email_status": "verified",
"contact_current_experiences": [ { "...": "current role at acme.com" } ]
},
"resume_data": {
"experiences": [ { "...": "title, company name, start and end dates, job level" } ],
"educations": [ { "...": "school, degree" } ]
}
}
}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 seed for Seed or United States for US. | Call leadocean_list_enum_values for the filter and pass the exact string. |
meta.depthCapped is true | One search pages to 10,000 rows and then stops. | Narrow the filters, for example by state or founding year. |
| Export refused | One export is capped at 50,000 rows a request and 500,000 a day. Bulk CSV is not on Free. | Split the job, or narrow the filters. |
FAQ
Is LeadOcean real-time data?
No. The dataset refreshes monthly and each record shows its own fetched_at date. For sourcing that cadence is enough. For an alert the moment someone leaves a job, you need a vendor with webhooks.
Does it include funding rounds and investors?
Company search takes fundingType, minFunding, minLastFundingYear and investors, but only for records where we hold the figure. Free people counts do not support these filters, so size founders without them.
How many founders can I review on the free plan?
You have 1,000 records, one-off. A company, a founder row and a career read cost about 3 records per company. That is roughly 300 companies, minus any 404s that cost nothing.
Can I get a whole thesis as a file?
Yes, on a paid plan. The Exports page in the app takes the same filters and shows the record price first. POST /v1/exports does the same by API, up to 50,000 rows a request.
For the contact side of the same job, see how to find a venture capitalist's email. To compare vendors, see best B2B databases and best B2B data providers in the UK. Plans are on pricing.
Size your founder sourcing pool free, then pull the companies that fit
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →