# NHS UK \[$0💰] Jobs Scraper (`kinaesthetic_millionaire/nhs-uk-jobs-scraper`) Actor

Extracts job listings from NHS Jobs, including title, employer, location, salary, contract type and full job description.

- **URL**: https://apify.com/kinaesthetic_millionaire/nhs-uk-jobs-scraper.md
- **Developed by:** [Parsedom Inc](https://apify.com/kinaesthetic_millionaire) (community)
- **Categories:** Jobs, Automation, Developer tools
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-usage

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## NHS Jobs Scraper

Extracts job listings from [NHS Jobs](https://www.jobs.nhs.uk), the official job site for the UK's National Health Service. Give it a search results page and it returns structured data for every listing — job title, employer, location, salary, contract type, working pattern, and the full job description — as ready-to-use JSON.

<img src="https://i.postimg.cc/4dH5HcLT/how-the-nhs-jobs-actor-works.png" alt="How the NHS Jobs  Scraper Apify Actor works: provide input, the actor scrapes the site, get structured output" />

### ✨ Features

- **Job listing extraction** — title, employer, location, salary, contract type, working pattern, dates, reference number, and full description for every job
- **Pagination support** — automatically follows search result pages until enough listings are collected
- **Proxy support** — uses Apify Proxy by default to keep runs reliable at scale

### 🔧 Input Configuration

| Field | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `startUrls` | array | ✅ | `https://www.jobs.nhs.uk/candidate/search/results?keyword=&location=` | NHS Jobs search result pages or direct job listing URLs to start scraping from |
| `maxItems` | integer | — | `5` | Maximum number of job listings to scrape per start URL |
| `proxyConfiguration` | object | — | `{ "useApifyProxy": true }` | Proxy settings for the run |

**Supported URL types:**

- NHS Jobs search result pages, e.g. `https://www.jobs.nhs.uk/candidate/search/results?keyword=nurse&location=london`
- Direct job listing pages, e.g. `https://www.jobs.nhs.uk/candidate/jobadvert/<reference>`

### 📦 Output

The dataset includes one **Overview** view showing the main fields for each scraped job in a compact table.

**Sample output:**

```json
{
    "title": "Staff Nurse - A&E",
    "url": "https://www.jobs.nhs.uk/candidate/jobadvert/M0042-26-0125?keyword=&location=&language=en",
    "companyName": "Torbay & South Devon Nhs Foundation Trust",
    "location": "Newton Road, Torquay, TQ2 7AA",
    "salary": "£18.66 to £29.85 an hour",
    "contractType": "Bank",
    "workingPattern": "Full-time, Part-time, Flexible working",
    "datePosted": "05 September 2025",
    "closingDate": "The closing date is 05 September 2026",
    "jobReference": "M0042-26-0125",
    "description": "Job summary The Emergency Department at Torbay Hospital is looking for enthusiastic and committed Staff Nurses to join our team on a bank basis. You will work alongside a supportive multidisciplinary team delivering high-quality, patient-centred emergency care... [truncated for brevity — full text included in the actual dataset]"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### 💡 Uses of This Data

- Aggregating NHS vacancies onto a jobs board or careers site
- Tracking new openings at specific NHS trusts or in specific regions
- Monitoring salary bands and contract types across healthcare roles
- Feeding job alerts or notifications for specific job titles or locations
- Workforce and recruitment market research within the UK healthcare sector

### 🚀 How to Use

1. [Sign up](https://apify.com/sign-up) for a free Apify account — includes **$5 monthly credit**.
2. Open the actor page and click **Try for free**.
3. Fill in the **Input** fields (start URL or search query is required).
4. Click **Start** and wait for the run to complete.
5. Download results from the **Output** tab in JSON, CSV, or Excel format.

You can also run this actor via the [Apify API](https://docs.apify.com/api/v2) or integrate it directly into your workflows using [Zapier](https://zapier.com/apps/apify), [Make](https://www.make.com/), or [n8n](https://n8n.io/).

### 📝 Notes

- **Proxy enabled by default** — Apify Proxy is used out of the box to keep runs reliable; adjust the group or country in the Input tab if needed.
- **API integration** — This actor can be called as an API from any automation platform (Zapier, Make, n8n, custom scripts).

### 🤝 Support

Need help or have questions?

- Email us at <info@parsedom.com>
- Or visit <https://parsedom.com>
- Visit our profile on Fiverr: <https://www.fiverr.com/s/rEmNqEb>
- Apify public page: <https://apify.com/kinaesthetic_millionaire>
- You can also contact us if you want to build a custom actor.

# Actor input Schema

## `startUrls` (type: `array`):

NHS Jobs search result pages or direct job listing URLs to start scraping from.

## `maxItems` (type: `integer`):

Maximum number of job listings to scrape per start URL.

## `proxyConfiguration` (type: `object`):

Proxy settings for the run.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.jobs.nhs.uk/candidate/search/results?keyword=&location="
    }
  ],
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.jobs.nhs.uk/candidate/search/results?keyword=&location="
        }
    ],
    "maxItems": 5,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("kinaesthetic_millionaire/nhs-uk-jobs-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [{ "url": "https://www.jobs.nhs.uk/candidate/search/results?keyword=&location=" }],
    "maxItems": 5,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("kinaesthetic_millionaire/nhs-uk-jobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.jobs.nhs.uk/candidate/search/results?keyword=&location="
    }
  ],
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call kinaesthetic_millionaire/nhs-uk-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,kinaesthetic_millionaire/nhs-uk-jobs-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/cobJnHMtdytacuFNb/builds/wBLp8kFyurNIFbXTy/openapi.json
