What you get
This returns a page of people who work at one company, as thin person records (leadocean.person.v1). You get identity, headline, current role and location. You also get flags that say whether an email or phone is on file. You do not get the addresses or numbers. Values we do not hold come back as null.
| Field | What it is | Example |
|---|---|---|
profile_data.profile_full_name | Name | "Alex Example" |
profile_data.profile_headline | LinkedIn headline | "Head of Sales at Acme" |
profile_data.profile_url | LinkedIn profile URL | "https://www.linkedin.com/in/alex-example" |
contact_data.contact_current_experiences[] | Current role: company name and domain, job title, company headcount | "Head of Sales", "acme.com" |
contact_data.has_email | Whether we hold an address | true |
contact_data.has_phone | Whether we hold a number | false |
contact_data.email_status | Deliverability of the best address | "verified" |
contact_data.email_type | work, work_other (a former employer) or personal | "work" |
meta.source_ids.person_id | The record id. Send it back to enrich that person | "1234567890" |
meta.nextCursor | Token for the next page. Absent on the last page | "(opaque string)" |
meta.depthCapped | true on the page that hits the 10,000-row cap | true |
Example values are placeholders, not a captured response. Field names follow the OpenAPI spec, where the response is success, a data array of person records and a meta object.
What you send
| Input | Required | Note |
|---|---|---|
domain | Yes | Path parameter, for example acme.com. |
limit | No | 1 to 100. Default 25. |
cursor | No | meta.nextCursor from the previous page, passed back unchanged. |
There is no filter on this endpoint and no lookup by company name. To narrow by title, seniority or country, use people search with the domain filter instead (see below).
Three ways to run it
In the app
The Exports page at app.leadocean.io builds a people export from filters, with a column picker and the record price shown before you start. Set the domain filter to the company, then download a CSV. The columns include current_company_name, current_company_domain, current_job_title, profile_full_name and profile_url. Each row is 1 record.
With the API
curl "https://api.leadocean.io/v1/companies/acme.com/people?limit=100" \
-H "x-api-key: $LEADOCEAN_API_KEY"Loop on meta.nextCursor until it is absent. Full parameter detail is in Company Employees API.
From an AI agent
There is no dedicated roster tool. The MCP tool is leadocean_search_leads with the domain filter, and it accepts title, seniority and country on top. Try: "List the VPs and directors at acme.com, and tell me how many have a verified work email." See Company Employees over MCP.
What it costs
Every person returned is 1 record. A page of 100 is 100 records, and a page trimmed at the end of the roster costs only what it returns. A 404, meaning no people held for that domain, costs nothing. Rejected requests (429, 402, 503) are never metered.
Free gives you 1,000 records, one-off, no card. Pro is $499 a month, flat, with no per-record price. See pricing.
Worked example: you pull 10,000 people across a set of target accounts. That is 10,000 records. Free covers the first 1,000 once. On Pro the month is $499 whatever the count, inside fair use. Domains that return a 404 add nothing.
Coverage
LeadOcean holds 693M people and 63M companies. On 30 September 2026, leadocean_count_leads with domain: ["stripe.com"] returned 10,301 people. That count covers only people with a verified, catch_all_valid or catch_all address, the tool's default. A roster that size will hit the row cap below.
Accuracy and limits
- 10,000 rows per walk. The roster stops there, with
meta.depthCapped: trueand no further cursor. Narrow with people search and run several smaller searches. Support can raise the figure for a genuine large export. - No contact points. Addresses and numbers come from enriching a person, 1 record each.
reveal_emailadds no extra record. - Email status values. verified, catch_all_valid, catch_all, risky, unknown, untested, invalid, role, disposable, spam_trap, abuse, derived, none. Read
email_typetoo:work_otheris usually a former employer. - Phone caveat. Where a phone record carries
dnc, it is not yet populated by the source.nullmeans unknown, never safe to call. - Rate limit. 100 requests per second per key, on every plan.
- Gap. About a fifth of the people search can find have no LinkedIn URL, so
profile_urlcan benull. Useperson_idto enrich them.
FAQ
How do I list employees of a company?
Call GET /v1/companies/{domain}/people with the company domain, or run a people search with the domain filter. Page with meta.nextCursor. Each person returned is 1 record.
Can I get their emails in the same call?
No. The roster is thin. It tells you has_email and email_status. Enrich the people you want, by person_id, to get the addresses.
Does a company with no people cost anything?
No. A 404 costs nothing, and neither does any rejected request.
How many employees can I list per company?
Up to 10,000 rows in one walk. For a bigger company, split by title, seniority or country with people search and run several searches.
List the employees of your first 1,000 target accounts free
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →