Enrichment

List the employees of a company

One domain in, the people we hold there out. 1 record per person returned. A miss costs nothing.

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

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.

FieldWhat it isExample
profile_data.profile_full_nameName"Alex Example"
profile_data.profile_headlineLinkedIn headline"Head of Sales at Acme"
profile_data.profile_urlLinkedIn 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_emailWhether we hold an addresstrue
contact_data.has_phoneWhether we hold a numberfalse
contact_data.email_statusDeliverability of the best address"verified"
contact_data.email_typework, work_other (a former employer) or personal"work"
meta.source_ids.person_idThe record id. Send it back to enrich that person"1234567890"
meta.nextCursorToken for the next page. Absent on the last page"(opaque string)"
meta.depthCappedtrue on the page that hits the 10,000-row captrue

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

InputRequiredNote
domainYesPath parameter, for example acme.com.
limitNo1 to 100. Default 25.
cursorNometa.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

bash
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: true and 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_email adds 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_type too: work_other is usually a former employer.
  • Phone caveat. Where a phone record carries dnc, it is not yet populated by the source. null means 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_url can be null. Use person_id to 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 →