---
type: "firecrawl-provider"
description: "Search and enrich people and companies, and look up a current work email or reverse a contact."
use_when: "Search people, enrich one person, or read the phone numbers on a person.\n\nSearch companies, count a market, enrich one company, or list the people at a domain.\n\nOne current work email, personal addresses, phone numbers, or the person who holds an email or phone."
categories: "People"
capabilities: 8
pricing: "0–10 credits per billed unit; see each capability for its unit and maximum."
---
# LeadOcean on Firecrawl Alexandria

Search and enrich people and companies, and look up a current work email or reverse a contact.

- Categories: People
- Category index: [People category](https://alexandria.firecrawl.dev/agents/categories/people)
- Provider key: `leadocean`
- Access: Firecrawl credits
- Cost (People search): 10 credits per record
- Cost (Person enrichment): 10 credits per record
- Cost (Company search): 10 credits per record
- Cost (Company count): 0 credits per call
- Cost (Company enrichment): 10 credits per record
- Cost (People at a company): 10 credits per record
- Cost (Work email): 10 credits per record
- Cost (Reverse contact lookup): 10 credits per record

## More

- [Human guide](https://www.firecrawl.dev/app/alexandria/leadocean)
- [OpenAPI spec](https://alexandria.firecrawl.dev/agents/providers/leadocean/openapi.json)

## Capabilities

- [People search](https://alexandria.firecrawl.dev/agents/providers/leadocean/people/search): data is the page of thin people. meta.nextCursor pages the walk. meta.credits is the records LeadOcean counted. meta.countOnly marks a free sizing call, which costs nothing. An empty data array costs nothing.
- [Person enrichment](https://alexandria.firecrawl.dev/agents/providers/leadocean/people/enrich): One person under data. contact_data includes addresses only when reveal_email is true. The envelope meta.credits is the vendor record count. A hollow record costs nothing.
- [Company search](https://alexandria.firecrawl.dev/agents/providers/leadocean/companies/search): data is the page of companies. meta.nextCursor pages the walk. meta.total is the match count. meta.credits is the records LeadOcean counted. An empty data array costs nothing.
- [Company count](https://alexandria.firecrawl.dev/agents/providers/leadocean/companies/count): total is the match count, or null when it was withheld. totalIsExact says whether total is exact. facets breaks the count down. No company rows are returned.
- [Company enrichment](https://alexandria.firecrawl.dev/agents/providers/leadocean/companies/enrich): One company under data. meta.credits is the vendor record count. A record without a name and a domain costs nothing.
- [People at a company](https://alexandria.firecrawl.dev/agents/providers/leadocean/companies/people): data is the page of thin people. meta.nextCursor pages the roster. meta.companyIds names the companies on this page. meta.depthCapped is true when the walk has reached its cap. An empty page costs nothing.
- [Work email](https://alexandria.firecrawl.dev/agents/providers/leadocean/contact/work-email): One address, or null when the person is real and no current checked address qualifies. There is no meta on this door. status is verified, catch_all_valid, or catch_all. verified_batch_date is the run that checked it, or null when the check was not LeadOcean's.
- [Reverse contact lookup](https://alexandria.firecrawl.dev/agents/providers/leadocean/contact/reverse): The person who holds the point: person_id, person_group_id, name, title, and company, plus query, matched, and matched_in_record. meta.credits is the vendor record count. meta.stability is stable. A 404 means nobody holds it.

## 1. Choose this provider when

Search people, enrich one person, or read the phone numbers on a person.

Search companies, count a market, enrich one company, or list the people at a domain.

One current work email, personal addresses, phone numbers, or the person who holds an email or phone.

## 2. Minimal request

Call `POST https://api.firecrawl.dev/v2/scrape` with `{ alexandria: { provider, capability, options } }`. For a batch, send `{ alexandria: [...] }` with up to 10 calls.

```json
{
  "provider": "leadocean",
  "capability": "people/search",
  "options": {
    "q": "<q>",
    "limit": 1
  }
}
```

## 3. Add provider options

Use only the options needed for the task:

- `q` (string): Free text over the person's name, title, headline, summary, skills, job descriptions, and company name. Example: `<q>`
- `profileKeywords` (string[]): The person's own profile text. Same match as keywords. Example: `[]`
- `excludeProfileKeywords` (string[]): Profile keywords to exclude. Example: `[]`
- `title` (string[]): Job title keywords. Wrap a value in [brackets] for an exact match. Example: `[]`
- `excludeTitle` (string[]): Job titles to exclude. Example: `[]`
- `excludeViewed` (boolean): Leave out people this account marked viewed. Marking itself is not a capability here. Example: `false`
- `viewedSet` (string): Which viewed list excludeViewed reads. Default is default. Example: `<viewedSet>`
- `excludeIds` (string[]): person_id values to leave out, at most 1,000. Example: `[]`
- `seniority` (string[]): LeadOcean seniority: owner, founder, c_suite, partner, vp, head, director, manager, senior, entry, intern, or unknown. Example: `[]`
- `jobLevel` (string[]): Seniority as stored: C-Team, Director, Manager, Other, Staff, or VP. Example: `[]`
- `jobFunction` (string[]): Department of the current role. Values are LeadOcean's job_function labels. Example: `[]`
- `country` (string[]): Where the person is located. ISO 3166-1 alpha-2 codes. Example: `[]`
- `continent` (string[]): Continent the person is in. Example: `[]`
- `salesRegion` (string[]): Commercial region: NORAM, LATAM, EMEA, or APAC. Example: `[]`
- `city` (string[]): City keywords for the person. Example: `[]`
- `excludeCity` (string[]): Cities to exclude. Example: `[]`
- `education` (string[]): School, degree, or year phrases. Example: `[]`
- `minConnections` (number): Minimum LinkedIn connections, from 0 to 500. 0 means no minimum. Example: `10`
- `domain` (string[]): Company domains the person works at, without a scheme or path. Example: `[]`
- `companyName` (string[]): Company name phrase. Wrap a value in [brackets] for an exact name. Example: `[]`
- `excludeCompanyName` (string[]): Company name phrases to exclude. Example: `[]`
- `companyLinkedin` (string[]): Company LinkedIn URLs. Example: `[]`
- `industry` (string[]): Company industry. Send LeadOcean's exact industry label. Example: `[]`
- `excludeIndustry` (string[]): Industries to exclude. Send LeadOcean's exact industry label. Example: `[]`
- `companyType` (string[]): Legal type of the company, such as Privately Held or Public Company. Example: `[]`
- `employeeRange` (string[]): Headcount bracket, such as 51-200. Coarser than minEmployees and maxEmployees. Example: `[]`
- `minEmployees` (number): Company headcount, lower bound. Records with no figure are left out. Example: `10`
- `maxEmployees` (number): Company headcount, upper bound. Records with no figure are left out. Example: `10`
- `minFounded` (number): Earliest year the company was founded. Records with no figure are left out. Example: `10`
- `maxFounded` (number): Latest year the company was founded. Records with no figure are left out. Example: `10`
- `minFollowers` (number): Minimum company LinkedIn followers. 0 means no minimum. Applied through the employer, and only when the matching companies number 50,000 or fewer; otherwise the filter is named in meta.unsupportedFilters and a count is withheld. Example: `10`
- `fundingType` (string[]): Type of the last funding round. Applied through the employer, and only when the matching companies number 50,000 or fewer; otherwise the filter is named in meta.unsupportedFilters and a count is withheld. Example: `[]`
- `minFunding` (number): Total funding raised, in USD, lower bound. Applied through the employer, and only when the matching companies number 50,000 or fewer; otherwise the filter is named in meta.unsupportedFilters and a count is withheld. Example: `10`
- `maxFunding` (number): Total funding raised, in USD, upper bound. Applied through the employer, and only when the matching companies number 50,000 or fewer; otherwise the filter is named in meta.unsupportedFilters and a count is withheld. Example: `10`
- `minLastFundingYear` (number): Funded no earlier than this year. Applied through the employer, and only when the matching companies number 50,000 or fewer; otherwise the filter is named in meta.unsupportedFilters and a count is withheld. Example: `10`
- `maxLastFundingYear` (number): Funded no later than this year. Applied through the employer, and only when the matching companies number 50,000 or fewer; otherwise the filter is named in meta.unsupportedFilters and a count is withheld. Example: `10`
- `investors` (string[]): Lead investor keywords. Applied through the employer, and only when the matching companies number 50,000 or fewer; otherwise the filter is named in meta.unsupportedFilters and a count is withheld. Example: `[]`
- `sic` (string[]): SIC codes of the employer. Applied through the employer, and only when the matching companies number 50,000 or fewer; otherwise the filter is named in meta.unsupportedFilters and a count is withheld. Example: `[]`
- `naicsSector` (string[]): Two-digit NAICS sector stored on the person. Example: `[]`
- `keywords` (string[]): Phrases in the person's own headline, summary, skills, and job descriptions. Example: `[]`
- `excludeKeywords` (string[]): Profile keywords to exclude. Example: `[]`
- `companyKeywords` (string[]): What the employer does, in its own words, or an exact industry label. Applied through the employer, and only when the matching companies number 50,000 or fewer; otherwise the filter is named in meta.unsupportedFilters and a count is withheld. Example: `[]`
- `hqCountry` (string[]): Company headquarters country. ISO 3166-1 alpha-2 codes. Example: `[]`
- `hqCity` (string[]): Company headquarters city keywords. Applied through the employer, and only when the matching companies number 50,000 or fewer; otherwise the filter is named in meta.unsupportedFilters and a count is withheld. Example: `[]`
- `hqState` (string[]): Company headquarters state or region. A code such as TX also matches Texas. Applied through the employer, and only when the matching companies number 50,000 or fewer; otherwise the filter is named in meta.unsupportedFilters and a count is withheld. Example: `[]`
- `hqContinent` (string[]): Continent of the company headquarters. Example: `[]`
- `hqSalesRegion` (string[]): Commercial region of the company headquarters. Example: `[]`
- `technologies` (string[]): Technologies detected on the company website. Example: `[]`
- `technologyCategories` (string[]): What a detected technology is for, such as Analytics or CDN. Send LeadOcean's category label. Example: `[]`
- `emailStatus` (string[]): Deliverability of the best email: verified, catch_all_valid, catch_all, untested, and the other LeadOcean statuses. Example: `[]`
- `emailType` (string[]): work, work_other, work_any, personal, other, unknown, or none. Example: `[]`
- `hasEmail` (boolean): Only people with, or without, a known email. Example: `false`
- `hasPhone` (boolean): Only people with, or without, a known phone number. Example: `false`
- `reachable` (string): any: an email or a phone. strict: the email is verified, catch_all_valid, or catch_all. Example: `any`
- `cursor` (string): Opaque page token. Send meta.nextCursor back unchanged. Example: `<cursor>`
- `limit` (number): Rows to return, from 1 to 10. LeadOcean allows up to 100; this cap keeps a page within 100 Firecrawl credits. Each returned row costs 10 credits. An empty page costs nothing. Omitting it sends 1. Example: `1`
- `facets` (boolean): Also return counts by seniority, country, industry, and company size. Example: `false`
- `facetCompanies` (boolean): With facets, also estimate distinct employers in each bucket. Example: `false`
- `slim` (boolean): Drop empty and heavy parts of each record. Default false. Example: `false`
- `fields` (string[]): Dotted paths to keep, such as profile_data.profile_full_name. Everything else is omitted. Example: `[]`
- `order` (string): ranked (default) scores the page. stable walks the snapshot in id order. Send the same order on every page. Example: `ranked`
- `count` (boolean): Also return meta.total. With limit 1 this is a free sizing call: data is empty and meta.countOnly is true. A larger limit is a paid page plus the total. Example: `false`

## 4. Request through your preferred interface

### JavaScript

```javascript
const result = await firecrawl.scrape({
  alexandria: {
    provider: "leadocean",
    capability: "people/search",
    options: {
      q: "<q>",
      limit: 1,
    },
  },
});
```

### Python

```python
result = firecrawl.scrape_alexandria({
  "provider": "leadocean",
  "capability": "people/search",
  "options": {
    "q": "<q>",
    "limit": 1
  }
})
```

### cURL

```sh
curl https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "alexandria": {
    "provider": "leadocean",
    "capability": "people/search",
    "options": {
      "q": "<q>",
      "limit": 1
    }
  }
}'
```

### CLI

```sh
firecrawl scrape 'leadocean/people/search' \
  --options '{"q":"<q>","limit":1}'
```


### MCP

Call the FCX MCP retrieve tool with this object:

```json
{
  "provider": "leadocean",
  "capability": "people/search",
  "options": {
    "q": "<q>",
    "limit": 1
  }
}
```

Ask for only the returned fields needed by the task.

## 5. Full request shape

```json
{
  "provider": "leadocean",
  "capability": "people/search",
  "options": {
    "q": "<q>",
    "limit": 1
  }
}
```

## 6. Response data

The response includes `success`, `provider`, `capability`, `creditsCost` and `data`. This example shows the provider payload in `data`:

```json
{
  "data": [
    {
      "profile_data": {},
      "contact_data": {},
      "resume_data": {},
      "meta": {}
    }
  ]
}
```

## API reference-derived contract

The following capability contract is generated from the same normalized Alexandria API reference exposed in the API spec.

### People search

- Capability: `people/search`
- Description: data is the page of thin people. meta.nextCursor pages the walk. meta.credits is the records LeadOcean counted. meta.countOnly marks a free sizing call, which costs nothing. An empty data array costs nothing.
- Instructions: Search people by title, seniority, location, employer, or email and phone flags. Each returned person costs 10 credits. An empty page costs nothing. limit is 1 to 10, and omitting it requests 1, so a page stays within 100 credits. count true with limit 1, or with limit omitted, quotes 0 credits and returns meta.total with an empty data array. Search rows carry has_email and has_phone, not the addresses. Use people/enrich for one full profile, or contact/work-email for the current work address.
- Cost: 10 credits per record
- Capability file: [People search](https://alexandria.firecrawl.dev/agents/providers/leadocean/people/search)

Accepted options:
- `q` (string): Free text over the person's name, title, headline, summary, skills, job descriptions, and company name. Example: `<q>`
- `profileKeywords` (string[]): The person's own profile text. Same match as keywords. Example: `[]`
- `excludeProfileKeywords` (string[]): Profile keywords to exclude. Example: `[]`
- `title` (string[]): Job title keywords. Wrap a value in [brackets] for an exact match. Example: `[]`
- `excludeTitle` (string[]): Job titles to exclude. Example: `[]`
- `excludeViewed` (boolean): Leave out people this account marked viewed. Marking itself is not a capability here. Example: `false`
- `viewedSet` (string): Which viewed list excludeViewed reads. Default is default. Example: `<viewedSet>`
- `excludeIds` (string[]): person_id values to leave out, at most 1,000. Example: `[]`
- `seniority` (string[]): LeadOcean seniority: owner, founder, c_suite, partner, vp, head, director, manager, senior, entry, intern, or unknown. Example: `[]`
- `jobLevel` (string[]): Seniority as stored: C-Team, Director, Manager, Other, Staff, or VP. Example: `[]`
- `jobFunction` (string[]): Department of the current role. Values are LeadOcean's job_function labels. Example: `[]`
- `country` (string[]): Where the person is located. ISO 3166-1 alpha-2 codes. Example: `[]`
- `continent` (string[]): Continent the person is in. Example: `[]`
- `salesRegion` (string[]): Commercial region: NORAM, LATAM, EMEA, or APAC. Example: `[]`
- `city` (string[]): City keywords for the person. Example: `[]`
- `excludeCity` (string[]): Cities to exclude. Example: `[]`
- `education` (string[]): School, degree, or year phrases. Example: `[]`
- `minConnections` (number): Minimum LinkedIn connections, from 0 to 500. 0 means no minimum. Example: `10`
- `domain` (string[]): Company domains the person works at, without a scheme or path. Example: `[]`
- `companyName` (string[]): Company name phrase. Wrap a value in [brackets] for an exact name. Example: `[]`
- `excludeCompanyName` (string[]): Company name phrases to exclude. Example: `[]`
- `companyLinkedin` (string[]): Company LinkedIn URLs. Example: `[]`
- `industry` (string[]): Company industry. Send LeadOcean's exact industry label. Example: `[]`
- `excludeIndustry` (string[]): Industries to exclude. Send LeadOcean's exact industry label. Example: `[]`
- `companyType` (string[]): Legal type of the company, such as Privately Held or Public Company. Example: `[]`
- `employeeRange` (string[]): Headcount bracket, such as 51-200. Coarser than minEmployees and maxEmployees. Example: `[]`
- `minEmployees` (number): Company headcount, lower bound. Records with no figure are left out. Example: `10`
- `maxEmployees` (number): Company headcount, upper bound. Records with no figure are left out. Example: `10`
- `minFounded` (number): Earliest year the company was founded. Records with no figure are left out. Example: `10`
- `maxFounded` (number): Latest year the company was founded. Records with no figure are left out. Example: `10`
- `minFollowers` (number): Minimum company LinkedIn followers. 0 means no minimum. Applied through the employer, and only when the matching companies number 50,000 or fewer; otherwise the filter is named in meta.unsupportedFilters and a count is withheld. Example: `10`
- `fundingType` (string[]): Type of the last funding round. Applied through the employer, and only when the matching companies number 50,000 or fewer; otherwise the filter is named in meta.unsupportedFilters and a count is withheld. Example: `[]`
- `minFunding` (number): Total funding raised, in USD, lower bound. Applied through the employer, and only when the matching companies number 50,000 or fewer; otherwise the filter is named in meta.unsupportedFilters and a count is withheld. Example: `10`
- `maxFunding` (number): Total funding raised, in USD, upper bound. Applied through the employer, and only when the matching companies number 50,000 or fewer; otherwise the filter is named in meta.unsupportedFilters and a count is withheld. Example: `10`
- `minLastFundingYear` (number): Funded no earlier than this year. Applied through the employer, and only when the matching companies number 50,000 or fewer; otherwise the filter is named in meta.unsupportedFilters and a count is withheld. Example: `10`
- `maxLastFundingYear` (number): Funded no later than this year. Applied through the employer, and only when the matching companies number 50,000 or fewer; otherwise the filter is named in meta.unsupportedFilters and a count is withheld. Example: `10`
- `investors` (string[]): Lead investor keywords. Applied through the employer, and only when the matching companies number 50,000 or fewer; otherwise the filter is named in meta.unsupportedFilters and a count is withheld. Example: `[]`
- `sic` (string[]): SIC codes of the employer. Applied through the employer, and only when the matching companies number 50,000 or fewer; otherwise the filter is named in meta.unsupportedFilters and a count is withheld. Example: `[]`
- `naicsSector` (string[]): Two-digit NAICS sector stored on the person. Example: `[]`
- `keywords` (string[]): Phrases in the person's own headline, summary, skills, and job descriptions. Example: `[]`
- `excludeKeywords` (string[]): Profile keywords to exclude. Example: `[]`
- `companyKeywords` (string[]): What the employer does, in its own words, or an exact industry label. Applied through the employer, and only when the matching companies number 50,000 or fewer; otherwise the filter is named in meta.unsupportedFilters and a count is withheld. Example: `[]`
- `hqCountry` (string[]): Company headquarters country. ISO 3166-1 alpha-2 codes. Example: `[]`
- `hqCity` (string[]): Company headquarters city keywords. Applied through the employer, and only when the matching companies number 50,000 or fewer; otherwise the filter is named in meta.unsupportedFilters and a count is withheld. Example: `[]`
- `hqState` (string[]): Company headquarters state or region. A code such as TX also matches Texas. Applied through the employer, and only when the matching companies number 50,000 or fewer; otherwise the filter is named in meta.unsupportedFilters and a count is withheld. Example: `[]`
- `hqContinent` (string[]): Continent of the company headquarters. Example: `[]`
- `hqSalesRegion` (string[]): Commercial region of the company headquarters. Example: `[]`
- `technologies` (string[]): Technologies detected on the company website. Example: `[]`
- `technologyCategories` (string[]): What a detected technology is for, such as Analytics or CDN. Send LeadOcean's category label. Example: `[]`
- `emailStatus` (string[]): Deliverability of the best email: verified, catch_all_valid, catch_all, untested, and the other LeadOcean statuses. Example: `[]`
- `emailType` (string[]): work, work_other, work_any, personal, other, unknown, or none. Example: `[]`
- `hasEmail` (boolean): Only people with, or without, a known email. Example: `false`
- `hasPhone` (boolean): Only people with, or without, a known phone number. Example: `false`
- `reachable` (string): any: an email or a phone. strict: the email is verified, catch_all_valid, or catch_all. Example: `any`
- `cursor` (string): Opaque page token. Send meta.nextCursor back unchanged. Example: `<cursor>`
- `limit` (number): Rows to return, from 1 to 10. LeadOcean allows up to 100; this cap keeps a page within 100 Firecrawl credits. Each returned row costs 10 credits. An empty page costs nothing. Omitting it sends 1. Example: `1`
- `facets` (boolean): Also return counts by seniority, country, industry, and company size. Example: `false`
- `facetCompanies` (boolean): With facets, also estimate distinct employers in each bucket. Example: `false`
- `slim` (boolean): Drop empty and heavy parts of each record. Default false. Example: `false`
- `fields` (string[]): Dotted paths to keep, such as profile_data.profile_full_name. Everything else is omitted. Example: `[]`
- `order` (string): ranked (default) scores the page. stable walks the snapshot in id order. Send the same order on every page. Example: `ranked`
- `count` (boolean): Also return meta.total. With limit 1 this is a free sizing call: data is empty and meta.countOnly is true. A larger limit is a paid page plus the total. Example: `false`

Response schema example:
```json
{
  "data": [
    {
      "profile_data": {},
      "contact_data": {},
      "resume_data": {},
      "meta": {}
    }
  ]
}
```

### Person enrichment

- Capability: `people/enrich`
- Description: One person under data. contact_data includes addresses only when reveal_email is true. The envelope meta.credits is the vendor record count. A hollow record costs nothing.
- Instructions: Enrich one person from a LinkedIn URL, an email, a phone number, or a person_id. Send exactly one identifier. 10 credits when LeadOcean charged and the record has a name, a job, an email, or a phone. A 404 and a hollow record cost nothing. reveal_email adds the addresses at the same price. A string true or false is sent as a JSON boolean. Use people/search to find the person_id first. Use contact/work-email when you only want the current work address.
- Cost: 10 credits per record
- Capability file: [Person enrichment](https://alexandria.firecrawl.dev/agents/providers/leadocean/people/enrich)

Accepted options:
- `linkedin_url` (string): Personal LinkedIn profile URL. Example: `<linkedin_url>`
- `email` (string): An email address for the person. Example: `<email>`
- `phone` (string): A phone number for the person, in any common format. Example: `<phone>`
- `person_id` (string): The id a search row carries at meta.source_ids.person_id. It names a record. Example: `<person_id>`
- `reveal_email` (boolean): Include every email and phone. No extra record. Omitted, it is true only when the lookup key is email. Example: `false`

Response schema example:
```json
{
  "data": {
    "profile_data": {},
    "contact_data": {},
    "resume_data": {},
    "meta": {}
  }
}
```

### Company search

- Capability: `companies/search`
- Description: data is the page of companies. meta.nextCursor pages the walk. meta.total is the match count. meta.credits is the records LeadOcean counted. An empty data array costs nothing.
- Instructions: Search companies by name, domain, industry, headcount, funding, or technology. Each returned company costs 10 credits. An empty page costs nothing. limit is 1 to 10, and omitting it requests 1. count true with limit 1, or with limit omitted, quotes 0 credits and returns the total without rows. companies/count is the free call with breakdowns. Use companies/enrich to read one domain.
- Cost: 10 credits per record
- Capability file: [Company search](https://alexandria.firecrawl.dev/agents/providers/leadocean/companies/search)

Accepted options:
- `q` (string): Free text over the company name and description. Example: `<q>`
- `name` (string[]): Company name phrase. Wrap a value in [brackets] for an exact name. Example: `[]`
- `excludeName` (string[]): Company name phrases to exclude. Example: `[]`
- `domain` (string[]): Company website domains, without a scheme or path. Example: `[]`
- `linkedin` (string[]): Company LinkedIn URLs. Example: `[]`
- `industry` (string[]): Company industry. Send LeadOcean's exact industry label. Example: `[]`
- `excludeIndustry` (string[]): Industries to exclude. Send LeadOcean's exact industry label. Example: `[]`
- `companyType` (string[]): Legal type of the company. Example: `[]`
- `employeeRange` (string[]): Headcount bracket, such as 51-200. Example: `[]`
- `minEmployees` (number): Company headcount, lower bound. Records with no figure are left out. Example: `10`
- `maxEmployees` (number): Company headcount, upper bound. Records with no figure are left out. Example: `10`
- `minRevenue` (number): Annual revenue floor, in USD. Records with no figure are left out. Example: `10`
- `maxRevenue` (number): Annual revenue ceiling, in USD. Records with no figure are left out. Example: `10`
- `minFollowers` (number): Minimum company LinkedIn followers. 0 means no minimum. Example: `10`
- `minFounded` (number): Earliest year founded. Records with no figure are left out. Example: `10`
- `maxFounded` (number): Latest year founded. Records with no figure are left out. Example: `10`
- `fundingType` (string[]): Type of the most recent funding round. Example: `[]`
- `minFunding` (number): Total funding raised, in USD, lower bound. Example: `10`
- `maxFunding` (number): Total funding raised, in USD, upper bound. Example: `10`
- `minLastFundingYear` (number): Funded no earlier than this year. Example: `10`
- `maxLastFundingYear` (number): Funded no later than this year. Example: `10`
- `investors` (string[]): Lead investor name keywords. Example: `[]`
- `naics` (string[]): NAICS codes. Any code the company carries. Example: `[]`
- `naicsPrimary` (string[]): The one NAICS code the company is filed under. Example: `[]`
- `naicsSector` (string[]): Two-digit NAICS sector. Example: `[]`
- `sic` (string[]): SIC codes. Example: `[]`
- `keywords` (string[]): Phrases in the company description, specialties, tags, and name, or an exact industry label. Example: `[]`
- `excludeKeywords` (string[]): Company keywords, or exact industry labels, to exclude. Example: `[]`
- `hqCountry` (string[]): Headquarters country. ISO 3166-1 alpha-2 codes. Example: `[]`
- `hqCity` (string[]): Headquarters city keywords. Example: `[]`
- `hqState` (string[]): Headquarters state or region. A code such as TX also matches Texas. Example: `[]`
- `hqContinent` (string[]): Continent of the headquarters. Example: `[]`
- `hqSalesRegion` (string[]): Commercial region of the headquarters. Example: `[]`
- `technologies` (string[]): Technologies detected on the company website. Example: `[]`
- `technologyCategories` (string[]): What a detected technology is for. Send LeadOcean's category label. Example: `[]`
- `hasMailableContacts` (boolean): True keeps companies with a verified, catch_all_valid, or catch_all email on at least one person. Example: `false`
- `cursor` (string): Opaque page token. Send meta.nextCursor back unchanged. Example: `<cursor>`
- `limit` (number): Rows to return, from 1 to 10. LeadOcean allows up to 100; this cap keeps a page within 100 Firecrawl credits. Each returned row costs 10 credits. An empty page costs nothing. Omitting it sends 1. Example: `1`
- `slim` (boolean): Drop the technology list, tags, specialties, financials, and empty fields. Default false. Example: `false`
- `fields` (string[]): Dotted paths to keep, such as company_data.company_name. Everything else is omitted. Example: `[]`
- `order` (string): ranked (default) scores the page. stable walks the snapshot in id order. Example: `ranked`
- `count` (boolean): Also return meta.total. Company search already counts the total on the first page. With limit 1 and count true, the call is a free sizing request. Example: `false`

Response schema example:
```json
{
  "data": [
    {
      "company_data": {},
      "company_detected_technologies": {},
      "company_metrics": {},
      "meta": {}
    }
  ]
}
```

### Company count

- Capability: `companies/count`
- Description: total is the match count, or null when it was withheld. totalIsExact says whether total is exact. facets breaks the count down. No company rows are returned.
- Instructions: Count companies that match a company search, for free, with breakdowns by industry, headcount, headquarters country, headquarters state, and NAICS. The same filters as companies/search, without a page. total is null when a filter could not be applied; totalWithheld names it. Nothing is charged.
- Cost: 0 credits per call
- Capability file: [Company count](https://alexandria.firecrawl.dev/agents/providers/leadocean/companies/count)

Accepted options:
- `q` (string): Free text over the company name and description. Example: `<q>`
- `name` (string[]): Company name phrase. Wrap a value in [brackets] for an exact name. Example: `[]`
- `excludeName` (string[]): Company name phrases to exclude. Example: `[]`
- `domain` (string[]): Company website domains, without a scheme or path. Example: `[]`
- `linkedin` (string[]): Company LinkedIn URLs. Example: `[]`
- `industry` (string[]): Company industry. Send LeadOcean's exact industry label. Example: `[]`
- `excludeIndustry` (string[]): Industries to exclude. Send LeadOcean's exact industry label. Example: `[]`
- `companyType` (string[]): Legal type of the company. Example: `[]`
- `employeeRange` (string[]): Headcount bracket, such as 51-200. Example: `[]`
- `minEmployees` (number): Company headcount, lower bound. Records with no figure are left out. Example: `10`
- `maxEmployees` (number): Company headcount, upper bound. Records with no figure are left out. Example: `10`
- `minRevenue` (number): Annual revenue floor, in USD. Records with no figure are left out. Example: `10`
- `maxRevenue` (number): Annual revenue ceiling, in USD. Records with no figure are left out. Example: `10`
- `minFollowers` (number): Minimum company LinkedIn followers. 0 means no minimum. Example: `10`
- `minFounded` (number): Earliest year founded. Records with no figure are left out. Example: `10`
- `maxFounded` (number): Latest year founded. Records with no figure are left out. Example: `10`
- `fundingType` (string[]): Type of the most recent funding round. Example: `[]`
- `minFunding` (number): Total funding raised, in USD, lower bound. Example: `10`
- `maxFunding` (number): Total funding raised, in USD, upper bound. Example: `10`
- `minLastFundingYear` (number): Funded no earlier than this year. Example: `10`
- `maxLastFundingYear` (number): Funded no later than this year. Example: `10`
- `investors` (string[]): Lead investor name keywords. Example: `[]`
- `naics` (string[]): NAICS codes. Any code the company carries. Example: `[]`
- `naicsPrimary` (string[]): The one NAICS code the company is filed under. Example: `[]`
- `naicsSector` (string[]): Two-digit NAICS sector. Example: `[]`
- `sic` (string[]): SIC codes. Example: `[]`
- `keywords` (string[]): Phrases in the company description, specialties, tags, and name, or an exact industry label. Example: `[]`
- `excludeKeywords` (string[]): Company keywords, or exact industry labels, to exclude. Example: `[]`
- `hqCountry` (string[]): Headquarters country. ISO 3166-1 alpha-2 codes. Example: `[]`
- `hqCity` (string[]): Headquarters city keywords. Example: `[]`
- `hqState` (string[]): Headquarters state or region. A code such as TX also matches Texas. Example: `[]`
- `hqContinent` (string[]): Continent of the headquarters. Example: `[]`
- `hqSalesRegion` (string[]): Commercial region of the headquarters. Example: `[]`
- `technologies` (string[]): Technologies detected on the company website. Example: `[]`
- `technologyCategories` (string[]): What a detected technology is for. Send LeadOcean's category label. Example: `[]`
- `hasMailableContacts` (boolean): True keeps companies with a verified, catch_all_valid, or catch_all email on at least one person. Example: `false`
- `slim` (boolean): Accepted by the count route. The response is the totals, not company rows. Example: `false`
- `fields` (string[]): Accepted by the count route. The response is the totals, not company rows. Example: `[]`

Response schema example:
```json
{
  "data": {
    "total": 0,
    "totalIsExact": false,
    "totalWithheld": {},
    "facets": {}
  }
}
```

### Company enrichment

- Capability: `companies/enrich`
- Description: One company under data. meta.credits is the vendor record count. A record without a name and a domain costs nothing.
- Instructions: Enrich one company from its domain or its LinkedIn page. Send exactly one. 10 credits when the record has a name or a domain. A 404 and a hollow record cost nothing. Use companies/search or companies/count to find companies first. Use companies/people to list the people at a domain.
- Cost: 10 credits per record
- Capability file: [Company enrichment](https://alexandria.firecrawl.dev/agents/providers/leadocean/companies/enrich)

Accepted options:
- `domain` (string): Company domain, such as stripe.com. No scheme or path. Example: `<domain>`
- `linkedin_url` (string): Company LinkedIn page URL. Example: `<linkedin_url>`

Response schema example:
```json
{
  "data": {
    "company_data": {},
    "company_detected_technologies": {},
    "company_metrics": {},
    "meta": {}
  }
}
```

### People at a company

- Capability: `companies/people`
- Description: data is the page of thin people. meta.nextCursor pages the roster. meta.companyIds names the companies on this page. meta.depthCapped is true when the walk has reached its cap. An empty page costs nothing.
- Instructions: List the people LeadOcean holds at one company domain. Thin records, with no contact points. Each returned person costs 10 credits. An empty page costs nothing. limit is 1 to 10, and omitting it requests 1. Enrich a person for the full profile. A 404 means no people are held at that domain and costs nothing.
- Cost: 10 credits per record
- Capability file: [People at a company](https://alexandria.firecrawl.dev/agents/providers/leadocean/companies/people)

Accepted options:
- `domain` (string, required): Company domain, such as stripe.com. No scheme or path. Example: `<domain>`
- `cursor` (string): Opaque page token. Send meta.nextCursor back unchanged. Example: `<cursor>`
- `limit` (number): Rows to return, from 1 to 10. LeadOcean allows up to 100; this cap keeps a page within 100 Firecrawl credits. Each returned row costs 10 credits. An empty page costs nothing. Omitting it sends 1. Example: `1`

Response schema example:
```json
{
  "data": [
    {
      "profile_data": {},
      "contact_data": {},
      "resume_data": {},
      "meta": {}
    }
  ]
}
```

### Work email

- Capability: `contact/work-email`
- Description: One address, or null when the person is real and no current checked address qualifies. There is no meta on this door. status is verified, catch_all_valid, or catch_all. verified_batch_date is the run that checked it, or null when the check was not LeadOcean's.
- Instructions: Get the one current work email that LeadOcean has checked: verified, catch_all_valid, or catch_all, at the current employer's domain. Send exactly one of linkedin_url, contact_id, or person_id. 10 credits on a 200, including data null, because the lookup is billed even when no address qualifies. A 404, no person at all, costs nothing. A search row's has_email flag is free and comes from people/search.
- Cost: 10 credits per record
- Capability file: [Work email](https://alexandria.firecrawl.dev/agents/providers/leadocean/contact/work-email)

Accepted options:
- `linkedin_url` (string): Personal LinkedIn profile URL, linkedin.com/in/... Example: `<linkedin_url>`
- `contact_id` (string): The person_id a search row carries at meta.source_ids.person_id. Do not also send person_id. Example: `<contact_id>`
- `person_id` (string): The same id as contact_id, under its original name. Send one of the two, never both. Example: `<person_id>`

Response schema example:
```json
{
  "data": {
    "email": "<email>",
    "status": "<status>",
    "verified_batch_date": "<verified_batch_date>"
  }
}
```

### Reverse contact lookup

- Capability: `contact/reverse`
- Description: The person who holds the point: person_id, person_group_id, name, title, and company, plus query, matched, and matched_in_record. meta.credits is the vendor record count. meta.stability is stable. A 404 means nobody holds it.
- Instructions: Find who holds an email address or a phone number. Send exactly one. The answer is the identity, not the full profile. 10 credits when a person comes back. A 404, nobody holds the point, costs nothing. Use people/enrich with the returned person_id for the full record, at the same price.
- Cost: 10 credits per record
- Capability file: [Reverse contact lookup](https://alexandria.firecrawl.dev/agents/providers/leadocean/contact/reverse)

Accepted options:
- `email` (string): An address to look up. Send this or phone, never both. Example: `<email>`
- `phone` (string): A number to look up, in any common format. Send this or email, never both. Example: `<phone>`

Response schema example:
```json
{
  "data": {
    "person_id": "<person_id>",
    "person_group_id": "<person_group_id>",
    "linkedin_url": "<linkedin_url>",
    "full_name": "<full_name>",
    "job_title": "<job_title>",
    "company_name": "<company_name>",
    "company_domain": "<company_domain>",
    "query": {},
    "matched": {},
    "matched_in_record": false
  }
}
```
