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

Clay recipe

LeadOcean + Clay: write personalized emails from website data

A column of domains goes in. One HTTP call returns the company description and the technologies running on its site. An AI column turns them into an opener.

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 company domain has a plain-language description and a list of the technologies its website runs, then a drafted opener that names one of them. Clay's own template drafts from website data (Clay template, October 2026). This recipe adds a structured layer from LeadOcean, so the draft rests on fields and not on a scraped page.

A scrape step depends on the site loading for a bot. LeadOcean holds the description and detected technologies for the domain already. One call returns both.

Use the tech stack as the hook. "I saw you run Shopify and Klaviyo" is a better first line than praise for the homepage.

How it works

  1. Get a free key. Sign up at app.leadocean.io/register. No card, 1,000 records.
  2. Add your domains. Create a text column named Domain with bare domains like acme.com. Strip https:// and www..
  3. Add the HTTP API column. POST to https://api.leadocean.io/v1/companies/enrich with the domain. Clay lists the HTTP API column on Growth and Enterprise (Clay pricing, September 2026).
  4. Return two paths. Pull data.company_data.company_description and data.company_detected_technologies. Clay documents dot notation for field paths (Clay docs, September 2026).
  5. Draft the opener. Add an AI column that reads the description and picks one technology. Tell it to write two sentences and name nothing it was not given. Each AI run uses one Action plus model credits (Clay docs, October 2026).
  6. Review, then send. Send from your own inbox or sequencer. LeadOcean has no sequencer.

Configuration

/Domain is Clay's reference to the column.

text
Method:   POST
URL:      https://api.leadocean.io/v1/companies/enrich
Headers:  x-api-key: <your LeadOcean key>
          content-type: application/json
Body:     { "domain": "/Domain" }
Field paths to return:
          data.company_data.company_description
          data.company_detected_technologies

Test one domain in a terminal first.

bash
curl -X POST "https://api.leadocean.io/v1/companies/enrich" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "content-type: application/json" \
  -d '{"domain":"acme.com"}'

The body takes domain or linkedin_url (LeadOcean OpenAPI, October 2026). The REST response carries the technology list; only MCP drops it by default (LeadOcean docs, October 2026).

Field mapping

LeadOcean fieldClay columnNote
company_data.company_nameCompanyUse it in the opener.
company_data.company_descriptionAboutOne or two sentences. Null when we hold none.
company_detected_technologies[].technology_product.nameTech stackA list. Join it into one text cell.
company_data.company_technology_categoriesTech categoriesAnalytics, CDN, Security. Shows what the tools are for.
company_data.company_industries[].name2IndustryOptional second hook.

Cost at 10,000 rows

LeadOcean is $0 for the first 1,000 records. For 10,000 domains, Solo is $97 a month and covers 10k enrichments every 5 hours, or Agency is $497 a month. There is no per-record price (LeadOcean pricing).

A domain we hold nothing for is a 404 and costs nothing.

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 and 6,000 Data Credits a month (Clay pricing, September 2026). The AI column adds one Action and 0.4 Data Credit a row on GPT-5 Mini (Clay docs, October 2026). The run uses 20,000 Actions and 4,000 credits, inside the entry tier's 6,000 credits.

Troubleshooting

SymptomCauseFix
No HTTP API columnClay Free or Launch planThe column starts on Growth. Export enriched rows from LeadOcean as CSV instead.
Technology list is emptyNothing detected, or the site was not crawledTech data covers about 7.8M crawled sites. Use the description as the hook.
404 on a rowDomain not held, or typed with www.Expected and free. Strip the prefix and retry.
401 on every rowWrong headerUse x-api-key, not Authorization.
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

Do I still need to scrape the website?

Not for the stack or the description. Scrape only if you want a line from a specific page, such as a pricing change.

How do I find who to email at each domain?

Call GET /v1/companies/acme.com/people, or run a people search with the domain. Each person returned is 1 record. See enrich inbound leads and write personalized emails.

Is the technology list current?

It reflects what we detected on the site at crawl time. Treat it as a hook, not a promise.

How should the opener read?

Short, with one fact. The guide on hyper-personalized cold emails and the recipe on customer data cover it.

Back to all integrations. Plans are on pricing.

Give every domain a real reason to write. Start free.

Free to start. No credit card. 1,000 records to spend whenever you like.

Get your free API key →