# Ocean.io Company Search API

> Ocean.io Company Search API is a paid API for AI agents from x402.orthogonal.com, paid per call via x402, $1/call, status unknown (last checked 2026-09-16).

Search for enriched company profiles using filters like industry, size, location, technologies, revenue, headcount growth, and lookalike domains, with pagination support.

## Facts

- Endpoint: POST https://x402.orthogonal.com/ocean-io/v3/search/companies
- Price: $1/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-16
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/ocean-io-company-search-api-497ae336
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_BzrN_h_xTsBmLUQYIo-tr

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability ocean-io-company-search-api-497ae336 -d '<json body>'
```

Example prompt: Find me up to 100 SaaS companies in the United States with 50 to 500 employees that use Salesforce, are growing headcount, and look similar to hubspot.com — return their domain, employee count, revenue, and technologies.

## When to prefer this

Use this endpoint when you need to discover or build lists of companies matching specific firmographic, technographic, or people-based criteria at scale. Prefer it over general web search for structured B2B prospecting, market segmentation, competitive intelligence, or lookalike modeling. It's especially valuable when you need paginated, enriched company profiles with fields like headcount growth, technologies, and revenue — not just a name and URL.

## Known failure modes

- Invalid filter combination returns empty results or 400 error
- Exceeding size limit of 10,000 returns validation error
- Invalid searchAfter cursor causes pagination failure
- Missing or malformed peopleFilters fields return 400
- Unsupported field name in fields array causes error
- Payment failure ($1 USDC) prevents request from being processed

## How this service works

Search for companies using filters (industry, size, location, technologies, revenue, headcount growth, etc.) and/or lookalike domains. Returns enriched company profiles. Use the size parameter to control max results (1-10,000), defaults to 50. Use searchAfter from the previous response to paginate.

## Output

Returns an array of enriched company profile objects, each containing requested fields such as domain, name, employee count, industry categories, technologies, revenue, locations, web traffic, funding round, headcount growth, emails, and phones. Also includes a searchAfter pagination cursor for retrieving subsequent pages of results.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "size": {
   "type": "integer",
   "description": "Max results to return (1-10,000). Default: 50."
  },
  "fields": {
   "type": "array",
   "description": "string[] - Fields to return in Company objects (reduces bandwidth). Options: \"domain\", \"countries\", \"primaryCountry\", \"companySize\", \"industryCategories\", \"industries\", \"linkedinIndustry\", \"ecommerce\", \"keywords\", \"employeeCountOcean\", \"employeeCountLinkedin\", \"revenue\", \"yearFounded\", \"description\", \"emails\", \"phones\", \"logo\", \"technologies\", \"technologyCategories\", \"mobileApps\", \"webTraffic\", \"medias\", \"name\", \"legalName\", \"locations\", \"departmentSizes\", \"rootUrl\", \"faxes\", \"impressum\", \"fundingRound\", \"redirectedFrom\", \"updatedAt\", \"headcountGrowth\", \"headcountGrowthPerDepartment\". Nested fields also supported (e.g. \"phones.number\", \"webTraffic.visits\", \"medias.linkedin\", \"locations.country\")."
  },
  "searchAfter": {
   "type": "string",
   "description": "Pagination cursor returned by the previous response to get the next page of results."
  },
  "peopleFilters": {
   "type": "object",
   "description": "People filters to find companies with matching employees: lookalikeLinkedinHandles: string[], countries: string[] (ISO 3166 alpha-2), excludeCountries: string[], regions: string[], states: object[] ({country: string, abbreviation: string}), excludeStates: object[], cities: object[] ({country: string, city: string}), names: string[], seniorities: string[] (enum: \"Owner\", \"Founder\", \"Board Member\", \"C-Level\", \"Partner\", \"VP\", \"Head\", \"Director\", \"Manager\", \"Other\"), departments: string[] (enum: \"Accounting and Finance\", \"Board\", \"Business Support\", \"Customer Relations\", \"Design\", \"Editorial Personnel\", \"Engineering\", \"Founder/Owner\", \"Healthcare\", \"HR\", \"Legal\", \"Management\", \"Manufacturing\", \"Marketing and Advertising\", \"Operations\", \"PR and Communications\", \"Procurement\", \"Product\", \"Quality Control\", \"R&D\", \"Sales\", \"Security\", \"Supply Chain\", \"Other\"), jobTitleKeywords: object {anyOf: string[], allOf: string[], noneOf: string[]}, skills: object {anyOf: string[], allOf: string[], noneOf: string[]}, allJobDescriptions: object {anyOf: string[], allOf: string[], noneOf: string[]}, currentJobDescription: object {anyOf: string[], allOf: string[], noneOf: string[]}, profileDescription: object {anyOf: string[], allOf: stri
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/ocean-io-company-search-api-497ae336/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.orthogonal.com](https://www.zero.xyz/host/x402.orthogonal.com/llms.txt)
