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
- Get a free key and connect LeadOcean. Sign up at app.leadocean.io/register, then add
https://api.leadocean.io/mcpas an MCP server. It signs in with OAuth, so you paste no key. - 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).
- 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".
- Claude scrapes the page.
scrape_as_markdownreturns one page as Markdown.scrape_batchtakes up to 10 URLs at once (Bright Data tools, September 2026). - Claude lists company domains. It pulls names and domains, drops duplicates and shows you the list. Confirm it.
- Claude sizes the run for free.
leadocean_count_leadscosts nothing. It returns how many people match your role filter at those domains. - Claude searches.
leadocean_search_leadsruns with thedomainandjobLevelfilters. Each person returned counts as one record. Search rows carryemail_status, never the address. - Claude enriches. For each person you keep,
leadocean_get_leadruns with the row'sperson_idandreveal_emailon. 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.
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.
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 field | Output column | Note |
|---|---|---|
domain (input) | Company domain | Comes from the scraped page. Strip www. and paths. |
profile_data.profile_full_name | Name | As held on the profile. |
contact_data.contact_current_experiences[].job_title | Title | The current role. |
contact_data.contact_emails[].email | Work email | Send only verified and catch_all_valid first. |
contact_data.email_status | Email status | One of 13 values. |
meta.source_ids.person_id | Person ID | Use 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
| Symptom | Cause | Fix |
|---|---|---|
| Scrape returns an empty shell | The people grid loads with JavaScript | Ask Claude to use the Bright Data scraping_browser_* tools, or find a static source. |
| Claude finds no people for a domain | LeadOcean holds nobody there | Expected. A 404 is free. Try the parent brand's domain. |
| No results for a role | Enum value spelled wrong | Use exact values such as C-Team, from leadocean_list_enum_values. |
| 402 mid-run | The 1,000 free records are spent | Move to Solo or Agency. |
| 429 errors | Over 5 requests a second on Free | Wait for Retry-After, or upgrade. |
| Many catch_all emails | The domain accepts all mail | Verify 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 →