Pre-Black Friday: 20% off, for as long as you stayEARLYBFon Solo and AgencyEnds Nov 28Start free

Clay recipe

LeadOcean + Clay: from an ICP company list to the decision maker's inbox

Size your ICP for free, put the company domains in Clay, and call LeadOcean once per row for the VP or Director and a verified email.

Get your free API key →Free to start. No credit card. 1,000 records to spend whenever you like.

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

  1. Get a free key. Sign up at app.leadocean.io/register. No card, 1,000 records.
  2. Size the ICP. Call GET /v1/companies/count with your company filters. It is free and returns an exact total with breakdowns.
  3. Build the company list in Clay. Start a table from the source "Import data from an HTTP API" with GET /v1/companies/search and the same filters. Set the results path to data and paginate on the cursor query parameter with meta.nextCursor (Clay docs, October 2026).
  4. Keep the domain. Map company_data.company_domain to a column named Domain. A source imports up to 50,000 rows; LeadOcean pages one search to 10,000.
  5. Find the buyer. Add an HTTP API column that calls GET /v1/people/search with the row's domain and returns one person.
  6. Skip empty rows. Set an "only run if" formula so the column runs only when the domain is filled (Clay docs, September 2026).
  7. Get the email. A second column calls POST /v1/people/enrich with the person_id and reveal_email true.

Configuration

Size the ICP first. No records come back, so it costs nothing.

bash
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.

text
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        = 1

Multi-value query parameters are comma-separated.

Enrich the person it returns.

bash
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 fieldClay columnNote
data[0].meta.source_ids.person_id (search)Person IDThe input to the enrich call.
data.contact_data.contact_current_experiences[].job_titleTitleQuote it in the opener.
data.contact_data.contact_current_experiences[].company_domainCompany domainCheck it matches the row.
data.contact_data.email_statusEmail statusSend only verified.
data.resume_data.experiencesPast rolesA 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

SymptomCauseFix
No HTTP API columnClay Free or Launch planThe column starts on Growth. Export people from the LeadOcean app as CSV instead (Solo and up).
Empty result for a companyDomain not in the index, or filters too tightDrop jobFunction, or add Manager to jobLevel.
401 on every rowWrong headerUse x-api-key, not Authorization.
400 on enrichTwo identifiers, or a blank person_idSend one field and skip empty cells.
402 mid-runThe 1,000 free records are spentMove to Solo or Agency.
429 errorsOver 5 requests a second on FreeLower 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 →