Right To Work Checker

Right to Work Check API

gov.uk has no official API for right-to-work checks. If your ATS, HR platform, or staffing pipeline needs to verify a candidate's share code programmatically instead of by hand, here is what that actually takes.

There is no official gov.uk API

gov.uk offers exactly one route to check a right-to-work share code: a human filling in the three-page form at gov.uk/view-right-to-work, one applicant at a time. There is no REST endpoint, no webhook, no bulk upload.

Teams that need the result inside their own software, such as an ATS, an onboarding flow, or a compliance queue, are left with two options: have someone do it by hand and re-key the result, or automate the form themselves.

What automating it actually requires

  • Driving a real browser session through gov.uk's form, share code plus date of birth. There is no request you can POST straight to gov.uk.
  • Parsing HTML that gov.uk can change without notice, not a stable JSON contract.
  • Producing evidence you can keep on file: the outcome, any conditions or restrictions, an expiry date for time-limited permissions, the applicant's photo, and the gov.uk-issued reference number.
  • Doing all of the above without leaving personal data sitting in your systems longer than you need it.

See the full field-by-field response shape in the docs.

How teams handle this today

ApproachWhat it looks likeTrade-off
Manual, by handSomeone opens gov.uk, types the code and date of birth, saves the resultDoes not scale past a handful of checks a week, and leaves no structured record
Build your own scraperAn in-house script drives gov.uk's formBreaks silently when gov.uk changes markup, and you own the PII handling and the uptime
A full identity-verification platformAn end-to-end identity provider covering document checks, right to work, and right to rent through its own portalHeavier to adopt if a share-code check is the only thing you need
Check Share Code APIOne POST /api/check call, sandbox-firstPurpose-built for the share-code check specifically, so you keep the rest of your stack

One API call

Send the share code, the applicant's date of birth, and your company name. Get back structured JSON.

const res = await fetch('https://checksharecode.co.uk/api/check', {
  method: 'POST',
  headers: {
    'content-type': 'application/json',
    authorization: 'Bearer rtw_test_...',
  },
  body: JSON.stringify({
    share_code: 'AB1CD2EF3',
    date_of_birth: '1990-01-01',
    company_name: 'Acme Ltd',
  }),
});

const data = await res.json();
// { outcome: 'ACCEPTED', name: 'JANE EXAMPLE DOE', conditions: [], reference: 'WE-EXAMPLE-12', ... }

Sandbox first

rtw_test_… keys return deterministic sandbox fixtures for every outcome (accepted, rejected, not found, date-of-birth mismatch), so you can build and test the integration without touching gov.uk or waiting on a real applicant. Flip to a rtw_live_… key when you are ready.

Walk through it in the Node.js quickstart or read how to handle errors and retries.

Who this is for

  • Recruitment and ATS platforms running onboarding checks at volume
  • HR and onboarding tools that need the result inside the candidate record
  • Gig and marketplace platforms verifying workers before they go live
  • Staffing agencies checking on behalf of multiple end-clients
  • Compliance teams that need an audit trail, not a screenshot

Get started

The free tier covers 10 checks a month with no card required. See pricing for paid tiers, or read the full API docs and sign up to get a key.