You get a Clay table where each row is a company with an open role that matches your ICP. LeadOcean adds the person who owns that problem, with title, seniority and email status, and the row moves to your sequencer. Clay's template scrapes job openings, writes personalized emails and adds prospects to Instantly (Clay template, September 2026). This recipe swaps the contact step for LeadOcean.
LeadOcean does not hold job postings. The hiring signal comes from Clay. LeadOcean answers the next question: who do I write to at that company.
How it works
- Get a free key. Sign up at app.leadocean.io/register. No card, 1,000 records.
- Pull job openings in Clay. Search for the roles that signal your ICP, such as a company hiring its first SDR. Clay's template starts from a job-openings scrape. Its cost depends on the source you pick in Clay.
- Keep the company domain. Add a column with the employer's website domain. Search by domain, not by company name.
- Find the buyer. Add an HTTP API column that calls
POST /v1/people/searchwith the domain and the title you sell to. - Skip empty rows. Set an "only run if" formula so the column runs only when the domain is filled (Clay docs, September 2026).
- Enrich the winner. A second column calls
POST /v1/people/enrichwith theperson_idfrom step 4 to get the email. - Send to your sequencer. Push the row with the Clay integration you already use. Clay's template ends in Instantly.
Configuration
Size the list first. This call returns a total and no records, so it costs nothing.
curl -X POST "https://api.leadocean.io/v1/people/search?count=true&limit=1" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "content-type: application/json" \
-d '{"domain":["acme.com"],"jobLevel":["VP"],"jobFunction":["Sales & Business Development"]}'Then the Clay column. /Domain is Clay's reference to the domain column.
Method: POST
URL: https://api.leadocean.io/v1/people/search
Headers: x-api-key: <your LeadOcean key>
content-type: application/json
Body: {
"domain": ["/Domain"],
"jobLevel": ["VP"],
"jobFunction": ["Sales & Business Development"],
"emailStatus": ["verified"],
"limit": 1
}domain is the employer's website domain, as an array of strings (API reference, October 2026). Enum values are exact strings. Check them with leadocean_list_enum_values.
Enrich the result.
curl -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_4","reveal_email":true}'Send exactly one identifier to enrich. To size a company list before you pay for contacts, use GET /v1/companies/count.
Field mapping
| LeadOcean field | Clay column | Note |
|---|---|---|
meta.source_ids.person_id (search row) | Person ID | The input to the enrich call. |
contact_current_experiences[].job_title | Title | Quote it in the email opener. |
contact_current_experiences[].company_name | Company | Check it matches the hiring company. |
contact_data.email_status | Email status | Send only verified. |
resume_data.experiences | Past roles | A second hook. Past employers carry no company_id yet. |
Cost at 10,000 rows
LeadOcean is $0 for the first 1,000 records. Beyond that, Solo is $97 a month and Agency is $497 a month. Neither bills per record. Solo's fair-use pace is 10k enrichments every 5 hours and 50k a week.
A search page counts one record per person returned. A company with nobody matching returns an empty page, and an empty page costs nothing. At one result per company, 10,000 companies is about 10,000 search records plus 10,000 enrichments.
Clay's HTTP API column starts on Growth at $495 a month billed monthly, or $446 billed yearly. Each call uses one Action, and Growth includes 40,000 Actions a month (Clay pricing, September 2026). Two calls per row use 20,000, before the job scrape and the email step.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| No HTTP API column | Clay Free or Launch plan | The column starts on Growth. Export from LeadOcean as CSV instead. |
| Empty result for a company | Domain not in the index, or the title filter is too tight | Widen jobLevel, or drop jobFunction. |
| 401 on every row | Wrong header | Use x-api-key, not Authorization. |
| 400 on enrich | Two identifiers, or a blank person_id | Send one field and skip empty cells. |
| 402 mid-run | The 1,000 free records are spent | Move to Solo or Agency. |
| 429 errors | Over 5 requests a second on Free | Lower the column rate limit and honor Retry-After. |
FAQ
Does LeadOcean have job postings or hiring data?
No. Hiring signals come from Clay or another scraper. LeadOcean returns the people at the company you already flagged.
Can I skip the hiring signal and just list ICP companies?
Yes. See ICP company search and decision-maker outreach, and find companies for the filters.
How do I find companies that are new rather than hiring?
Use find new companies. It filters on company age instead of job openings.
Do I need a card to test it?
No. The free plan has no card and 1,000 records, one-off. See pricing for paid plans.
Back to find companies.
Turn every job post into a conversation with the right buyer. Start free.
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →