NHS Jobs Scraper avatar

NHS Jobs Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
NHS Jobs Scraper

NHS Jobs Scraper

Extract UK NHS job vacancies from jobs.nhs.uk including title, employer, salary, band, pay scheme, location, contract type, closing date, full description, and more.

Pricing

from $1.00 / 1,000 results

Rating

5.0

(9)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

9

Bookmarked

2

Total users

0

Monthly active users

8 days ago

Last modified

Share

Extract UK NHS job vacancies from jobs.nhs.uk — title, employer, location, salary, band, pay scheme, contract type, working pattern, closing date, full description and more. No cookies, no proxy, no rate-limits on datacenter IPs.

Features

  • 20 output fields per vacancy — complete job data in a flat schema
  • Search by keyword, or provide any jobs.nhs.uk search URL with filters (location, band, pay scheme, staff group, specialty)
  • Full detail page enrichment — pay scheme, band, reference number, job summary, main duties, full description
  • Parsed salary ranges (GBP min/max) in addition to the raw formatted text
  • ISO-8601 dates for posted and closing dates
  • Pagination — walks ?page=N until maxItems is reached
  • No proxy required — jobs.nhs.uk is publicly accessible
  • No nulls — every field has a typed default

Input

FieldTypeDescription
startUrlsArrayNHS Jobs search-result URLs. Any filter applied in the URL (e.g., payScheme=AGENDA, payBand=Band+6, staffGroup=Nursing+and+Midwifery) is preserved.
searchStringAlternative shortcut — a plain keyword (e.g., "nurse") that builds a default search URL.
maxItemsIntegerMaximum number of vacancies to return (default 50, max 500).

Example Input

{
"startUrls": [
"https://www.jobs.nhs.uk/candidate/search/results?keyword=nurse&payBand=Band+6"
],
"maxItems": 50
}

or with a free-text keyword:

{
"search": "midwife",
"maxItems": 20
}

Output

Each job has 20 fields. All fields are always present — empty strings or zero for missing data, never null.

Identity

FieldTypeDescription
jobRefStringNHS reference number (e.g., C9371-26-0259)
urlStringFull job advert URL
titleStringJob title

Employer & Location

FieldTypeDescription
employerStringEmploying NHS Trust or organisation
locationStringFull location text
postcodeStringUK postcode

Pay & Contract

FieldTypeDescription
salaryStringFormatted salary (e.g., "£39,959 to £48,117 a year")
salaryMinNumberMinimum salary in GBP
salaryMaxNumberMaximum salary in GBP
salaryPeriodStringPay period (a year, per annum, per hour, etc.)
paySchemeStringPay scheme (e.g., "Agenda for change")
payBandStringPay band (e.g., "Band 6")
contractTypeStringContract type (e.g., Permanent, Fixed term)
workingPatternStringWorking pattern (e.g., Full-time, Part-time)

Dates

FieldTypeDescription
postedDateStringDate posted (ISO 8601 YYYY-MM-DD)
closingDateStringClosing date (ISO 8601 YYYY-MM-DD)

Description

FieldTypeDescription
jobSummaryStringShort job summary (truncated to 2,000 chars)
mainDutiesStringMain duties text (truncated to 2,000 chars)
descriptionStringFull job description (truncated to 4,000 chars)

Metadata

FieldTypeDescription
scrapedAtStringISO 8601 scrape timestamp

Example Output

{
"jobRef": "C9371-26-0259",
"url": "https://www.jobs.nhs.uk/candidate/jobadvert/C9371-26-0259",
"title": "District Nurse/Community Nursing Sister/Charge Nurse",
"employer": "Berkshire Healthcare Foundation Trust",
"location": "Community Nursing West Berkshire",
"postcode": "RG18 3HD",
"salary": "£39,959 to £48,117 a year",
"salaryMin": 39959.0,
"salaryMax": 48117.0,
"salaryPeriod": "a year",
"payScheme": "Agenda for change",
"payBand": "Band 6",
"contractType": "Permanent",
"workingPattern": "Full-time",
"postedDate": "2026-04-09",
"closingDate": "2026-04-16",
"jobSummary": "...",
"mainDuties": "...",
"description": "...",
"scrapedAt": "2026-04-10T17:40:00+00:00"
}

FAQ

Q: Do I need a proxy? No. jobs.nhs.uk serves pages directly over HTTPS without bot protection. This scraper runs fine from Apify datacenter IPs.

Q: How do I filter by pay band or staff group? Apply the filter on the NHS Jobs site, then copy the URL from the address bar into startUrls. All query parameters (including payBand, payScheme, staffGroup, specialty, location) are passed through verbatim.

Q: Are closed / expired jobs included? Only currently-listed vacancies from the search results are returned. Historical closed jobs aren't accessible via search.

Q: What's the maximum throughput? NHS search pages return 10 results each. The scraper walks pages sequentially and enriches details in parallel (concurrency 4) — expect ~40 jobs/minute.

Q: Why are some salaryMin / salaryMax values the same? When a job has a fixed salary (not a range), both fields are set to the same value.

Use Cases

  • Healthcare recruitment research — monitor NHS hiring trends by band, speciality, region
  • Job alerts — daily runs to watch new nursing, medical, or admin postings in specific trusts
  • Salary benchmarking — aggregate pay data across NHS bands and locations
  • Workforce planning — pull open positions into HR/ATS systems
  • Regional healthcare analysis — compare vacancy counts across regions or trusts