UK Visa Sponsor Check - Licensed Sponsor Register avatar

UK Visa Sponsor Check - Licensed Sponsor Register

Pricing

from $0.03 / 1,000 uk visa sponsor registrations

Go to Apify Store
UK Visa Sponsor Check - Licensed Sponsor Register

UK Visa Sponsor Check - Licensed Sponsor Register

Check any UK company against the Home Office register of licensed visa sponsors (~143k registrations, OGL v3): whether it can sponsor Skilled Worker or Temporary Worker visas, its A/B rating, sponsored routes and town, plus daily changes. Absence means not currently licensed.

Pricing

from $0.03 / 1,000 uk visa sponsor registrations

Rating

0.0

(0)

Developer

Wenhao Yang

Wenhao Yang

Maintained by Community

Actor stats

0

Bookmarked

26

Total users

16

Monthly active users

2 days ago

Last modified

Categories

Security

Limited permissions

Share

UK Visa Sponsor Register - Licensed Employers

Every employer licensed by the UK Home Office to sponsor Worker and Temporary Worker visas, from the government's official open register: ~143,050 registrations covering ~127,350 distinct organisation names when compared case-insensitively. The register is republished on every working day; every record carries the snapshot's refreshedDate.

Each record carries the organisation name, town, county, the raw type and rating (Worker (A rating), Temporary Worker (A rating), ...), the sponsored route (Skilled Worker, Creative Worker, Charity Worker, ...), and the derived worker type and A/B rating.

Low cost

From $0.00005 per record, down to $0.00003 at Gold. Pay only for the records you receive; the whole register stays searchable.

What you get per registration

fieldmeaning
organisationNamelicensed sponsor name
town, countylocation as published (county is blank on ~95,000 rows - the register does not fill it for most London and urban addresses)
typeRatingraw register value, e.g. Worker (A rating), Worker (B rating), Worker (UK Expansion Worker: Provisional )
routesponsored route, e.g. Skilled Worker, Creative Worker, Charity Worker
workerTypeWorker or Temporary Worker
ratingA or B (blank for ~100 provisional licences that carry no A/B rating)
refreshedDatepublication date of the register snapshot
sourceUrlthe exact government CSV behind the snapshot

What "not on the register" means

The Home Office register lists only sponsors that are currently fully active. It publishes no separate list of suspended or revoked licences, and the Home Office's stated position is that a sponsor's absence from the register signals it is either suspended or revoked - the register does not say which.

  • A row here means the employer held an active sponsor licence on refreshedDate.
  • An employer missing from a snapshot is not currently licensed: suspended, revoked, surrendered or expired. Do not read absence as proof of revocation specifically.
  • Suspension is not revocation. A suspended sponsor is taken off the public register for the period of the suspension and can reappear if reinstated.
  • mode=changes reports a disappearance as removed (present in the previous daily snapshot, absent from this one) - the licence stopped being active, for whichever of those reasons.

Search it

  • Name - name="NHS" (case-insensitive substring; ~250 registrations). Every other filter is an exact match (case-insensitive) on the published value.
  • Town or county - town="London" (~43,900 registrations), county="Surrey" (~2,370). Exact match; case and stray leading/trailing punctuation are ignored (London, matches London). Rows with no usable county are grouped as (not stated), which is also queryable: county="(not stated)".
  • Route - route="Skilled Worker" (~123,100 of the ~143,050 rows), "Creative Worker", "Charity Worker",
    "Global Business Mobility: Senior or Specialist Worker"
    .
  • Rating - rating="A" or "B" (~100 B-rated licences), or "(none)" for the ~100 provisional registrations that carry no A/B rating.
  • Worker type - workerType="Worker" or "Temporary Worker".

Search scans the whole register and returns maxResults rows (default 50, ceiling 5,000) starting at offset, in the published register's order. Every returned row carries totalMatched - the total number of matches - so a large result set can be paged with offset: {"town":"London","maxResults":5000} then {"town":"London","maxResults":5000,"offset":5000}, and so on. The ~100 B-rated licences fit in one query with maxResults=200.

Each run also has a per-run charge ceiling (set by the platform pricing record). If a query would exceed it, the run stops at the ceiling and appends one free _meta row with truncated: true, matched and returned, so a truncated answer is never silent. Page with offset when you see it.

Example inputs

"Is this company a licensed sponsor?" - look the employer up by name (the register carries no licence number, so name is the key):

{ "name": "Airedale NHS", "maxResults": 25 }

The sponsor licence list for one sector - every NHS sponsor on the Skilled Worker route:

{ "name": "NHS", "route": "Skilled Worker", "maxResults": 25 }

One town - every licensed sponsor in London.

{ "town": "London", "maxResults": 50 }

B-rated sponsors - the register's compliance watch-list.

{ "rating": "B", "maxResults": 200 }

Charity Worker route

{ "route": "Charity Worker", "rating": "A", "maxResults": 25 }

Counts by route - mode=aggregate.

{ "mode": "aggregate", "groupBy": "route" }

One town, broken down by route - filters work with groupBy; when groupBy is present and mode is omitted, the run is an aggregate.

{ "town": "London", "groupBy": "route" }

What changed since the previous working day - new, removed, AB rating changes and address corrections:

{ "mode": "changes" }

Read removed as "the licence stopped being active" (revoked, suspended, surrendered or expired - the source does not distinguish); read changeType="rating-changed" as a compliance signal (A dropping to B) rather than a new or lost licence. The four changeType values are added, removed, rating-changed and address-changed.

Or roll it up

mode=aggregate returns one count row per group - route, rating, workerType, typeRating or county. The default (empty) run answers the whole-register route summary from a small precomputed record. Every group is a billed row: route/rating/workerType are small rollups, while county has ~1,500 groups (counties, districts and any form placeholders in the source), so combine it with a filter if you only need one area.

mode=changes returns new registrations, removed registrations, rating changes (A to B or B to A) and address corrections (same organisation and route, different town/county) compared with the previous daily snapshot, one row per change. The register has no identifier, so a corrected town or county is reported as address-changed rather than as an addition plus a removal; a licence that changes its address and its rating on the same day is reported once as rating-changed with both the new type/rating and the old/new address filled in. Rows are counted individually, so two identical registrations produce two change rows.

On a day when the Home Office has not republished the register, the last diff is returned again with its original comparedDate / refreshedDate - check that date before treating the rows as today's changes. If the register is republished with an unusually large change (>5% of rows) or the comparison snapshot is more than 14 days old, mode=changes fails with an explicit error rather than returning a suspect diff; search and aggregate stay available. A removed row means the licence stopped being active - revoked, suspended, surrendered or expired; the register does not publish which. The diff appears once a second daily snapshot exists (the first warm has nothing to compare against).

Example output

{
"organisationName": "Central and North West London NHS Foundation Trust",
"town": "London",
"county": "",
"typeRating": "Worker (A rating)",
"route": "Skilled Worker",
"workerType": "Worker",
"rating": "A",
"refreshedDate": "2026-11-06",
"sourceUrl": "https://assets.publishing.service.gov.uk/media/6ae46c20976f73ef5cfb68ac/SP_-_Worker_and_Temporary_Worker_Web_Register_-_2026-11-06.csv"
}

Notes on the data, from the source

  • One row = one sponsor registration, not one employer. An employer that holds several routes appears once per route; ~127,500 distinct organisation names (compared case-insensitively) produce ~143,050 rows.
  • No identifier. The register publishes no sponsor licence number, so name + town + county + route is the natural key. ~640 rows duplicate that full key inside the published file itself.
  • Daily refresh. The Home Office replaces the CSV on each working day; every record carries refreshedDate so you can see which snapshot it came from.
  • Worker and Temporary Worker routes only. The separate register of licensed student sponsors is a different publication and is not included.
  • Registered names only. This is a public business register. Most rows are organisations; where a sole trader is the licensed sponsor, the registered business name can contain that individual's name (~670 rows start with an honorific such as Mr/Mrs/Dr/Ms/Sir/Lord/Lady/Prof). No contact details or officer records are added.
  • Licence. Open Government Licence v3 - commercial reuse is expressly permitted, with attribution to the Home Office.
  • Corrections and removal. The register is published by the Home Office. If a record is wrong, or you need an entry suppressed, contact the publisher through the actor's Issues tab; we forward verifiable correction and removal requests to the Home Office and reply within 10 working days.

Data source: gov.uk - register of licensed sponsors: workers (Home Office).

Need the Companies House status behind a licensed sponsor, plus its SIC codes, mortgage charges or recent filed accounts? Use UK Company Dossier in this account - pass the same sponsor name (or its Company Number) and the company record comes back with the sponsor facts.