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

Clay recipe

LeadOcean + Clay: scrape Indeed jobs for locations and write the email

Clay scrapes a company's Indeed listings to count locations. One LeadOcean call adds the decision maker. A formula turns both into a first line.

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 has a location count taken from its Indeed listings, a named decision maker from LeadOcean, and a first line that uses both. Clay's template does the scrape and the formula (Clay template, September 2026). It stops at the line. This recipe adds the person to send it to.

A job post lists a city. Count the distinct cities and you have a rough footprint. "I saw you hire in 6 cities" beats "I saw you are growing".

The signal is strongest for multi-site businesses: clinics, retail, logistics, staffing. Skip single-office software firms, where the count is always 1. Aim the list at companies that hire in volume, then send the line to the one person who owns that spend.

How it works

  1. Get a free key. Sign up at app.leadocean.io/register. No card, 1,000 records.
  2. Load companies into Clay. Start from a domain list, or size one first with the free GET /v1/companies/count or the leadocean_count_companies MCP tool.
  3. Scrape Indeed. Run the template's Indeed step per company and collect the job locations. The template is tagged Claygent. Read the step's Data Credit rate in Clay before a full run.
  4. Count distinct locations. Use a formula that returns the number of unique cities.
  5. Find the decision maker. Add an HTTP API column that calls LeadOcean people search with the domain filter.
  6. Write the first line. Combine the location count, the person's title and the company name in a text formula or AI column.
  7. Send from your own tool. LeadOcean has no sequencer. Export the table to your sender.

Configuration

/Domain is Clay's reference to the company domain column. The HTTP API column needs Clay Growth or higher (Clay pricing, September 2026).

text
Method:   POST
URL:      https://api.leadocean.io/v1/people/search
Headers:  x-api-key: <your LeadOcean key>
          content-type: application/json
Body:     {
            "domain": ["/Domain"],
            "jobLevel": ["C-Team", "VP"],
            "limit": 1
          }

Test one company in a terminal first. GET /v1/filters/people lists every filter name, free.

bash
curl -X POST "https://api.leadocean.io/v1/people/search" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "content-type: application/json" \
  -d '{"domain":["acme.com"],"jobLevel":["VP"],"limit":1}'

For a company's own record, call POST /v1/companies/enrich with the domain. Add the email later with reveal_email on POST /v1/people/enrich.

Field mapping

LeadOcean fieldClay columnNote
profile_data.profile_full_nameContact nameUse it in the greeting.
contact_data.contact_current_experiences[].job_titleContact titleName the role in the first line.
contact_data.email_statusEmail statusRead it before you send.
company_data.company_primary_addressHQFrom POST /v1/companies/enrich. The HQ address, next to the Indeed cities.
Indeed job cities (from Clay)Location countComes from the scrape, not from LeadOcean.

Cost at 10,000 rows

10,000 companies is up to 10,000 search records for the decision makers, plus one record per email you enrich. LeadOcean is $0 for the first 1,000 records, then $97 a month on Solo, or $497 on Agency for teams. There is no per-record price, only a fair-use pace. A search that matches nobody costs nothing.

Clay's Growth plan, the first with the HTTP API column, is $495 a month billed monthly, or $446 billed yearly. It includes 40,000 Actions and 6,000 Data Credits a month (Clay pricing, September 2026). The scrape spends Data Credits; the HTTP API column spends one Action per call.

Troubleshooting

SymptomCauseFix
No HTTP API columnClay Free or Launch planThe column starts on Growth. Export people from the LeadOcean app instead.
401 on every rowWrong headerUse x-api-key, not Authorization.
Empty result for a companyNo VP or C-Team matchWiden jobLevel to Director.
Location count is 1Indeed returned few listingsSkip the line for that row.
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

Does LeadOcean scrape Indeed?

No. Clay runs the scrape. LeadOcean supplies the people and company data.

How do I get the email for the contact?

Enrich by person_id with reveal_email true. See enrich inbound leads.

How should the first line read?

One fact, one sentence. The guide on hyper-personalized cold emails covers it.

Do I need a card to test it?

No. The free plan has no card and 1,000 records, one-off. See pricing.

Related: write personalized emails based on website data. Back to all integrations.

Put a name next to every location count. Start free.

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

Get your free API key →