# UK Visa Sponsor Register Tracker (Daily Changes) (`japan-open-data/uk-visa-sponsor-register`) Actor

Track new, removed and downgraded UK visa sponsors daily from the official Home Office register, or check if a company holds a sponsor licence. For job boards, recruiters and immigration lawyers. Organisations only, no API key. JSON via API or MCP. $5/1,000 rows.

- **URL**: https://apify.com/japan-open-data/uk-visa-sponsor-register.md
- **Developed by:** [Japan Open Data](https://apify.com/japan-open-data) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 sponsor licence rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## UK Visa Sponsor Register Tracker (Daily Changes)

**Track new, removed and downgraded UK visa sponsors daily from the official Home Office register, or check in one call whether a company holds a sponsor licence.** This Actor reads the official *Register of licensed sponsors: workers* that the Home Office publishes on GOV.UK every working day (about 127,000 organisations, 143,000 licences) and returns clean, flat JSON: one row per licence, or one row per change since your last run.

- **Changes mode:** schedule it daily and get only what changed - newly licensed sponsors, licences removed, A-to-B downgrades and upgrades. The first run saves a baseline for free.
- **Lookup mode:** "Is Monzo a licensed sponsor? For which visa routes? A or B rating?" - one row per licence, and a free `not_found` row (`isLicensedSponsor: false`) for a name that is not on the register.
- Official GOV.UK source, fetched live each run. No API key, no login, no scraping of third-party sites.
- **Organisations only.** Sole traders licensed under their own name are never returned (see [Privacy](#privacy-why-some-sponsors-are-missing)).
- Built for pipelines and AI agents: flat camelCase fields, a `status` on every row, plain-English errors that are never charged.

### Why use this instead of the GOV.UK spreadsheet or a sponsor-list website?

| | GOV.UK CSV | Free checker websites | Paid sponsor-list sites (typically £10-£30 a month) | **This Actor** |
|---|---|---|---|---|
| Is company X a licensed sponsor? | Download 11 MB, search by hand | Yes, one at a time, in a browser | Yes, in a browser | **Yes, up to 500 names per run, via API** |
| What changed since yesterday? | Download two files and diff them yourself | Some email a job-seeker about one employer | Some send weekly or keyword alerts | **Yes, daily: added / removed / downgraded / upgraded rows, for the whole register or your watchlist** |
| Filter by town, visa route, rating | Excel filters | Partly | Yes | **Yes, and combined with names** |
| Machine-readable, schedulable | CSV with messy spacing and casing | No | CSV downloads at best | **Flat JSON, API, webhooks, MCP** |
| Pricing | Free | Free | Monthly subscription | **Pay per row: $5 per 1,000 rows, no subscription** |
| Sole traders' personal names | Included | Included | Usually included | **Excluded** |

### What can you do with the UK Visa Sponsor Register Tracker?

- **Immigration law firms and visa consultancies** - every day's *newly licensed* sponsors are organisations that have just started hiring from abroad (a lead list); *removed* and *downgraded* sponsors are clients that need help now.
- **Job boards and recruitment agencies** - tag every job ad with "this employer can sponsor a Skilled Worker visa", and drop employers whose licence was revoked, before candidates apply.
- **HR, compliance and supplier-risk teams** - watch your own licence, your group companies, clients or subcontractors, and get a row the day one is downgraded to B or removed.
- **AI agents** - answer "can this company sponsor my visa?" with one tool call and a source link.

### How to use

1. Click **Try for free**. The default input checks three well-known sponsors (Deloitte, Monzo, Google) and returns 7 rows in about 10 seconds.
2. To **check companies**, put their names in **Company names** and keep **Mode = lookup**.
3. To **track changes**, set **Mode = changes**. Keep your watchlist in **Company names**, or clear it to watch the whole register; add towns, routes or a rating to narrow it.
4. Run it once (this saves the baseline, free), then schedule it.

#### Run it on a schedule (the main use)

1. In Apify Console open **Schedules** > **Create new**, choose this Actor, and paste an input such as `{"mode": "changes", "companyNames": []}` (the whole register) or `{"mode": "changes", "companyNames": ["Acme Ltd", "Example Care Ltd"]}` (a watchlist).
2. Set it to run **daily** (for example 12:00 UK time; GOV.UK usually publishes the day's register in the morning on working days).
3. Add an integration or webhook (Slack, email, Google Sheets, Zapier, Make, your CRM) on **Run succeeded** to receive the new rows.
4. On days when GOV.UK did not publish a new register (weekends, bank holidays), the run returns one free `noChanges` row.

### Input

| Field | Type | Default | What it does |
|---|---|---|---|
| `mode` | `lookup` / `changes` | `lookup` | Lookup: current licences that match. Changes: what changed since your last run with the same filters. |
| `companyNames` | list of text | `["Deloitte", "Monzo", "Google"]` | Names to check or watch. Matches a registered name that **contains the text at the start of a word**, ignoring case and punctuation ("Monzo" matches "Monzo Bank Ltd"). Empty = the whole register. Up to 500. |
| `nameMatch` | `contains` / `exact` | `contains` | `exact` compares the whole name, ignoring case, punctuation, "Ltd"/"Limited"/"PLC"/"LLP" and "UK". |
| `towns` | list of text | all | The register's own Town/City column, e.g. `["London", "Manchester"]`. |
| `routes` | list of text | all | Visa routes as written on the register, e.g. `["Skilled Worker"]`, `"Global Business Mobility: Senior or Specialist Worker"`, `"Creative Worker"`, `"Scale-up"`. |
| `rating` | `any` / `A` / `B` / `Provisional` | `any` | `A` includes "A (Premium)" and "A (SME+)". |
| `groupByOrganisation` | boolean | `false` | Lookup mode: one row per organisation and town, routes and ratings joined with "; ", plus `licenceCount`. |
| `maxResults` | integer | 100 (lookup), 10,000 (changes) | Charged rows per run. Lookup: shared evenly between the names; a name left without a row is listed in a free `not_found` row. Changes cut off by this limit are **not lost**: the next run returns them. |
| `watchlistName` | text | empty | Only needed if you run two schedules with the *same* filters: give each its own name so each receives every change. |

#### Input examples

```json
{ "mode": "lookup", "companyNames": ["Monzo Bank Ltd", "Revolut Ltd", "Qwertyzzz Widgets"], "nameMatch": "exact" }
```

```json
{ "mode": "changes", "companyNames": [], "routes": ["Skilled Worker"], "towns": ["London", "Manchester", "Birmingham"] }
```

### Output

Lookup row (real data, register dated 2026-09-23):

```json
{
  "status": "ok",
  "changeType": null,
  "query": "Monzo",
  "organisationName": "Monzo Bank Ltd",
  "organisationKey": "monzo-bank-ltd--london",
  "town": "London",
  "county": null,
  "route": "Skilled Worker",
  "workerType": "Worker",
  "rating": "A",
  "previousRating": null,
  "typeAndRating": "Worker (A rating)",
  "isLicensedSponsor": true,
  "organisationIsNew": null,
  "organisationRemoved": null,
  "licenceCount": null,
  "registerDate": "2026-09-23",
  "previousRegisterDate": null,
  "registerCsvUrl": "https://assets.publishing.service.gov.uk/media/6ab3900f8cb3c0580e501018/SP_-_Worker_and_Temporary_Worker_Web_Register_-_2026-09-23.csv",
  "sourceUrl": "https://www.gov.uk/government/publications/register-of-licensed-sponsors-workers",
  "fetchedAt": "2026-09-23T23:06:59Z",
  "attribution": "Home Office Register of licensed sponsors: workers, published on GOV.UK. Contains public sector information licensed under the Open Government Licence v3.0. Not affiliated with, or endorsed by, the Home Office or UK Visas and Immigration. Organisations only; ..."
}
```

Changes rows (illustrative, organisation names invented; fields trimmed):

```json
[
  { "status": "ok", "changeType": "added", "organisationName": "Example Robotics Ltd", "town": "Leeds",
    "route": "Skilled Worker", "rating": "A", "organisationIsNew": true,
    "registerDate": "2026-09-24", "previousRegisterDate": "2026-09-23" },
  { "status": "ok", "changeType": "downgraded", "organisationName": "Example Care Services Ltd", "town": "Bradford",
    "route": "Skilled Worker", "rating": "B", "previousRating": "A",
    "registerDate": "2026-09-24", "previousRegisterDate": "2026-09-23" },
  { "status": "ok", "changeType": "removed", "organisationName": "Example Hospitality Ltd", "town": "London",
    "route": "Skilled Worker", "rating": "A", "organisationRemoved": true, "isLicensedSponsor": false,
    "registerDate": "2026-09-24", "previousRegisterDate": "2026-09-23" }
]
```

Free rows: `{"status": "not_found", "changeType": "baselineSaved", "error": "No earlier run with these filters was found, so this run saved the register dated 2026-09-23 (131641 licence(s) for the whole register) as the baseline. ..."}`, `noChanges`, a `not_found` row per company name that is not on the register, and `error` rows for invalid input.

#### Output fields

| Field | Meaning |
|---|---|
| `status` | `ok` (charged), `not_found` or `error` (free) |
| `changeType` | Changes mode: `added`, `removed`, `downgraded` (A to B), `upgraded` (B to A), `ratingChanged` (any other rating change); free rows: `baselineSaved`, `noChanges`, `registerIncomplete`. `null` in lookup mode |
| `query` | Lookup mode: which of your company names this row answers |
| `organisationName`, `town`, `county` | As published (spacing tidied). There are no street addresses or postcodes in the register |
| `organisationKey` | Stable key of name + town, for joining runs and de-duplicating |
| `route`, `workerType`, `rating`, `typeAndRating` | Visa route, "Worker" or "Temporary Worker", rating (`A`, `B`, `A (Premium)`, `A (SME+)`, `Provisional`) and the raw published text |
| `previousRating` | Rating before a downgrade / upgrade |
| `isLicensedSponsor` | `true` on current licences; `false` on a not-found name, or on a removed row when the organisation has no licence left |
| `organisationIsNew` / `organisationRemoved` | `added`: the organisation had no licence before; `removed`: it has none left |
| `licenceCount` | With `groupByOrganisation` |
| `registerDate`, `previousRegisterDate` | Date of the GOV.UK file used, and of the one it was compared with |
| `registerCsvUrl`, `sourceUrl`, `fetchedAt`, `attribution` | Provenance |
| `error` | Plain-English reason on free rows |

### How much does it cost?

Pay per event - you only pay for rows with `status: "ok"`:

| Event | Price |
|---|---|
| Sponsor licence row (`result-row`) | **$0.005** per row ($5.00 per 1,000) |
| Actor start | $0.002 per run |

`not_found`, `noChanges`, `baselineSaved` and `error` rows are free.

| Use | Rows | Cost |
|---|---|---|
| Check one company (1-3 licences) | 1-3 | about $0.007-$0.017 |
| Default run (Deloitte, Monzo, Google) | 7 | about $0.037 |
| Daily watchlist of 200 employers, a quiet day | 0-2 | $0.002-$0.012 |
| Daily whole-register feed, a day with 100 changes | 100 | about $0.50 |
| Daily whole-register feed, a weekend or bank holiday | 0 | $0.002 |
| Tag 500 job-board employers once (`nameMatch: "exact"`, `groupByOrganisation: true`) | about 500 | about $2.50 |

Set **Maximum cost per run** in the run options to cap any run; changes that did not fit are returned by the next run, so nothing is lost.

### Use via API & MCP (AI agents)

REST API (synchronous, returns the rows):

```bash
curl -X POST "https://api.apify.com/v2/acts/japan-open-data~uk-visa-sponsor-register/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode": "lookup", "companyNames": ["Monzo Bank Ltd"], "nameMatch": "exact"}'
```

Python:

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_TOKEN")
run = client.actor("japan-open-data/uk-visa-sponsor-register").call(
    run_input={"mode": "changes", "companyNames": [], "routes": ["Skilled Worker"]})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    if row["status"] == "ok":
        print(row["changeType"], row["organisationName"], row["town"], row["rating"])
```

MCP: add the Apify MCP server (`https://mcp.apify.com`) to Claude, Cursor or any MCP client and enable the tool `japan-open-data/uk-visa-sponsor-register`.

Recommended settings for agents:

- To answer "can company X sponsor a visa?", use `mode: "lookup"`, `companyNames: ["<name>"]`, `maxResults: 20`. `status: "ok"` rows mean yes (see `route` and `rating`); a `not_found` row with `isLicensedSponsor: false` means the name is not on the register.
- Prefer the registered company name with `nameMatch: "exact"` when you have it; use `contains` with a distinctive word otherwise.
- A B rating means the sponsor has been downgraded and cannot issue new certificates of sponsorship until it completes an action plan.
- For monitoring, schedule `mode: "changes"` once a day; never run it several times a day for the same filters (the register only changes once a day).
- Quote `registerDate` and `sourceUrl` in answers.

Summary for AI assistants: *This tool checks the official UK Home Office register of licensed worker sponsors (updated on working days) and returns one JSON row per licence with the organisation, town, visa route and A/B rating, or, in changes mode, the licences added, removed, downgraded or upgraded since the previous run. Sole traders' personal names are excluded.*

### Privacy: why some sponsors are missing

The register licenses sole traders under their own names ("Mr <name> T/A <shop>"). Personal data is outside the Open Government Licence, so this Actor runs every name through a strict organisation-name check and **never returns, stores or compares** a row whose name reads as a private individual. On the register of 2026-09-23 this withholds **11,002 of 127,594 names (8.6%)**: sole traders (including names the register itself marks "(Sole Trader)"), "<forename> <surname> Ltd" one-person companies, people named on either side of a "trading as", partnerships of named people, and - on the safe side - some firms named after their founders (for example "Clifford Chance LLP", "Arnold Clark Automobiles Limited" or "Blake Morgan LLP"). A lookup for such a name returns a free `not_found` row saying so. PLCs, NHS bodies, universities, charities and ordinary company names are returned normally.

### FAQ

#### Does being on the register mean the company will sponsor me?

No. A licence means the employer *can* assign certificates of sponsorship on the listed route. It does not mean it has a vacancy, sponsors your occupation, or will sponsor you. The register has no job titles or occupation codes.

#### How fresh is the data?

Every run downloads the register GOV.UK published last (the file name carries its date, shown in `registerDate`). GOV.UK updates it on working days.

#### Why did a company I know not match?

Try a shorter distinctive word with `contains`, or the exact registered name (often "... Ltd" or "... Limited"). Some organisations are registered under a parent or trading name, and names of sole traders and some founder-named firms are withheld (the free row says which).

#### What happens on the first changes run?

It saves a baseline (in a key-value store in *your* Apify account called `uk-visa-sponsor-register-state`, about 2 MB for the whole register) and returns one free row. Every later run with the same filters compares with the previous one. Changing the filters starts a new baseline.

#### Is a renamed company reported?

As a `removed` row for the old name and an `added` row for the new one; the register has no company number to link them.

#### Is this an official Home Office service?

No. It re-publishes the official open data under the Open Government Licence. It is not affiliated with or endorsed by the Home Office or UK Visas and Immigration. For a legal decision, check the GOV.UK register directly.

### Troubleshooting

| Symptom | Fix |
|---|---|
| Every row is `not_found` | Check spelling; use a shorter word with `nameMatch: "contains"`; check the free row's message |
| Too many rows for a short name ("Care") | Use `nameMatch: "exact"`, add `towns`, or lower `maxResults` |
| Changes run returned `baselineSaved` again | The filters (or `watchlistName`) differ from the previous run, so it is a new baseline |
| `noChanges` on a weekday | GOV.UK had not published a newer register yet; run later in the day |
| `registerIncomplete` error | The published file looked truncated; nothing was charged and your baseline was kept. Run again later |
| Run stopped early | Your **Maximum cost per run** was reached; remaining changes are returned by the next run |

### Known limitations

- The register has only organisation name, town, county, visa route and rating: no addresses, postcodes, company numbers, occupations, licence numbers or grant dates.
- About 8.6% of names are withheld for privacy, including some genuine firms named after their founders. The check is name-based, so a rare personal name it does not recognise can still pass; report one on the Issues tab and it will be added.
- Changes are detected between the registers your runs saw. If you skip days, one run reports all changes since your last run, with the dates of both registers.
- A company that changes its name or town appears as removed + added.
- Only the *workers* register is covered, not the students register.

### Data source and licence

Source: Home Office, [Register of licensed sponsors: workers](https://www.gov.uk/government/publications/register-of-licensed-sponsors-workers), GOV.UK. Contains public sector information licensed under the [Open Government Licence v3.0](https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/). This Actor is not affiliated with, or endorsed by, the Home Office or UK Visas and Immigration.

### More from Japan Open Data

- [US Flood Zone Lookup by Address (FEMA NFHL)](https://apify.com/japan-open-data/us-flood-zone-lookup) — official FEMA flood zone (A, AE, VE, X…), base flood elevation and FIRM panel for any U.S. address or coordinates.
- [UK NHS Organisation Lookup (Official ODS Codes)](https://apify.com/japan-open-data/uk-nhs-organisation-lookup) — official NHS ODS register by postcode, type or ODS code: GP practices, pharmacies, dentists, NHS trusts, care homes and more.
- [UK HGV Operator Licence Lookup (Official DVSA)](https://apify.com/japan-open-data/uk-hgv-operator-licence) — Great Britain's official HGV and bus / coach operator licences by company, postcode and fleet size.
- [UK Waste Carrier Licence Check (Environment Agency)](https://apify.com/japan-open-data/uk-waste-carrier-register) — check whether an English business is a registered waste carrier, broker or dealer.
- [UK Flood Risk Lookup by Postcode (England)](https://apify.com/japan-open-data/uk-flood-zone-lookup) — Environment Agency flood zone, recorded flood extents and flood defences for any postcode or coordinates in England.
- [England Listed Building & Conservation Area Check](https://apify.com/japan-open-data/england-heritage-constraint-lookup) — official listed buildings, scheduled monuments, conservation areas and Article 4 directions for any postcode or coordinates in England, one row per location.
- [France Property Risk Lookup by Address (Georisques)](https://apify.com/japan-open-data/france-property-risk-lookup) — official Géorisques risks for any French address or coordinates: flood, clay shrink-swell, seismic zone, radon, past natural-disaster declarations and nearby industrial sites.
- [US Hail History by Location (NOAA NEXRAD Radar)](https://apify.com/japan-open-data/us-hail-history) — every hail day near any U.S. latitude/longitude with max estimated hail size.
- [US Storm Reports API: Hail, Wind & Tornado (NWS)](https://apify.com/japan-open-data/us-storm-reports-live) — U.S. hail, wind, tornado and flood reports from official NWS Local Storm Reports.
- [Mexico Gas Prices API by Station (Official CNE)](https://apify.com/japan-open-data/mexico-fuel-station-prices) — today's gas and diesel prices at every Mexican gas station, from the official CNE feed.
- [Argentina Fuel Prices API by Station (Official)](https://apify.com/japan-open-data/argentina-fuel-station-prices) — last reported gasoline (nafta), diesel and CNG prices at every Argentine gas station.
- [TSA Checkpoint Travel Numbers (Daily, Weekly & YoY)](https://apify.com/japan-open-data/tsa-checkpoint-throughput) — daily U.S. TSA airport checkpoint traveler counts.
- [Japan Postal Code & Address in English](https://apify.com/japan-open-data/japan-postal-code-english) — Japanese postal codes and addresses in English/romaji, kanji and kana.

### Feedback

Found a wrong row, a sponsor withheld that should not be, or want another register (the students register, or other countries' sponsor lists)? Open an issue on the **Issues** tab - it will be read.

# Actor input Schema

## `mode` (type: `string`):

"lookup": is this company a licensed visa sponsor? Returns one row per licence (organisation x visa route) on today's register. "changes": what changed since your last run with the same filters? Returns one row per new licence, removed licence or rating change (e.g. A to B downgrade). The first "changes" run only saves a baseline and returns one free row; schedule it daily (the register is updated on working days).

## `companyNames` (type: `array`):

Company names to check or to watch, e.g. \["Deloitte", "Monzo Bank Ltd"]. Each name matches any registered name that contains it at the start of a word (case and punctuation ignored), or only the same name when "nameMatch" is "exact". A name with no match gets one free not\_found row. Leave empty to search or watch the whole register (narrowed by town, route and rating). Up to 500 names.

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

"contains" (default): "Monzo" matches "Monzo Bank Ltd". "exact": the whole name must match, ignoring case, punctuation, "Ltd"/"Limited"/"PLC"/"LLP" and "UK".

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

Only licences registered in these towns or cities, e.g. \["London", "Manchester"] (the register's own Town/City column, case ignored). Leave empty for all of the UK.

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

Only these visa routes, written as on the register, e.g. \["Skilled Worker"]. Others include "Global Business Mobility: Senior or Specialist Worker", "Creative Worker", "Charity Worker", "Religious Worker", "International Sportsperson", "Scale-up", "Seasonal Worker", "Government Authorised Exchange", "International Agreement", "Global Business Mobility: Graduate Trainee" and "Global Business Mobility: UK Expansion Worker". Leave empty for all routes.

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

Only licences with this rating. "A" includes "A (Premium)" and "A (SME+)". "B" means the Home Office has downgraded the sponsor and it cannot assign new certificates of sponsorship until it follows an action plan. "Provisional" is the UK Expansion Worker provisional rating.

## `groupByOrganisation` (type: `boolean`):

Lookup mode only. Off: one row per licence (an organisation licensed for Skilled Worker and for Senior or Specialist Worker gives two rows). On: one row per organisation and town, with its routes and ratings joined by "; " and a licenceCount.

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

Maximum number of charged rows (1 to 200000). Leave empty for the default: 100 in lookup mode, 10000 in changes mode. Lookup mode splits it evenly between the company names; names that get no row because the limit ran out are listed in one free not\_found row. In changes mode, changes beyond this limit are not lost: they are returned by the next run. The whole register is about 132,000 organisation licences.

## `watchlistName` (type: `string`):

Changes mode keeps the previous register in your own Apify storage (key-value store "uk-visa-sponsor-register-state"), one copy per set of filters. If you run two schedules with the SAME filters, give each a different name here (e.g. "crm-sync", "weekly-report") so that each gets every change. Leave empty otherwise.

## Actor input object example

```json
{
  "mode": "lookup",
  "companyNames": [
    "Deloitte",
    "Monzo",
    "Google"
  ],
  "nameMatch": "contains",
  "towns": [],
  "routes": [],
  "rating": "any",
  "groupByOrganisation": false,
  "watchlistName": ""
}
```

# Actor output Schema

## `results` (type: `string`):

Change type, organisation name and key, town, county, visa route, worker type, rating and previous rating, register date and source per licence. Table view: overview.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("japan-open-data/uk-visa-sponsor-register").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("japan-open-data/uk-visa-sponsor-register").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 '{}' |
apify call japan-open-data/uk-visa-sponsor-register --silent --output-dataset

```

## MCP server setup

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

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/TyUBkiJVVfJXinnyz/builds/UI0ddf5hj3DlcoLcB/openapi.json
