You get a Clay table where each row is a company that fits your ICP, with the VP or Director you sell to and a verified work email. FullEnrich's Clay template does the same job with ICP filters, a people search by domain and an email step (FullEnrich template, September 2026). This recipe uses LeadOcean for the contact steps.
The trigger is your ICP filter, not a signal. For a signal-led version, see hiring signals or job signals.
How it works
- Get a free key. Sign up at app.leadocean.io/register. No card, 1,000 records.
- Size the ICP. Call
GET /v1/companies/countwith your company filters. It is free and returns an exact total with breakdowns. - Build the company list in Clay. Start a table from the source "Import data from an HTTP API" with
GET /v1/companies/searchand the same filters. Set the results path todataand paginate on thecursorquery parameter withmeta.nextCursor(Clay docs, October 2026). - Keep the domain. Map
company_data.company_domainto a column named Domain. A source imports up to 50,000 rows; LeadOcean pages one search to 10,000. - Find the buyer. Add an HTTP API column that calls
GET /v1/people/searchwith the row's domain and returns one person. - Skip empty rows. Set an "only run if" formula so the column runs only when the domain is filled (Clay docs, September 2026).
- Get the email. A second column calls
POST /v1/people/enrichwith theperson_idandreveal_emailtrue.
Configuration
Size the ICP first. No records come back, so it costs nothing.
curl -G "https://api.leadocean.io/v1/companies/count" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
--data-urlencode "industry=Software Development" \
--data-urlencode "employeeRange=51-200,201-500" \
--data-urlencode "companyType=Privately Held" \
--data-urlencode "hqCountry=US"Then the Clay column. /Domain is Clay's reference to the domain column. Save x-api-key once as an HTTP API (Headers) account and select it, so the key is not shown in the column.
Method: GET
URL: https://api.leadocean.io/v1/people/search
Header account: LeadOcean (x-api-key)
Query params: domain = /Domain
jobLevel = VP,Director
jobFunction = Sales & Business Development
emailStatus = verified
limit = 1Multi-value query parameters are comma-separated.
Enrich the person it returns.
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_5","reveal_email":true}'Enum values are exact strings. Check them with leadocean_list_enum_values.
Field mapping
| LeadOcean field | Clay column | Note |
|---|---|---|
data[0].meta.source_ids.person_id (search) | Person ID | The input to the enrich call. |
data.contact_data.contact_current_experiences[].job_title | Title | Quote it in the opener. |
data.contact_data.contact_current_experiences[].company_domain | Company domain | Check it matches the row. |
data.contact_data.email_status | Email status | Send only verified. |
data.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.
At one buyer per company, 10,000 rows is about 10,000 company records, 10,000 people search records and 10,000 enrichments. A search that matches nobody returns an empty page, and an empty page costs nothing.
Clay's HTTP API enrichment 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 column calls per row use 20,000.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| No HTTP API column | Clay Free or Launch plan | The column starts on Growth. Export people from the LeadOcean app as CSV instead (Solo and up). |
| Empty result for a company | Domain not in the index, or filters too tight | Drop jobFunction, or add Manager to jobLevel. |
| 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
Can LeadOcean build the company list too?
Yes. GET /v1/companies/search takes the same filters as the count call and pages to 10,000 rows. Narrow the filters to go past that.
Do I need Clay at all?
No. POST /v1/people/search accepts company filters such as employeeRange and hqCountry, so one call can return the buyers directly. Clay adds the table and the AI opener.
Should I send to catch-all addresses?
Send verified first. Bounced emails are not refunded, so read email_status before sending.
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.
See also decision makers in Windsurf, the same search from an AI editor. Back to all integrations.
Go from an ICP definition to the right buyer's inbox. Start free.
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →