NHS UK Jobs Scraper
Pricing
from $0.79 / 1,000 job scrapeds
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
Maintained by CommunityActor 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 rowsmax_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 fieldsstartUrl: string — a jobs.nhs.uk search URL; overrides keyword/locationproxyConfiguration: { "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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| keyword | string | No | — | Job title, skill, or reference number. |
| location | string | No | — | City, town, or postcode. |
| results_wanted | integer | No | 20 | Maximum vacancies to collect (billed rows). |
| max_pages | integer | No | 5 | Safety limit on search pages (10 vacancies per page). |
| collectDetails | boolean | No | true | Visit each job page for the full description. Turn off for a fast listing-only run. |
| startUrl | string | No | — | A jobs.nhs.uk search URL. Overrides keyword and location. |
| proxyConfiguration | object | No | Apify Proxy | Proxy 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?
| Field | Description |
|---|---|
| title | Official job title |
| company | NHS trust or hiring organisation |
| location | Site, town, and postcode |
| salary | Salary range or Agenda-for-Change band |
| pay_scheme | Pay scheme (Agenda for change, Other…) |
| contract_type | Permanent, Fixed-Term, Bank, Secondment, Locum… |
| working_pattern | Full-time, Part-time, Flexible… |
| date_posted / closing_date | Publication and application-deadline dates |
| reference | NHS job reference number |
| url | Direct link to the job advert |
| employer_website | The hiring organisation's website |
| description_html / description_text | Full job description (with collectDetails) |
| source / source_page / scraped_at | Source 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
- Search — the scraper requests the NHS Jobs results page (10 vacancies per page) with your
keywordandlocation, and reads each result card. - Detail — when
collectDetailsis on, each job advert page is fetched for the full description and refined employer, salary, and location fields. - Resilience — requests are paced and the HTTP session rotates on any block, so large runs stay complete.
- 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.
| Plan | Price 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
- Click Try for free and sign in to Apify.
- Enter a keyword and/or location.
- Set results wanted (start low, e.g. 20).
- Optionally turn off Collect full descriptions for a fast run.
- Click Start, then watch rows appear in the Output tab.
- Export from Storage, or pull results via the API.
Run it via API
Python:
from apify_client import ApifyClientclient = 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.
Is it legal to scrape NHS Jobs?
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.
Related actors
- Freshersworld Jobs Scraper — India fresher and entry-level jobs.
- Indeed Jobs Scraper — job listings from Indeed worldwide.
- hh.ru Jobs Scraper — vacancies from HeadHunter (Russia).
- MyCareersFuture Singapore Jobs Scraper — Singapore's national jobs portal.
Browse all ParseBird actors on Apify Store.