What it does
The LeadOcean people data API does three jobs. It finds people by filter, it turns one identifier into a full profile, and it returns the email addresses and phone numbers we hold for that person.
The database holds 693M people. 366M have an email and 166M have a phone number (measured September 2026). Search has 50 people filters, from job title and seniority to company size, funding stage and website technology.
Search returns thin rows with no contact details, plus has_email and has_phone flags. You decide which rows are worth a record, then enrich only those. The same record shape comes back from search, enrichment and the CSV export.
What you get
Every person comes back as leadocean.person.v1. A value we do not hold is null, never guessed.
| Block | What is in it |
|---|---|
profile_data | Name, LinkedIn URL, headline, summary, languages, city, state, country, tags, expertises, connections count, decision-maker flag, last seen date |
contact_data | contact_emails[] and contact_phones[] (with reveal_email), has_email, has_phone, email_status, email_type, current experiences |
resume_data | experiences[], educations[], certifications[], awards[], skills[] |
meta | Key, sources, fetched_at, schema name |
Each email carries a type (work, work_other or personal), a status and a verified_batch_date. The status values are verified, catch_all_valid, catch_all, risky, unknown, untested, invalid, role, disposable, spam_trap, abuse, derived and none. Read email_status before you send.
Enrichment takes exactly one of linkedin_url, email, phone or person_id. There is no lookup by name plus company. Search by domain first, then enrich by person_id.
Narrow endpoints sit beside it: GET /v2/people/email/work, GET /v2/people/email/personal, GET /v2/people/phone and /v2/people/reverse for who holds an email or number.
How you use it
In the app
The Exports page at app.leadocean.io has a filter builder, a column picker with presets and the record price before you start. Pick filters, pick columns, download a CSV. One export holds up to 50,000 rows. The app has no sequencer, dialer, CRM or Chrome extension. It is a data export, not a rep workspace.
With the API
curl -X POST "https://api.leadocean.io/v1/people/search" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "content-type: application/json" \
-d '{"jobLevel":["VP"],"jobFunction":["Sales & Business Development"],"country":["CA"],"limit":25}'Each person returned is 1 record. Page with the cursor in meta.nextCursor. To enrich one person, send POST /v1/people/enrich with {"linkedin_url":"...","reveal_email":true}. Enrum filters take exact strings, so check GET /v1/enums first.
Sizing is free. Add count=true as a query parameter with limit 1 and meta.total returns the match count, capped at 100,000. On 2026-09-30 a VP, Sales & Business Development, Canada query counted 5,066 mailable people.
From an AI agent
The hosted MCP server at https://api.leadocean.io/mcp has 12 tools and signs in with OAuth 2.1, so no key is pasted. The people tools are leadocean_search_leads, leadocean_count_leads, leadocean_get_lead, leadocean_find_phone and leadocean_export_leads. Try:
Count VPs of Sales in Canada with a verified email. If under 10,000, pull the first 25 and show title, company and email status.
The agent calls leadocean_count_leads first, which is free, then leadocean_search_leads.
Pricing
Free is 1,000 records, one-off, no card. Pro is $499 a month, flat. Free and Pro get the same API and MCP server.
Pro has no per-record price and no credits. Searches, enrichments and lookups are unlimited inside fair use. Past the fair-use line a very large month is paced down to one request a minute until the reset, not cut off. See pricing.
A record is one person or company returned. Counts, filter lists and get_account are free. An enrichment that finds nobody is a 404 and costs nothing. A v2 contact endpoint that finds nothing still costs 1 record.
Limits
- Rate limit. 100 requests per second per key, on every plan.
- Search pages. 100 rows per page, and one search walks at most 10,000 rows by default. Narrow the filters instead of paging harder.
- Exports. 50,000 rows per request, 500,000 rows per day and 10,000,000 rows per period.
- Company people.
GET /v1/companies/{domain}/peoplestops at 10,000 rows. - Counts.
meta.totalis capped at 100,000. - Bounces. There is no refund or credit-back for bounced emails. Many addresses are
untested, which is not a negative signal. - Refresh. The dataset is refreshed monthly, and each record carries its own
fetched_atdate. - Gaps. Do-not-call flags are not populated, and null does not mean safe to call. About one person in five has no LinkedIn URL, so use
person_idfor those.
FAQ
What is a people data API?
It is an HTTP API that returns data about professionals: name, role, company, location, work history, email and phone. You query it from code or from an agent instead of working in a lead-list UI. See what is a B2B data API.
How do I find someone by name?
Search with q or title plus a companyName or domain filter, then enrich the right row by person_id. Enrichment itself does not take a name.
Does enrichment cost extra when I reveal the email?
No. reveal_email returns every email and phone we hold at no extra record. The call is 1 record either way.
Can I use it from Claude or Cursor?
Yes. Connect https://api.leadocean.io/mcp and the agent calls the same search and enrichment as the REST API.
How does it compare with other providers?
For a ranked view of providers that sell people data by API, read best B2B data providers with an API and best B2B data APIs. Related products: company data API and bulk export.
Search 693M people with your free API key
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →