You give a Clay table one LinkedIn URL of someone who already bought. You get back a list of people with the same title, level, function and country, each with a work email. LeadOcean does the data work in three HTTP calls, and Clay holds the rows. The same recipe runs from a script if you have no Clay seat.
How it works
- Trigger. Add a column with the seed URL, for example
https://www.linkedin.com/in/jane-doe-example. One seed per row.
- Read the persona. Add an HTTP API column that calls
POST /v1/people/enrichwithlinkedin_url. The current role is incontact_current_experiences[], withjob_titleandjob_functions[]; the country is in theprofile_dataaddress. A miss is a 404 and costs nothing.
- Size the list. Call
/v1/people/search?count=truewithlimit1 and the persona as filters. It is free, andmeta.totalcaps at 100,000. - Pull the lookalikes into a new table. Start a second table from the source "Import data from an HTTP API" with
GET /v1/people/searchand the persona filters. Set the results path todataand paginate on thecursorquery parameter withmeta.nextCursor(Clay docs, October 2026). Each person becomes a row. One search pages to 10,000 rows.
- Enrich each row. Add an HTTP API column on
POST /v1/people/enrichwith the row'smeta.source_ids.person_idandreveal_email: true. Reveal costs no extra record. - Send it on. Filter on
email_status, then push the rows to your CRM or sequencer.
Clay's HTTP API column lets you set a rate limit and a conditional run per column (Clay docs, October 2026). Set 5 requests a second on Free and 50 on Solo, and run only when the URL cell is filled.
Configuration
The enrich call from step 2, as the HTTP column sends it:
curl -X POST https://api.leadocean.io/v1/people/enrich \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"linkedin_url": "https://www.linkedin.com/in/jane-doe-example"}'The search call from step 4. Values are placeholders for what step 2 returned. In the Clay source, send the same filters as query parameters, comma-separated:
curl -X POST https://api.leadocean.io/v1/people/search \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title": ["Head of Growth"], "jobLevel": ["Director"],
"jobFunction": ["Sales & Business Development"],
"country": ["US"], "limit": 100}'Enum values are exact strings. Check them with list_enum_values before you map anything.
Field mapping
| LeadOcean field | Target field | Note |
|---|---|---|
contact_current_experiences[].job_title | title filter | Wrap in brackets for an exact match. |
| Set by you from the seed title | jobLevel filter | C-Team, VP, Director, Manager, Staff or Other. |
contact_current_experiences[].job_functions[] | jobFunction filter | Check each value with list_enum_values. |
profile_data address country_code | country filter | Two-letter code, such as US. |
data[].meta.source_ids.person_id (search) | Clay column for step 5 | On every search row. |
data.contact_data.contact_emails[] | Clay email column | Returned when reveal_email is true. |
data.contact_data.email_status | Send-ready flag | Bounces are not refunded. Read it first. |
Cost at 10,000 rows
On LeadOcean, 10,000 lookalikes plus the seed is 10,001 records. Enriching each row for its email adds 10,000, so 20,001 in total. Free holds 1,000 records for life, enough to prove the recipe. Solo at $97 a month covers the volume, with bulk CSV included. See pricing.
Clay's HTTP API column starts on Growth: $495 a month billed monthly, $446 billed yearly. Each call uses one Action (Clay pricing, September 2026). The enrich column on 10,000 rows is 10,000 Actions, inside Growth's 40,000.
The FullEnrich template does the same job with its own search and email credits. Search costs 0.25 credits per person and a work email 1 credit (FullEnrich docs, September 2026). That is 12,500 credits for 10,000 rows. The 15,000-credit tier is $720 a month, or $655 a month billed yearly (FullEnrich pricing, September 2026).
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Enrich returns 404 | No record for that URL | Free. Fill the filters by hand and search anyway. |
| Search returns zero rows | An enum value is misspelled | Check list_enum_values. |
| 402 on search | The 1,000 Free records are spent | Move to Solo or Agency. |
| 429 with Retry-After | Over the plan's rate | Lower the column's rate limit. |
| Seed person in the results | Search matches them too | Drop their person_id from the rows. |
FAQ
Do I need Clay for this?
No. Any HTTP client runs the three calls. Clay adds the table and the formula columns. Its HTTP API column needs Growth or the 14-day trial (Clay pricing, September 2026).
How tight should the filters be?
Start with level, function and country, then size the list. Add title if the count is too big and drop it if the count is too small.
Can it be run from Claude instead?
Yes. Use leadocean_get_lead, leadocean_count_leads and leadocean_search_leads in a single chat.
Where do I start from a single URL without Clay?
See find lookalike profiles from any LinkedIn URL. For list structure, use the B2B prospect list template. To enrich a profile from chat, see enrich a LinkedIn profile from Slack. All recipes are on the integrations hub.
Build your first lookalike list free
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →