# UK Company Search

A name or number → the right registered company, ranked by confidence.

Companies House search, cleaned and confidence-scored. Every hit carries a 0–1 match score so you can auto-pick the right company instead of eyeballing a noisy list.

Companies House search returns an unranked list where "Smith Consulting" surfaces forty near-misses in arbitrary order — fine for a human eyeballing results, useless for software that has to pick one. This endpoint adds the missing layer: every hit carries a 0–1 match confidence built from two-way name analysis, so exact matches rank strictly above supersets and your code can auto-select safely. Company-level only, by design — it never touches officer or PSC personal data.

- Price: 1 credit
- Page: https://meetkatalis.com/apis/company-search
- OpenAPI: https://meetkatalis.com/openapi.yaml

## Endpoints

- `GET /api/v1/company-search?q=greggs` — Ranked company matches

## Call it

```bash
curl -H "x-api-key: $KATALIS_API_KEY" \
  "https://meetkatalis.com/api/v1/company-search?q=greggs"
```

```javascript
const res = await fetch("https://meetkatalis.com/api/v1/company-search?q=greggs", {
  headers: { "x-api-key": process.env.KATALIS_API_KEY },
});
if (!res.ok) throw new Error(`Katalis ${res.status}: ${await res.text()}`);
console.log(await res.json());
```

```python
import os, requests

r = requests.get(
    "https://meetkatalis.com/api/v1/company-search?q=greggs",
    headers={"x-api-key": os.environ["KATALIS_API_KEY"]},
    timeout=60,
)
r.raise_for_status()
print(r.json())
```

## Example response (a real reply)

```json
{
  "query": "greggs",
  "count": 2,
  "results": [
    { "companyNumber": "00502851", "name": "GREGGS PLC",
      "status": "active", "matchConfidence": 0.98 }
  ]
}
```

## What you'd build with it

- **Company pickers.** Typeahead that auto-selects the right legal entity from a trading name — the 0-1 confidence score does the picking for you.
- **Record matching & dedupe.** Resolve messy CRM names against the register in bulk; exact matches rank strictly above near-misses.
- **Compliance forms.** Onboarding that turns 'what's your company called?' into a verified company number in one keystroke-friendly call.

## Why this one

- **Ranked, not raw.** Companies House search is unranked and noisy. We return a match-confidence score so you can auto-pick.
- **Company-level only.** Uses the companies endpoint (never officer/PSC personal data) — clean and low-risk to use.

## Conventions

- Auth: `x-api-key: kat_live_…` on every request (free key at https://meetkatalis.com/developers: a verified email and mobile, 100 credits a month, no card).
- One credit balance across every API; each endpoint's price is on its page and in `x-credits` in https://meetkatalis.com/openapi.yaml.
- Keys are camelCase everywhere. A registered company is `company: { name, number, status, statusDetail?, filingsOverdue? }` on the register endpoints; the enrichment family (enrich, score, assess, brand-kit, ai-visibility, tender-match) keeps `business` / `profile` with `companyNumber`.
- Every error has `code` and `requestId`; every reply an `x-request-id` header; a charged reply `x-credits-remaining`; a reply that gave credits back `x-credits-refunded`. Missing = 404 with `query`.
- Burst ceiling 60 requests a minute per key (429, `Retry-After`, no credits used). A failure on our side (5xx) gives the call's credits back.
- Company data contains public sector information licensed under the Open Government Licence v3.0.

Provided "as is"; results come from public sources and, in places, AI, and may be inaccurate or out of date; not legal, professional or credit advice. Terms: https://meetkatalis.com/apis/terms