<!-- AUTO-GENERATED from the capability registry — regenerate: npm run generate:registry -->

# `company_search` — Orange Slice capability

> Outcome-priced capability. One price for the answer, whichever providers it took.
> Everything we expose, with prices: https://orangeslice.ai/llms.txt

Finds companies by firmographics — industry, country, region, city, headcount, size band, founding year, ticker, or domain. Billed one credit per row returned, so `--limit` is also your budget. Emits `companySlug`, which `search employees` reads directly.

## Price

**$0.002 per result, minimum $0.002, up to $4.00 per call**

Billed per row returned, within the floor and ceiling above.

The price is a property of the outcome, not of the work behind it. Whichever
vendor serves this call, and whatever it costs us, the number above is the number
quoted before the run and charged after it.


## Call it

**CLI**

```bash
orangeslice search companies --country US --industry-code 4 --employee-count-min 500 --limit 25

# start from a market rather than a list you already had:
orangeslice search companies --country US --industry-code 4 --employee-count-min 500 \
  | orangeslice search employees --title-variations "VP Sales" \
  | orangeslice enrich work_email \
  | orangeslice sheets push "US software VPs"
```

**HTTP**

```bash
curl -X POST 'https://orangeslice.ai/api/v1/run' \
  -H 'Authorization: Bearer $ORANGESLICE_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"capability":"company_search","input":{"country":"<string>","domain":"<string[]>","employeeCountMax":"<number>"}}'
```

**SDK**

```ts
await services.company.search({ country: "…", domain: "…", employeeCountMax: "…" });
```

## Inputs

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `country` | string | No | 2-letter country code, e.g. 'US'. The cheapest filter to add — pair it with any other |
| `domain` | string[] | No | Exact domains, up to 5 — the fastest lookup when you already have them |
| `employeeCountMax` | number | No | Maximum headcount |
| `employeeCountMin` | number | No | Minimum headcount |
| `foundedAfter` | number | No | Founded in or after this year, e.g. 2020 |
| `industryCode` | string[] | No | LinkedIn industry codes, e.g. 4 = software, 6 = IT services, 96 = IT consulting |
| `limit` | number | No | Rows to return, 1–2000 (default 10). You are billed one credit per row |
| `locality` | string | No | City, exact match, e.g. 'San Francisco' |
| `localityContains` | string | No | City substring when you do not know the exact form, e.g. 'Austin'. Mutually exclusive with locality |
| `publicOnly` | boolean | No | Only companies with a stock ticker |
| `region` | string | No | State or region, exact match, e.g. 'California' |
| `sizeCode` | string[] | No | Size bands: A=1, B=2-10, C=11-50, D=51-200, E=201-500, F=501-1k, G=1k-5k, H=5k-10k, I=10k+ |
| `slug` | string | No | LinkedIn universal name, e.g. 'stripe' |

Inputs may also be piped as NDJSON, one JSON object per line.

## Output

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "companies": {
      "default": [],
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "companyName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "companySlug": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "domain": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "website": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "employeeCount": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "sizeCode": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "industryCode": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "region": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "founded": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "ticker": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "linkedinCompanyId": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "companyName",
          "companySlug",
          "domain",
          "website",
          "employeeCount",
          "sizeCode",
          "industryCode",
          "location",
          "region",
          "country",
          "founded",
          "ticker",
          "linkedinCompanyId"
        ],
        "additionalProperties": false
      }
    },
    "totalReturned": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "companies",
    "totalReturned"
  ],
  "additionalProperties": false
}
```

The field that carries the answer is `companies`. It is
`null` — or empty — when nothing was found, which is how a miss is told from a
hit without knowing anything else about this entry.

## Before you run

- **Price it first.** `orangeslice search companies --dry-run` returns the
  exact dollar cost and spends nothing.
- **Large runs need approval.** Above the spend-gate threshold a run exits **7**
  until it carries a plan token, and only a dry run mints one.
- **Scopes:** enrich
- **Permitted uses:** research, outreach, export

## Exit codes

`0` ok · `2` bad input · `3` auth · `4` not found · `5` provider ·
`6` rate limited · `7` spend gate, nothing billed · `8` timeout ·
`9` a third-party account needs connecting
