# UK Visa Sponsor Register Search (Unofficial) (`conserving_celerytop/uk-visa-sponsor-register-api`) Actor

Search the UK Home Office register of licensed sponsors (workers) by organisation name, town, route or rating. One row per licence route with type and rating. Unofficial tool using open government data, not affiliated with the Home Office.

- **URL**: https://apify.com/conserving_celerytop/uk-visa-sponsor-register-api.md
- **Developed by:** [Don Mangu](https://apify.com/conserving_celerytop) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 1,000 sponsor records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

Use this UK visa sponsor register search to find licensed sponsors in the Home Office register by organisation name, town, route or rating, for $2.00 per 1,000 sponsor rows.

Type company names to check whether each one is a licensed sponsor, or leave the names empty and filter the whole register, for example "A-rated Skilled Worker sponsors in Manchester". Each result is one row of the Home Office register of licensed sponsors: organisation, town, county, type and rating, and route. The Actor reads the current register file every run, so the data is as fresh as the Home Office publishes it, and every row carries the register date. You need no login, no API key and no proxy.

This is an unofficial tool built by an independent developer. It is not affiliated with, endorsed by or operated by the UK Home Office or any government body.

### Sample output

One row per register row. This is a real row from a run on 4 October 2026 against the register dated 2 October 2026:

```json
{
  "organisationName": "Revolut Ltd",
  "town": "London",
  "county": null,
  "typeAndRating": "Worker (A rating)",
  "licenceType": "Worker",
  "rating": "A",
  "route": "Scale-up",
  "registerDate": "2026-10-02",
  "query": "Revolut",
  "source": "UK Home Office register of licensed sponsors: workers",
  "licence": "Open Government Licence v3.0",
  "resultStatus": "ok"
}
```

### How to search the UK visa sponsor register with this Actor

1. Click **Try for free**. No API key is needed.
2. In **Organisation names**, enter one company name per line. Or leave it empty and use the filters.
3. Optionally set **Towns or cities**, **Routes**, **Sponsor rating** and **Licence type**. A row must pass every filter you fill in.
4. Set **Max results**. The default is 100.
5. Click **Start**, open the **Overview** view, and export as JSON, CSV or Excel.

Typical uses:

- Check a list of employers before you apply, and see which routes each one is licensed for.
- Build a list of sponsors in one town for a recruiting or relocation service.
- Find sponsors with a B rating, or with a Premium or SME+ rating.
- Add a "licensed sponsor" flag to a job board or a company list.

### What you get

| Field | Meaning |
|---|---|
| organisationName | Organisation name as published, with extra spaces removed |
| town, county | As published; county is often empty |
| typeAndRating | The Type and Rating column exactly as published |
| licenceType, rating | Worker or Temporary Worker, and the rating, both read from typeAndRating |
| route | The route the sponsor is licensed for. A sponsor with three routes has three rows |
| registerDate | Date of the register file the row came from |
| query | Which of your names the row matched |
| resultStatus | ok, or not_found for a name that matched no row |

Only fields that appear in the register are returned. The Actor adds no contact details, no company numbers and no data from other sources.

### Pricing

Pay per event: **$2.00 per 1,000 sponsor rows** on the Free plan, with lower prices on Bronze, Silver and Gold plans. The start of a run costs $0.00005. A name that matches nothing returns one not_found row and counts as one result, because the search was done. A run that cannot read the register is not charged.

Worked example: checking four companies that return nine rows costs 9 x $0.002 = $0.018, plus the start fee. Listing 25 sponsors in one town costs $0.05.

### Input example

```json
{
  "organisationNames": ["Monzo", "Octopus Energy", "Revolut", "Wise Payments"],
  "maxResults": 25
}
```

Filters work without names:

```json
{
  "towns": ["Manchester"],
  "routes": ["Skilled Worker"],
  "rating": "A",
  "maxResults": 50
}
```

### FAQ

**Where does the data come from?** From the register of licensed sponsors for workers and temporary workers, a CSV file the Home Office publishes on GOV.UK. The Actor finds the current file each run. Contains public sector information licensed under the Open Government Licence v3.0.

**How do names match?** By default a row matches when it contains all the words of your name, so "Tesco" finds Tesco Stores Limited but not Notesco. Choose exact matching to compare the full name and ignore case, punctuation and endings such as Ltd, Limited, PLC and LLP. There is no fuzzy matching, so a misspelt name returns not_found.

**Are people's names included?** Some sole traders appear in the register under their own name. The Actor leaves out rows that look like a person's own name, such as a title followed by a name or "name T/A shop". This check is best effort and can miss a row, so check the output before you publish or share it.

**Is a listed sponsor guaranteed to hire foreign workers?** No. The register shows who holds a licence. It says nothing about open jobs, and a licence can be revoked after the register date. Check the current register on GOV.UK before you rely on a result.

**Why fewer rows than the register has?** Exact duplicate rows are returned once, and person-name rows are left out. Max results also stops the run early. When it does, names without a match are not reported as not_found, because the file was not read to the end.

**What if the run fails?** If GOV.UK is down or the file format changes, the run stops with a clear message and charges nothing. Run it again later.

### Related Actors

Other public-data Actors by the same author are listed on the author's Store profile.

I built this Actor myself as an independent developer.

# Actor input Schema

## `organisationNames` (type: `array`):

Enter one organisation name per line. A row matches when it contains all the words of a name, for example Tesco finds Tesco Stores Limited. Leave empty to list sponsors by the filters below.

## `nameMatch` (type: `string`):

Choose how each organisation name is compared. Exact matches the full name after removing case, punctuation and endings such as Ltd, Limited, PLC and LLP.

## `towns` (type: `array`):

Enter one town or city per line, as written in the register, for example London or Manchester. Case does not matter. Leave empty to include every town.

## `routes` (type: `array`):

Enter one route per line, for example Skilled Worker, Charity Worker or Global Business Mobility. A row matches when its route contains the words you type. Leave empty to include every route.

## `rating` (type: `string`):

Return only sponsors with this rating. The rating is taken from the Type and Rating column of the register.

## `licenceType` (type: `string`):

Return only sponsors licensed for this type of worker. Worker covers long-term routes such as Skilled Worker; Temporary Worker covers short-term routes.

## `maxResults` (type: `integer`):

Return at most this many rows in total across all names and filters. The full register has about 143,000 rows. Each row returned is one charged result.

## Actor input object example

```json
{
  "organisationNames": [
    "Google",
    "Tesco"
  ],
  "nameMatch": "contains",
  "rating": "any",
  "licenceType": "any",
  "maxResults": 25
}
```

# Actor output Schema

## `sponsors` (type: `string`):

No description

## `stats` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "organisationNames": [
        "Google",
        "Tesco"
    ],
    "maxResults": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("conserving_celerytop/uk-visa-sponsor-register-api").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "organisationNames": [
        "Google",
        "Tesco",
    ],
    "maxResults": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("conserving_celerytop/uk-visa-sponsor-register-api").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "organisationNames": [
    "Google",
    "Tesco"
  ],
  "maxResults": 25
}' |
apify call conserving_celerytop/uk-visa-sponsor-register-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,conserving_celerytop/uk-visa-sponsor-register-api"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/P29o01SvAU5dFabNb/builds/BdZSe6Ia9kJggAprm/openapi.json
