NHS Job Extractor
Pricing
from $4.99 / 1,000 results
NHS Job Extractor
NHS Jobs Scraper that pulls vacancy listings from jobs.nhs.uk by keyword, location, and filter, so recruiters and analysts get clean structured job data without manual searching.
Pricing
from $4.99 / 1,000 results
Rating
0.0
(0)
Developer
Kawsar
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
NHS Jobs Scraper
NHS Jobs Scraper collects job listings from jobs.nhs.uk. Enter one or more keyword+location pairs, and the actor runs each search independently, collecting up to your item limit per pair. All results land in a single dataset with each record tagged by the keyword and location that produced it.
How pairing works
Keywords and locations are matched line by line:
| Keywords | Locations | Pair |
|---|---|---|
| nurse | London | nurse + London |
| doctor | Manchester | doctor + Manchester |
| radiographer | radiographer + all UK |
If you provide fewer locations than keywords, the remaining keywords search across all UK locations. Filters (contract type, working pattern, salary range) apply to every pair in the run.
maxItems is the limit per pair, not a global total. Three keywords with maxItems: 100 can return up to 300 jobs.
What it collects
For every matching job listing, the actor returns:
- Job title and direct link to the full advert
- NHS Jobs reference number (e.g. C9152-26-0547)
- Hiring employer or NHS Trust name
- Location and postcode
- Salary range or salary description
- Date posted and application closing date
- Contract type: Permanent, Fixed-Term, Locum, Apprenticeship, and more
- Working pattern: Full time, Part time, Flexible, Remote, and more
- Search keyword and location that produced the result
- Timestamp of when the record was collected
Features
- Multiple keyword+location pairs in a single run
- Per-pair item limit -- each search is independent
- Filter every pair by contract type, working pattern, employer, and salary range
- Automatic pagination across hundreds of result pages per pair
- Resume from any page number if a previous run was interrupted
- Covers all NHS job categories: nursing, clinical, administrative, and support roles
- Clean structured output with
searchKeywordandsearchLocationfields for easy filtering - Exports to JSON, CSV, or Excel via the Apify dataset
Use cases
- Recruitment pipelines: pull live NHS vacancies for multiple roles and cities in one run
- Salary benchmarking: compare pay bands for the same role across different regions
- Closing date monitoring: track application deadlines for dozens of roles without daily manual checks
- Job board population: feed structured NHS listings into a custom healthcare job board
- Research and analysis: study NHS hiring by contract type, working pattern, or geography across roles
- Alert automation: combine with Zapier or Make to send notifications when new roles appear
How it works
- You enter one or more keywords and optionally one location per keyword.
- The actor pairs each keyword with its corresponding location (extras default to all UK).
- For each pair, it builds a search URL using your keyword, location, and filter settings.
- It fetches the first page of results and parses each job listing.
- If more pages exist and the per-pair limit has not been reached, it fetches the next page.
- Each job record is tagged with
searchKeywordandsearchLocationbefore being stored. - When all pairs are done, the full dataset is available to download.
Input
Search
| Parameter | Type | Default | Description |
|---|---|---|---|
keywords | string list | nurse | One keyword per line. Paired line-by-line with locations |
locations | string list | One location per line (town, city, or postcode). Optional |
Filters
These apply to every keyword+location pair in the run.
| Parameter | Type | Default | Description |
|---|---|---|---|
distance | integer | 10 | Search radius in miles from each location (5, 10, 20, 30, 50, or 100) |
employer | string | Filter to a specific employer or NHS Trust name | |
contractType | string | Permanent, Fixed-Term, Locum, Apprenticeship, Voluntary, Training, Secondment, Honorary, Bank | |
workingPattern | string | full-time, part-time, job-share, flexible-working, remote-working, compressed-hours, term-time-hours, annualised-hours | |
salaryFrom | integer | 0 | Minimum annual salary. Use 0 for no lower limit |
salaryTo | integer | 0 | Maximum annual salary. Use 0 for no upper limit |
Limits
| Parameter | Type | Default | Description |
|---|---|---|---|
startPage | integer | 1 | Page to begin scraping from. Applies to every pair |
maxItems | integer | 100 | Maximum jobs per keyword+location pair (up to 1000) |
requestTimeoutSecs | integer | 30 | Per-request timeout in seconds |
Example inputs
Search for nurses in London and doctors in Manchester, up to 200 results per pair:
{"keywords": ["nurse", "doctor"],"locations": ["London", "Manchester"],"maxItems": 200}
Search for physiotherapists, radiographers, and paramedics across all UK locations:
{"keywords": ["physiotherapist", "radiographer", "paramedic"],"maxItems": 100}
Search for permanent full-time nurses and midwives in Birmingham and Leeds, salary above £30,000:
{"keywords": ["nurse", "midwife"],"locations": ["Birmingham", "Leeds"],"contractType": "Permanent","workingPattern": "full-time","salaryFrom": 30000,"maxItems": 300}
Output
Each job listing is one record in the Apify dataset. The searchKeyword and searchLocation fields identify which pair produced it.
Example output record
{"jobTitle": "Staff Nurse - Registered Nurse","jobUrl": "https://www.jobs.nhs.uk/candidate/jobadvert/C9152-26-0547","referenceNumber": "C9152-26-0547","employer": "Dorset HealthCare University NHS Foundation Trust","location": "Weymouth DT40QE","salary": "£32,073 to £39,043 a year","datePosted": "21 May 2026","closingDate": "4 June 2026","contractType": "Permanent","workingPattern": "Full time","searchKeyword": "nurse","searchLocation": "London","scrapedAt": "2026-05-23T10:00:00+00:00"}
Output fields
| Field | Type | Description |
|---|---|---|
jobTitle | string | Job title as listed on the portal |
jobUrl | string | Direct link to the full job advert page |
referenceNumber | string | NHS Jobs reference number (e.g. C9152-26-0547) |
employer | string | Hiring organisation or NHS Trust name |
location | string | Town, city, or postcode where the role is based |
salary | string | Salary range or description. May read "Depends on experience" |
datePosted | string | Date the listing was published on NHS Jobs |
closingDate | string | Application closing date |
contractType | string | Permanent, Fixed-Term, Locum, Apprenticeship, etc. |
workingPattern | string | Full time, Part time, Flexible working, etc. |
searchKeyword | string | The keyword used in the search that returned this result |
searchLocation | string | The location paired with the keyword. Null if no location was set |
scrapedAt | string | ISO 8601 UTC timestamp of when this record was collected |
Export formats
Download results from the Apify dataset in:
- JSON -- for APIs, databases, and custom scripts
- CSV -- for Excel, Google Sheets, or BI tools
- XLSX -- direct Excel format
- XML and other formats via the Apify API
Frequently asked questions
How many total results can I collect? Up to 1,000 per keyword+location pair. With 5 keywords, that is up to 5,000 jobs per run. NHS Jobs returns 10 listings per page.
Does it scrape the full job description? No. The actor collects data visible on search results pages: title, employer, location, salary, dates, contract type, and working pattern. Full job descriptions are on individual advert pages and are not included.
What if I have more keywords than locations? The extra keywords run without a location filter and search across all UK. For example, 3 keywords with 1 location gives pairs: (kw1, loc1), (kw2, all UK), (kw3, all UK).
What happens if a field is missing from a listing?
Missing fields return null. Some listings omit salary or show "Depends on experience"; these are captured as-is.
How do I get results for just one keyword? Enter one keyword and leave locations blank. The actor runs a single search across all UK locations.
How often does NHS Jobs update? New listings appear daily. Schedule this actor on Apify Schedules to run every 24 hours to stay current.
Scheduling
Run this actor on a schedule via Apify Schedules to keep your dataset fresh. A daily run at midnight captures any listings posted in the previous 24 hours.
Integrations
Connect NHS Jobs Scraper with other apps using Apify integrations. Works with Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, and more. Use webhooks to trigger downstream actions the moment results land.
Common integration patterns:
- Send a Slack or email alert when a new role appears for a saved keyword
- Append each new NHS listing to a Google Sheet for daily tracking
- Trigger a Make or Zapier scenario to post vacancies to a job board
- Sync results to a CRM or ATS via the Apify API