If you're building HR platforms, compliance tools, or pre-hire screening workflows, the ability to verify whether a UK employer holds a valid sponsor licence is a hard requirement — not a nice-to-have. A candidate accepting an offer from a company that can't legally sponsor them faces visa refusal, lost income, and significant disruption. An employer that hires without checking exposes itself to civil penalties of up to £60,000 per illegal worker under the 2024 enforcement uplift.
This article breaks down how the UK sponsor licence register works, how to query it programmatically, and what your system should do with the results.
What is the Sponsor Licence Register?
The UK Home Office maintains a public register of all organisations licensed to sponsor overseas workers under the points-based immigration system. The register covers two main licence categories:
- Worker licences — for skilled workers, intra-company transfers, and other employment routes
- Temporary Worker licences — for seasonal workers, religious workers, charity workers, and similar roles
Each entry in the register includes:
- Organisation name
- Town/city
- County
- Type of licence (Worker, Temporary Worker, or both)
- Current rating (A-rated or B-rated)
The register is publicly available and is updated, in theory, on a weekly basis — though updates can lag by a few days, particularly around public holidays.
Where to Find the Register
The canonical source is the UK Visas and Immigration (UKVI) section of GOV.UK:
https://www.gov.uk/government/publications/register-of-licensed-sponsors-workers
The register is published as a downloadable CSV file. As of 2026, the file contains approximately 125,000+ active sponsor entries. You should treat any third-party mirror as potentially stale — always pull from GOV.UK directly.
Downloading and Parsing the Register
The GOV.UK page links to a CSV that can be downloaded programmatically. Here's a minimal Python pattern:
import requests
import csv
import io
REGISTER_URL = "https://assets.publishing.service.gov.uk/..." # actual URL from GOV.UK page
# Note: the URL changes with each weekly update — scrape the GOV.UK page to get the current link
response = requests.get(REGISTER_URL)
content = response.content.decode("utf-8")
reader = csv.DictReader(io.StringIO(content))
sponsors = [row for row in reader]
The CSV columns are typically:
Organisation NameTown/CityCountyType & RatingRoute
The Type & Rating field encodes both the licence type and current rating. A-rated sponsors are in good standing; B-rated sponsors are on an action plan and must be monitored more closely — they can still sponsor but their ability to assign new Certificates of Sponsorship (CoS) may be restricted.
Querying the Register: What to Watch For
Name matching is non-trivial. Company names in the register are often not identical to the trading name on a job advert. "ACME Ltd" might appear as "ACME Limited" or "Acme Limited" or just "ACME". A fuzzy match (e.g., using rapidfuzz or a token sort ratio) is usually more reliable than an exact string match.
from rapidfuzz import process, fuzz
def find_sponsor(company_name: str, sponsor_list: list[str], threshold: int = 85):
match, score, _ = process.extractOne(
company_name,
sponsor_list,
scorer=fuzz.token_sort_ratio
)
if score >= threshold:
return match
return None
Location matters for disambiguation. If your system is matching by name alone, you'll get false positives for common employer names. Include town or county to reduce ambiguity. "Greenfield Care Ltd" in Leeds is a different entity from one in Bristol.
The register reflects current status, not historical. If a company loses its licence mid-sponsorship, their existing sponsored workers remain on valid visas until expiry — but they cannot be assigned new CoS. A point-in-time snapshot won't tell you about revocations that happened between downloads.
Revoked licences are a separate file. UKVI also publishes a register of organisations whose licences have been revoked or surrendered. Checking both is important for pre-hire due diligence.
Real-Time vs. Batch Checking
For high-volume HR platforms, two patterns make sense:
1. Scheduled batch sync:
Download the register nightly, ingest into MongoDB or PostgreSQL, and expose a fast internal search endpoint. ImmigrationGPT's sponsor search (https://immigrationgpt.co.uk) uses MongoDB full-text search against this dataset to power instant employer lookups.
2. On-demand GOV.UK fetch:
For low-volume or ad-hoc checks, hit the GOV.UK register download link at query time. Slower, but always fresh. Add a TTL cache of 24 hours to avoid hammering the endpoint.
What to Build Into Your Compliance Workflow
If you're building a pre-hire screening tool or compliance dashboard, a sponsor licence check should trigger:
- At offer stage — before extending a formal offer to a candidate who requires sponsorship
- At onboarding — confirm status hasn't changed between offer and start date
- Periodic re-check — for existing sponsored employees, set a reminder to re-verify every 90 days or on any material change to the company (merger, acquisition, restructure)
Your system should surface:
- Whether the company is currently A-rated, B-rated, or absent from the register
- The route(s) they're licensed for (Worker, Temporary Worker)
- A timestamp of when the check was performed (for audit trail purposes)
- A flag if the company appears on the revoked/surrendered list
A Note on Coverage Gaps
The register only includes organisations that have applied for and been granted a licence. Many large employers are legitimate sponsors but operate under different legal entity names across subsidiaries. A parent company holding the licence may sponsor workers across multiple trading entities — this is permitted but invisible in the register.
Always supplement a register check with a direct inquiry to the employer's HR team for roles where the hire is time-sensitive. The register is a necessary first step, not a complete verification.
Summary
| Step | Method |
|---|---|
| Download register | GOV.UK CSV (weekly update) |
| Parse | Python csv.DictReader, UTF-8 |
| Match companies | Fuzzy string matching (token sort ratio) |
| Storage | MongoDB or PostgreSQL with indexed fields |
| Revocation check | Separate UKVI revoked register file |
| Refresh cadence | Nightly batch or 24-hour TTL cache |
For HR teams and developers building immigration compliance into their platforms, automating this check eliminates a manual step that is easy to forget and expensive to get wrong.
For a live, searchable version of the UK sponsor register with 125,000+ active sponsors, see https://immigrationgpt.co.uk.
This article is for informational purposes only and does not constitute legal advice. Immigration rules change frequently. Always consult a qualified immigration adviser or solicitor for advice specific to your circumstances.
Top comments (0)