NHS Jobs Search Scraper
Pricing
from $2.99 / 1,000 job details
NHS Jobs Search Scraper
Extract rich NHS Jobs records with clean job sections, person-specification criteria, employer and contact details, structured locations, pay bands, salaries, contracts, dates, regulatory checks, documents, and application links.
Pricing
from $2.99 / 1,000 job details
Rating
0.0
(0)
Developer
Jobs API
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
11 hours ago
Last modified
Categories
Share
This Apify Actor extracts complete, publicly visible job adverts from NHS Jobs. It uses bounded direct HTTPS requests and Cheerio against the official search-results and candidate/jobadvert pages. No login, proxy, browser fingerprint spoofing, CAPTCHA solver, cloud call, or publish action is used.
Supported modes
search: onequeryand optionallocation(the default).searchMultiple: severalqueries, deduplicated by NHS job ID while retainingmatchedQueries.single: one official detail URL injobUrl.multiple: several official detail URLs injobUrls.startUrls: official NHS Jobs search-results and/or detail URLs instartUrls.
Every search candidate is verified through its official detail page before it is written. Search and detail work is bounded by maxItems, maxCandidates, maxPages, maxDetailRequests, and maxRequests.
Input examples
Search:
{"mode": "search","query": "nurse","location": "London","maxItems": 3,"maxPages": 2}
Single detail:
{"mode": "single","jobUrl": "https://www.jobs.nhs.uk/candidate/jobadvert/A5412-26-0001"}
The repository also contains INPUT-multiple.json, INPUT-search-multiple.json, INPUT-start-urls.json, and INPUT-negative.json for bounded local checks.
Output
Job records contain the stable NHS job ID, canonical/detail/source URLs, title, employer, public employer website/address, location parts, summary, duties, employer information, detailed description text and HTML, parsed description sections, person-specification criteria, regulatory notices, pay scheme/band/salary, contract and working pattern, dates, public supporting-document links, source-backed application URL when present, search attribution, request receipts, and data-quality metadata.
Direct personal contact fields are intentionally omitted. Placeholder criteria such as “Please see Job Description”, blank strings, nulls, empty arrays, and empty objects are omitted rather than turned into fabricated values. Failed public requests are represented as structured diagnostic records and KVS evidence rather than invalid job rows.
Local validation
Run from this directory:
npm ci --ignore-scripts --no-audit --no-fundnpm testnpm run checkapify validate-schema .actor/input_schema.jsonapify run --purge --input-file INPUT.jsonnpm run validate
The run writes the default dataset and RUN_SUMMARY, OUTPUT_SUMMARY, RUN_DIAGNOSTICS, RUN_METADATA, and RUN_HEALTH to local storage. The workflow is bounded local and cloud; do not use apify call or apify push.
Runtime and output contract
The Actor supports bounded local and Apify cloud runs. The default dataset contains only complete job records; request failures and other diagnostics are retained in RUN_DIAGNOSTICS in the default key-value store. maxRequests caps total HTTP attempts, and deadlineSeconds caps wall-clock runtime. Raw input is not persisted in run metadata.