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

Apify recipe

LeadOcean + Apify: hunt people with any actor and enrich them

An Apify actor finds the profiles. A webhook hands the run to a small step that sends each LinkedIn URL to POST /v1/people/enrich.

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

You get a pipeline where any Apify actor that outputs people, such as a profile or search scraper, ends with a clean list: name, current role, company and a work email with a status. Apify finds the profiles. LeadOcean fills in the contact data. The one requirement is that the actor's output has a LinkedIn profile URL, an email or a phone for each person, because LeadOcean enrich takes exactly one of those.

How it works

  1. Get a free key. Sign up at app.leadocean.io/register. No card, 1,000 records.
  2. Run your actor. Pick any actor in Apify Store that returns people and start it with your search input.
  3. Add a webhook. Under the actor's Integrations tab, add an HTTP request action on the run succeeded event (Apify docs, September 2026).
  4. Read the dataset. The webhook payload carries the run, including defaultDatasetId. Your receiver pulls the rows from GET /v2/datasets/{id}/items (Apify API, September 2026).
  5. Enrich each row. Send the profile URL to LeadOcean and keep the response.
  6. Write the result. Save to a sheet, your CRM or a CSV. Run 20 rows first.

Apify says the receiver must answer 2XX, and a webhook call times out after 2 minutes (Apify docs, September 2026). Reply at once and do the enrichment after. Duplicate calls happen, so key your work on the run id.

Configuration

The webhook payload template, so the receiver gets only what it needs:

json
{
  "runId": {{resource.id}},
  "datasetId": {{resource.defaultDatasetId}},
  "status": {{resource.status}}
}

The two calls your receiver makes. Replace DATASET_ID and the profile URL.

bash
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?format=json&clean=1" \
  -H "Authorization: Bearer $APIFY_TOKEN"

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","reveal_email":true}'

Send exactly one identifier per call. Two returns a 400 (LeadOcean docs, September 2026). reveal_email costs no extra record.

Field mapping

LeadOcean fieldTarget fieldNote
data.profile_data.profile_full_nameFull nameName as held on the profile.
data.contact_data.contact_current_experiencesCurrent roleHolds job_title, company_name and company_domain.
data.contact_data.contact_emailsEmailsA list. Take the work entry.
data.contact_data.email_statusEmail statusOne of 13 values. Send only verified and catch_all_valid.
data.resume_data.experiencesPast rolesPast titles and dates, when held. Past employers carry no company_id yet.

Cost at 10,000 rows

LeadOcean costs $0 for the first 1,000 records, then $97 a month on Solo or $497 a month on Agency. A hit counts one record. A miss is a 404 and costs nothing. Solo covers 10k enrichments every 5 hours, so 10,000 rows fit in one run. There is no per-record price.

Apify has its own bill. Plans run Free at $0, Starter at $19 a month, Scale at $199 and Business at $999, billed monthly, with 10% off billed yearly. Compute is $0.2 per compute unit on Free and Starter (Apify pricing, September 2026). Each Store actor sets its own price model, so read the actor's page. No public 10,000-row price exists for an unnamed actor.

Troubleshooting

SymptomCauseFix
Webhook fires but nothing is enrichedReceiver took longer than 2 minutes to answerReturn 200 first, then work.
The same run is enriched twiceApify can send a webhook more than onceStore the run id and skip repeats.
400 from LeadOceanTwo identifiers in one call, or a blank URLSend only linkedin_url and skip empty rows.
404 for some rowsLeadOcean holds nothing for that personExpected and free.
402 mid-runThe 1,000 free records are spentMove to Solo or Agency.
429 errorsOver 5 requests a second on FreeSlow the loop and honor Retry-After.

FAQ

Which actors work?

Any actor whose output includes a LinkedIn profile URL, an email or a phone for each person. Map that field to the single identifier you send.

Can I skip the receiver?

Not with a webhook alone. The payload holds the run, not the rows, so something has to read the dataset and call LeadOcean.

Does a miss cost anything?

No LeadOcean record. Your Apify actor run is billed as usual.

Do I need a card to test it?

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

Back to all integrations. For a no-actor version, see enrich any URL in Clay and scrape leads from the live web. For a single-profile case, see enrich a candidate from their GitHub. Plans are on pricing.

Put a work email on every profile your actor finds. Start free.

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

Get your free API key →