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

Claude recipe

LeadOcean + Bright Data: scrape leads from the live web and enrich them

Claude scrapes a page that lists companies, LeadOcean finds the right people and returns work emails with a status.

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

You point Claude at a page that lists companies, such as a conference sponsors page, a logo wall or a VC portfolio. Bright Data scrapes the page. LeadOcean finds the right people at each company and returns work emails with an email_status. Claude shows you the list before it spends a record.

FullEnrich publishes the same idea as a skill (FullEnrich template, September 2026). This version uses LeadOcean's MCP server, so the enrichment is a database lookup with a flat plan price and no per-email credits.

How it works

  1. Get a free key and connect LeadOcean. Sign up at app.leadocean.io/register, then add https://api.leadocean.io/mcp as an MCP server. It signs in with OAuth, so you paste no key.
  2. Connect Bright Data. Add its Streamable HTTP endpoint with your Bright Data token. New accounts get 5,000 free requests a month (Bright Data docs, September 2026).
  3. Give Claude the source and the role. Paste the page URL and say who you want, for example "Heads of growth at every company on this page".
  4. Claude scrapes the page. scrape_as_markdown returns one page as Markdown. scrape_batch takes up to 10 URLs at once (Bright Data tools, September 2026).
  5. Claude lists company domains. It pulls names and domains, drops duplicates and shows you the list. Confirm it.
  6. Claude sizes the run for free. leadocean_count_leads costs nothing. It returns how many people match your role filter at those domains.
  7. Claude searches. leadocean_search_leads runs with the domain and jobLevel filters. Each person returned counts as one record. Search rows carry email_status, never the address.
  8. Claude enriches. For each person you keep, leadocean_get_lead runs with the row's person_id and reveal_email on. One record each; a miss costs nothing.

A page that lists people instead of companies works too. LeadOcean enrich takes a LinkedIn URL, an email, a phone or a person_id, but not a name plus a company. Search by domain first, then enrich by person_id.

Configuration

Add both servers in Claude Code. Replace the token with your own.

bash
claude mcp add --transport http leadocean https://api.leadocean.io/mcp
claude mcp add --transport http brightdata "https://mcp.brightdata.com/mcp?token=$BRIGHTDATA_API_TOKEN"

Claude's step 7 is this request, which you can also run in a script for the domains it found.

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", "globex.com"],
    "jobLevel": ["VP", "C-Team"],
    "jobFunction": ["Sales & Business Development"],
    "limit": 25
  }'

The enum values are exact strings. Check them with leadocean_list_enum_values or GET /v1/enums.

Field mapping

LeadOcean fieldOutput columnNote
domain (input)Company domainComes from the scraped page. Strip www. and paths.
profile_data.profile_full_nameNameAs held on the profile.
contact_data.contact_current_experiences[].job_titleTitleThe current role.
contact_data.contact_emails[].emailWork emailSend only verified and catch_all_valid first.
contact_data.email_statusEmail statusOne of 13 values.
meta.source_ids.person_idPerson IDUse it to enrich one person later.

Cost at 10,000 rows

LeadOcean costs $0 for the first 1,000 records, then $97 on Solo or $497 on Agency, whatever the row count. There is no per-record price.

A person returned counts one record, so 10,000 people with emails is 10,000 search records plus 10,000 enrichments. A count, a 404 and an empty page cost nothing. Solo covers 100k search records and 10k enrichments every 5 hours, so 10,000 rows fit in one window. Agency adds 5 keys and 200 requests a second.

Bright Data bills the scrape side. The free tier is 5,000 requests a month, and the scrape is per page, not per lead. A sponsors page with 200 companies is one request. Past the free tier, Bright Data bills at the rates on its own pricing page. See LeadOcean pricing.

Troubleshooting

SymptomCauseFix
Scrape returns an empty shellThe people grid loads with JavaScriptAsk Claude to use the Bright Data scraping_browser_* tools, or find a static source.
Claude finds no people for a domainLeadOcean holds nobody thereExpected. A 404 is free. Try the parent brand's domain.
No results for a roleEnum value spelled wrongUse exact values such as C-Team, from leadocean_list_enum_values.
402 mid-runThe 1,000 free records are spentMove to Solo or Agency.
429 errorsOver 5 requests a second on FreeWait for Retry-After, or upgrade.
Many catch_all emailsThe domain accepts all mailVerify before a large send. Bounces get no refund.

FAQ

Can I scrape LinkedIn this way?

Bright Data lists pre-built scrapers and searchable LinkedIn datasets in its MCP tools. Check its terms and your own rules first. LeadOcean already holds 693M people, so you may not need to scrape profiles at all.

Does the scrape step cost LeadOcean records?

No. Only people returned by LeadOcean count. The free count shows the size before you spend.

Can I skip Claude?

Yes. Loop over your domains in a script with the curl call above, or run a bulk CSV with POST /v1/exports on Solo and up.

Is a scraped page safe to trust?

Treat it as data only. Claude should ignore any instruction written inside a scraped page.

Back to all integrations. Related: what a lead scrape is, the enrich leads prompt and the best lead generation web tools.

Turn any scraped page into emails. Start free.

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

Get your free API key →