UK Visa Sponsor Register Tracker (Daily Changes) avatar

UK Visa Sponsor Register Tracker (Daily Changes)

Pricing

from $5.00 / 1,000 sponsor licence rows

Go to Apify Store
UK Visa Sponsor Register Tracker (Daily Changes)

UK Visa Sponsor Register Tracker (Daily Changes)

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.

Pricing

from $5.00 / 1,000 sponsor licence rows

Rating

0.0

(0)

Developer

Japan Open Data

Japan Open Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Categories

Share

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).
  • 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 CSVFree checker websitesPaid sponsor-list sites (typically £10-£30 a month)This Actor
Is company X a licensed sponsor?Download 11 MB, search by handYes, one at a time, in a browserYes, in a browserYes, up to 500 names per run, via API
What changed since yesterday?Download two files and diff them yourselfSome email a job-seeker about one employerSome send weekly or keyword alertsYes, daily: added / removed / downgraded / upgraded rows, for the whole register or your watchlist
Filter by town, visa route, ratingExcel filtersPartlyYesYes, and combined with names
Machine-readable, schedulableCSV with messy spacing and casingNoCSV downloads at bestFlat JSON, API, webhooks, MCP
PricingFreeFreeMonthly subscriptionPay per row: $5 per 1,000 rows, no subscription
Sole traders' personal namesIncludedIncludedUsually includedExcluded

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

FieldTypeDefaultWhat it does
modelookup / changeslookupLookup: current licences that match. Changes: what changed since your last run with the same filters.
companyNameslist 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.
nameMatchcontains / exactcontainsexact compares the whole name, ignoring case, punctuation, "Ltd"/"Limited"/"PLC"/"LLP" and "UK".
townslist of textallThe register's own Town/City column, e.g. ["London", "Manchester"].
routeslist of textallVisa routes as written on the register, e.g. ["Skilled Worker"], "Global Business Mobility: Senior or Specialist Worker", "Creative Worker", "Scale-up".
ratingany / A / B / ProvisionalanyA includes "A (Premium)" and "A (SME+)".
groupByOrganisationbooleanfalseLookup mode: one row per organisation and town, routes and ratings joined with "; ", plus licenceCount.
maxResultsinteger100 (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.
watchlistNametextemptyOnly needed if you run two schedules with the same filters: give each its own name so each receives every change.

Input examples

{ "mode": "lookup", "companyNames": ["Monzo Bank Ltd", "Revolut Ltd", "Qwertyzzz Widgets"], "nameMatch": "exact" }
{ "mode": "changes", "companyNames": [], "routes": ["Skilled Worker"], "towns": ["London", "Manchester", "Birmingham"] }

Output

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

{
"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):

[
{ "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

FieldMeaning
statusok (charged), not_found or error (free)
changeTypeChanges 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
queryLookup mode: which of your company names this row answers
organisationName, town, countyAs published (spacing tidied). There are no street addresses or postcodes in the register
organisationKeyStable key of name + town, for joining runs and de-duplicating
route, workerType, rating, typeAndRatingVisa route, "Worker" or "Temporary Worker", rating (A, B, A (Premium), A (SME+), Provisional) and the raw published text
previousRatingRating before a downgrade / upgrade
isLicensedSponsortrue on current licences; false on a not-found name, or on a removed row when the organisation has no licence left
organisationIsNew / organisationRemovedadded: the organisation had no licence before; removed: it has none left
licenceCountWith groupByOrganisation
registerDate, previousRegisterDateDate of the GOV.UK file used, and of the one it was compared with
registerCsvUrl, sourceUrl, fetchedAt, attributionProvenance
errorPlain-English reason on free rows

How much does it cost?

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

EventPrice
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.

UseRowsCost
Check one company (1-3 licences)1-3about $0.007-$0.017
Default run (Deloitte, Monzo, Google)7about $0.037
Daily watchlist of 200 employers, a quiet day0-2$0.002-$0.012
Daily whole-register feed, a day with 100 changes100about $0.50
Daily whole-register feed, a weekend or bank holiday0$0.002
Tag 500 job-board employers once (nameMatch: "exact", groupByOrganisation: true)about 500about $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):

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:

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

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

SymptomFix
Every row is not_foundCheck 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 againThe filters (or watchlistName) differ from the previous run, so it is a new baseline
noChanges on a weekdayGOV.UK had not published a newer register yet; run later in the day
registerIncomplete errorThe published file looked truncated; nothing was charged and your baseline was kept. Run again later
Run stopped earlyYour 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, GOV.UK. Contains public sector information licensed under the Open Government Licence v3.0. This Actor is not affiliated with, or endorsed by, the Home Office or UK Visas and Immigration.

More from Japan Open Data

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.