UK Visa Sponsor Check - Licensed Sponsor Register
Pricing
from $0.03 / 1,000 uk visa sponsor registrations
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
Maintained by CommunityActor stats
0
Bookmarked
26
Total users
16
Monthly active users
2 days ago
Last modified
Security
Limited permissionsShare
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
| field | meaning |
|---|---|
organisationName | licensed sponsor name |
town, county | location as published (county is blank on ~95,000 rows - the register does not fill it for most London and urban addresses) |
typeRating | raw register value, e.g. Worker (A rating), Worker (B rating), Worker (UK Expansion Worker: Provisional ) |
route | sponsored route, e.g. Skilled Worker, Creative Worker, Charity Worker |
workerType | Worker or Temporary Worker |
rating | A or B (blank for ~100 provisional licences that carry no A/B rating) |
refreshedDate | publication date of the register snapshot |
sourceUrl | the 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=changesreports a disappearance asremoved(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,matchesLondon). 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
refreshedDateso 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).
Related
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.