NHS UK Jobs Scraper avatar

NHS UK Jobs Scraper

Pricing

from $0.79 / 1,000 job scrapeds

Go to Apify Store
NHS UK Jobs Scraper

NHS UK Jobs Scraper

Scrape NHS jobs from jobs.nhs.uk by keyword and location. Extract job title, NHS trust, location, salary band, contract type, working pattern, closing date, reference, and full job description. Export as JSON, CSV, or Excel.

Pricing

from $0.79 / 1,000 job scrapeds

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

NHS UK Jobs Scraper

Scrape job vacancies from jobs.nhs.uk — the official NHS Jobs board — into clean, structured JSON. The NHS UK Jobs Scraper pulls the job title, NHS trust, location, salary band, contract type, working pattern, closing date, reference number, and the full job description for any search, with no login and no NHS Jobs API.

Search NHS Jobs by keyword and location, or paste a filtered NHS Jobs URL, and get a structured record per vacancy — trust, Agenda-for-Change band, contract type, dates, reference, and the full description as HTML and clean text.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

Actor: parsebird/nhs-uk-jobs-scraper (Apify). Scrapes vacancies from jobs.nhs.uk. Call with ApifyClient.
Input JSON fields:
keyword: string — job title, skill, or reference number, e.g. "nurse", "paramedic"
location: string — city, town, or postcode, e.g. "London", "Manchester", "NE1"
results_wanted: int (default 20) — max vacancies; this is the number of billed rows
max_pages: int (default 5) — safety limit on search pages (10 vacancies per page)
collectDetails: bool (default true) — visit each job page for the full description and refined fields
startUrl: string — a jobs.nhs.uk search URL; overrides keyword/location
proxyConfiguration: { "useApifyProxy": true }
Output: one dataset item per vacancy — title, company, location, salary, contract_type, working_pattern, date_posted, closing_date, reference, url, pay_scheme, employer_website, description_html, description_text, source, source_page, scraped_at.
Example: { "keyword": "nurse", "location": "London", "results_wanted": 50 }
API: https://api.apify.com/v2/acts/parsebird~nhs-uk-jobs-scraper · Token: https://console.apify.com/account/integrations

What does NHS UK Jobs Scraper do?

NHS Jobs is where every NHS trust, foundation trust, and NHS partner organisation in England advertises vacancies — tens of thousands live at any time. There is no public NHS Jobs API — this NHS Jobs scraper reads the public search and job-advert pages instead. It extracts:

  • 🏥 Employer — the NHS trust or hiring organisation, plus its website.
  • 💷 Pay — the salary range or Agenda-for-Change band, and the pay scheme.
  • 📋 Terms — contract type (Permanent, Fixed-Term, Bank, Secondment…) and working pattern (Full-time, Part-time, Flexible).
  • 📍 Location — site, town, and postcode.
  • 📅 Dates — when the vacancy was posted and when applications close.
  • 🔖 Reference — the NHS job reference number and the direct advert URL.
  • 📄 Description — the full job description as structured HTML and clean plain text (with collectDetails).

Common uses: NHS recruitment-market research, building a healthcare jobs board, workforce and pay-band analysis, and monitoring hiring at specific trusts.

Input parameters

ParameterTypeRequiredDefaultDescription
keywordstringNoJob title, skill, or reference number.
locationstringNoCity, town, or postcode.
results_wantedintegerNo20Maximum vacancies to collect (billed rows).
max_pagesintegerNo5Safety limit on search pages (10 vacancies per page).
collectDetailsbooleanNotrueVisit each job page for the full description. Turn off for a fast listing-only run.
startUrlstringNoA jobs.nhs.uk search URL. Overrides keyword and location.
proxyConfigurationobjectNoApify ProxyProxy settings. Residential is recommended for large runs.

Example inputs

Nursing jobs in London:

{ "keyword": "nurse", "location": "London", "results_wanted": 50 }

Fast listing-only run:

{ "keyword": "administrator", "collectDetails": false, "results_wanted": 100 }

Start from a filtered NHS Jobs URL:

{
"startUrl": "https://www.jobs.nhs.uk/candidate/search/results?keyword=paramedic&location=Manchester",
"results_wanted": 20
}

What data can you extract from NHS Jobs?

FieldDescription
titleOfficial job title
companyNHS trust or hiring organisation
locationSite, town, and postcode
salarySalary range or Agenda-for-Change band
pay_schemePay scheme (Agenda for change, Other…)
contract_typePermanent, Fixed-Term, Bank, Secondment, Locum…
working_patternFull-time, Part-time, Flexible…
date_posted / closing_datePublication and application-deadline dates
referenceNHS job reference number
urlDirect link to the job advert
employer_websiteThe hiring organisation's website
description_html / description_textFull job description (with collectDetails)
source / source_page / scraped_atSource label, search page, and collection timestamp

Output example

{
"title": "Registered Nurse - Emergency Department",
"company": "Manchester University NHS Foundation Trust",
"location": "Manchester Royal Infirmary, Manchester, M13 9WL",
"salary": "£28,407 to £34,581 a year",
"pay_scheme": "Agenda for change",
"contract_type": "Permanent",
"working_pattern": "Full-time",
"date_posted": "07 May 2026",
"closing_date": "04 June 2026",
"reference": "123-ABC-456",
"url": "https://www.jobs.nhs.uk/candidate/jobadvert/123-ABC-456",
"description_text": "Job summary\n\nWe are looking for motivated Registered Nurses...",
"description_html": "<h2>Job summary</h2>\n<p>We are looking for motivated Registered Nurses...</p>",
"source": "jobs.nhs.uk",
"source_page": 1,
"scraped_at": "2026-09-02T12:00:00.000Z"
}

Download the dataset as JSON, CSV, Excel, HTML, or XML from the Storage tab or the Apify API.

Use cases

  • Healthcare jobs board — feed an aggregator or alert service with live NHS vacancies.
  • Pay-band analysis — track Agenda-for-Change bands by role, trust, and region.
  • Recruitment-market research — measure hiring volume and closing-window pressure across the NHS.
  • Trust monitoring — start from a trust-filtered URL and collect everything it posts.
  • LLM training data — a large corpus of structured public-sector job descriptions.

How it works

  1. Search — the scraper requests the NHS Jobs results page (10 vacancies per page) with your keyword and location, and reads each result card.
  2. Detail — when collectDetails is on, each job advert page is fetched for the full description and refined employer, salary, and location fields.
  3. Resilience — requests are paced and the HTTP session rotates on any block, so large runs stay complete.
  4. Rows stream to the dataset and stop at results_wanted.

How much does it cost to scrape NHS Jobs?

This actor is pay per result — charged once per vacancy saved.

PlanPrice per 1,000 vacancies
Free$0.99
Bronze$0.89
Silver$0.89
Gold$0.79

A small platform Actor start fee also applies per run. results_wanted is the exact number of billed rows. Scraping 1,000 vacancies on the Free plan costs about $0.99. Apify's monthly free platform usage covers small runs.

How to scrape NHS Jobs

  1. Click Try for free and sign in to Apify.
  2. Enter a keyword and/or location.
  3. Set results wanted (start low, e.g. 20).
  4. Optionally turn off Collect full descriptions for a fast run.
  5. Click Start, then watch rows appear in the Output tab.
  6. Export from Storage, or pull results via the API.

Run it via API

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("parsebird/nhs-uk-jobs-scraper").call(run_input={
"keyword": "nurse",
"location": "London",
"results_wanted": 50,
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["title"], "-", job["company"], "-", job["salary"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('parsebird/nhs-uk-jobs-scraper').call({
keyword: 'administrator',
collectDetails: false,
results_wanted: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Schedule recurring runs, add webhooks, or push results to Google Sheets, Slack, Zapier, and Make with Apify integrations.

FAQ

Do I need an NHS Jobs account or API key? No. The scraper reads public NHS Jobs pages only. NHS Jobs has no public API — this actor is the alternative.

How current is the data? Live. Each run reads NHS Jobs at that moment. Use Apify's scheduler to keep a dataset fresh.

What does turning off collectDetails change? The scraper skips the per-job page, so you get every listing field except description_html / description_text — much faster and cheaper for large runs.

Why does a location search sometimes return fewer results than expected? NHS Jobs matches the location loosely to a travel-to-work area; a narrow keyword plus a small town can legitimately return only a handful of vacancies.

Something's not working. Open an issue on the Issues tab with your input and the run link — we respond quickly.

NHS Jobs is a UK public-sector website and its vacancy adverts are public information any visitor can see. Scraping publicly available pages is legal in most jurisdictions, and this actor does not access private data or bypass any login. You are responsible for how you use the data — follow NHS Jobs' Terms and Conditions and the UK GDPR when handling any personal data, and consult a lawyer if you are unsure. See Apify's guide on the legality of web scraping.

Browse all ParseBird actors on Apify Store.