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

# `company_find_careers_page` — 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

Resolves a company website to its careers page, preferring the underlying ATS board (Greenhouse, Lever, Ashby and friends) over a human-facing page. Free — it fetches pages directly. Pipe it into `search company_scrape_careers_page` to get the jobs themselves.

## Price

**free**

Billed on every call, including one that returns nothing.

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.


## Measured reliability

- **Hit rate:** 10% of runs resolve an answer.
- **Sample:** 39 runs, measured 2026-09-01.

Use these to choose between entries that both fit. Do not use them to rule
one out — a low hit rate is a fact about the world's data, not about whether the
call is worth making, and under this pricing a miss is free.


## Call it

**CLI**

```bash
orangeslice enrich company_find_careers_page --website stripe.com

# the two halves of the pipeline, one company per line in:
cat companies.ndjson | orangeslice enrich company_find_careers_page \
  | orangeslice search company_scrape_careers_page
```

**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_find_careers_page","input":{"url":"<string>","website":"<string>"}}'
```

**SDK**

```ts
await services.company.findCareersPage({ url: "…", website: "…" });
```

## Inputs

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `url` | string | No | Alias for website. Provide website or url, not neither |
| `website` | string | No | Company website or page URL, e.g. 'stripe.com' or 'https://ro.co/weight-loss/wegovy/' |

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": {
    "careersPageUrl": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "pageType": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "ats",
            "official",
            "not_found"
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "atsProvider": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "detectionMethod": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "website": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "careersPageUrl",
    "pageType",
    "atsProvider",
    "detectionMethod",
    "website"
  ],
  "additionalProperties": false
}
```

The field that carries the answer is `careersPageUrl`. 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 enrich company_find_careers_page --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, 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
