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

Integration recipe

Job Signal → Decision Maker Outreach: LeadOcean in a Clay table

A company posts an SDR job. A Clay table calls LeadOcean for the VP of Sales and returns a work 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 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

  1. 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.
  2. Search for the decision maker. Add an HTTP API column that calls GET /v1/people/search with the domain, a job level filter and limit 1. It returns the best match at that company.
  3. 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.
  4. Reveal the work email. Add a second HTTP API column on POST /v1/people/enrich with the person_id and reveal_email true. Gate it with "Only run if" the person column is not empty (Clay docs, October 2026).
  5. 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).

text
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_emails

Check the same calls from a terminal first. The domain and ID below are placeholders.

bash
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 fieldClay columnNote
data (search)Search resultThe list from column 1. Take entry one.
meta.source_ids.person_id (entry one)Person IDInput to column 2. On every search row.
data.contact_data.email_statusEmail statusOne of 13 values. Send only verified and catch_all_valid.
data.contact_data.contact_emailsEmailsPresent because reveal_email is true. Pick the work entry.
data.contact_data.contact_current_experiencesCurrent rolejob_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

SymptomCauseFix
No HTTP API columnClay Free or Launch planIt is Growth and Enterprise (Clay pricing, September 2026). Export a CSV from the LeadOcean app instead (Solo and up).
Search returns an empty listNo VP or Director of Sales held for that domainWiden jobLevel to Manager, or drop title.
400 on enrichMore than one identifier in the bodySend only person_id.
401Wrong header nameUse x-api-key, not Authorization.
402Free 1,000 records spentMove to Solo or Agency.
429Clay sends faster than your plan allowsLower 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 →