You get a Clay table where each row is a company that just posted a sales job, with the VP or Director of Sales attached and a work email revealed. The job post is the trigger. LeadOcean finds the person and the address. The hiring signal comes from Clay's own job source, which the FullEnrich template for this play also uses (FullEnrich, September 2026).
This fits one job: you sell to sales teams and want a reason to write on day one. Clay's HTTP API column needs the Growth plan or higher (Clay pricing, September 2026). LeadOcean needs a free key.
How it works
- Pull the trigger. Add a Clay job source for recent SDR and BDR postings, one job per company, last 30 days. Keep the company domain as a column named
Company Domain. - Search for the decision maker. Add an HTTP API column that calls
GET /v1/people/searchwith the domain, a job level filter andlimit1. It returns the best match at that company. - Pick the person. Search returns a list. Take the first entry in a Clay formula and keep its name, title and
meta.source_ids.person_id. - Reveal the work email. Add a second HTTP API column on
POST /v1/people/enrichwith theperson_idandreveal_emailtrue. Gate it with "Only run if" the person column is not empty (Clay docs, October 2026). - Send it on. Filter on
email_status, then push the table to your sequencer or CRM from Clay.
Test five rows before the full run. Misses are normal: some companies have no sales leader in the data.
Configuration
Save x-api-key once as an HTTP API (Headers) account and select it on both columns. Replace /Company Domain and /Person ID with your own column references; string references go in quotes (Clay docs, October 2026).
Column 1: Find sales leader
Method: GET
URL: https://api.leadocean.io/v1/people/search
Query params:
domain = /Company Domain
jobFunction = Sales & Business Development
jobLevel = VP,Director
title = Head of Sales,VP Sales
limit = 1
Field paths to return: data
Column 2: Reveal work email
Method: POST
URL: https://api.leadocean.io/v1/people/enrich
Body: { "person_id": "/Person ID", "reveal_email": true }
Field paths to return:
data.contact_data.email_status
data.contact_data.contact_emailsCheck the same calls from a terminal first. The domain and ID below are placeholders.
curl -G "https://api.leadocean.io/v1/people/search" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
--data-urlencode "domain=acme.com" \
--data-urlencode "jobLevel=VP,Director" \
--data-urlencode "title=Head of Sales,VP Sales" \
--data-urlencode "limit=1"
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":"1234567","reveal_email":true}'Multi-value query parameters are comma-separated, so no JSON array is needed in Clay. Enrich takes exactly one identifier. Filter values are exact strings, so check them with GET /v1/enums first. Keep the Clay rate limit under your LeadOcean plan: 5 requests a second on Free, 200 on Agency (LeadOcean docs, September 2026).
Field mapping
Search returns the whole list as data. Pick the first entry with a Clay formula, since Clay's field paths use dot notation (Clay docs, September 2026).
| LeadOcean field | Clay column | Note |
|---|---|---|
data (search) | Search result | The list from column 1. Take entry one. |
meta.source_ids.person_id (entry one) | Person ID | Input to column 2. On every search row. |
data.contact_data.email_status | Email status | One of 13 values. Send only verified and catch_all_valid. |
data.contact_data.contact_emails | Emails | Present because reveal_email is true. Pick the work entry. |
data.contact_data.contact_current_experiences | Current role | job_title and company_name, for the first line of your email. |
Cost at 10,000 rows
For 10,000 companies, LeadOcean uses up to 20,000 records and costs $97 a month on Solo or $497 on Agency. The Free plan's 1,000 records cover a test, not a run.
LeadOcean. A search row counts one record and an enrichment that finds a person counts one. A miss costs nothing, and reveal_email adds no record (LeadOcean docs, September 2026). Ten thousand companies means at most 10,000 search records plus 10,000 enrichments. Solo allows 10k enrichments every 5 hours and 50k a week, so one run fits. Agency has no per-record price.
Clay. The HTTP API column starts on Growth, $495 a month billed monthly or $446 billed yearly (Clay pricing, September 2026). Each HTTP call uses one Action, so two columns on 10,000 rows use 20,000 Actions, inside the 40,000 in the entry tier. A Clay table holds 50,000 rows on Growth (Clay pricing, September 2026).
Total for one 10,000-row run: about $592 a month on Solo plus Growth, monthly billing. Clay's job source and any waterfall providers are extra.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| No HTTP API column | Clay Free or Launch plan | It is Growth and Enterprise (Clay pricing, September 2026). Export a CSV from the LeadOcean app instead (Solo and up). |
| Search returns an empty list | No VP or Director of Sales held for that domain | Widen jobLevel to Manager, or drop title. |
| 400 on enrich | More than one identifier in the body | Send only person_id. |
| 401 | Wrong header name | Use x-api-key, not Authorization. |
| 402 | Free 1,000 records spent | Move to Solo or Agency. |
| 429 | Clay sends faster than your plan allows | Lower the column's rate setting and honor Retry-After. |
FAQ
Where does the job signal come from?
From Clay, not LeadOcean. LeadOcean has no job-posting data. It starts at the company domain and finds the person.
Why search by domain, not company name?
Search matches the domain filter. Names are ambiguous and a job source gives you the domain anyway.
Can I skip Clay?
Yes. Run the two calls from a script, or ask for the same list over MCP with leadocean_search_leads. Clay adds the job source and the table.
What about phone numbers?
Add a third column on GET /v2/people/phone for rows with a ready email. It costs one record per call.
Related: ICP company search to decision maker, best decision maker finder tools, Decision Maker Mapper skill, pricing. Back to all integrations.
Run this job-signal recipe on your own accounts. Start free.
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →