# Sponsor Licence Check

Is this UK employer licensed to sponsor visas, at what rating, and what changed on the register.

Licensed or not, routes, rating (A, B, Provisional), town against the registered office, former licences and when they went; plus a feed of every change on the register since a date.

The Home Office publishes the register of licensed sponsors (workers) as one list of about 142,000 rows, with no dates and no company numbers: who holds a licence today, on which routes, at what rating. It doesn't say when anyone was added, lost a licence or dropped to a B rating. Since 6 October 2026 we keep the register every day it's republished and record every difference, so this endpoint can say whether an organisation is licensed, on which routes and at what rating, with the register's town checked against the company's registered office, and what has changed for it. The changes feed lists every sponsor added, removed, returned or re-rated since a date, for anyone who needs to know the day after the register does. Organisations only, never people.

- Price: 1 credit
- Page: https://meetkatalis.com/apis/sponsor-licence
- OpenAPI: https://meetkatalis.com/openapi.yaml

## Endpoints

- `GET /api/v1/sponsor-licence?company=…` — A company number (registered and former names matched) or an organisation's name
- `GET /api/v1/sponsor-licence/changes?since=…` — Every change since a date; filter by change (added, removed, returned, rating) and route

## Call it

```bash
curl -H "x-api-key: $KATALIS_API_KEY" \
  "https://meetkatalis.com/api/v1/sponsor-licence?company=00519500"
```

```javascript
const res = await fetch("https://meetkatalis.com/api/v1/sponsor-licence?company=00519500", {
  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/sponsor-licence?company=00519500",
    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": "00519500",
  "company": { "name": "TESCO STORES LIMITED", "number": "00519500", "status": "active" },
  "licensed": true,
  "summary": "Licensed on 2 routes (Global Business Mobility: Senior or Specialist Worker; Skilled Worker), rating A.",
  "licences": [
    { "organisation": "Tesco Stores Limited", "town": "Welwyn Garden City", "county": "Herts", "type": "Worker", "rating": "A", "route": "Global Business Mobility: Senior or Specialist Worker", "seenSince": "2026-10-06", "townMatchesRegisteredOffice": true },
    { "organisation": "Tesco Stores Limited", "town": "Welwyn Garden City", "county": "Herts", "type": "Worker", "rating": "A", "route": "Skilled Worker", "seenSince": "2026-10-06", "townMatchesRegisteredOffice": true }
  ],
  "history": [],
  "historySince": "2026-10-06"
}
```

## What you'd build with it

- **Recruiters and HR.** Before a placement or an offer: is the employer licensed on the Skilled Worker route, and is its rating A?
- **Immigration advisers.** Each morning's removals and down-ratings, by route, to warn the clients it touches.
- **Due diligence.** A supplier, competitor or acquisition target that lost its licence, and when.

## Why this one

- **The history nobody else has.** The register has no dates; the only way to know when a sponsor was removed or re-rated is to have kept it every day. We have, since 6 October 2026.
- **Matched to the company.** A company number brings its registered and former names, and the register's town is checked against the registered office.
- **Visibly current.** Every reply carries the date of the register it reads from.

## 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