{
  "openapi": "3.0.1",
  "info": {
    "title": "NHS Jobs Scraper",
    "description": "Scrape NHS Jobs (jobs.nhs.uk) vacancies in England and Wales: title, employer, Agenda for Change band, salary, location, postcode, closing date and contract, plus each advert's person specification and Skilled Worker visa sponsorship. Export to JSON, CSV or Excel, or via API.",
    "version": "1.0",
    "x-build-id": "dUhlEkRbSSTV7t2NP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/steadyscrape~nhs-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-steadyscrape-nhs-jobs-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/steadyscrape~nhs-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-steadyscrape-nhs-jobs-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/steadyscrape~nhs-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-steadyscrape-nhs-jobs-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "keywords": {
            "title": "Keywords (job title or skills)",
            "type": "array",
            "description": "Job titles or skills as you would type them in NHS Jobs' \"What\" box, e.g. <code>nurse</code>, <code>staff nurse</code>, <code>healthcare assistant</code>, <code>physiotherapist</code>, <code>consultant psychiatrist</code>, <code>pharmacist</code>. Each keyword is one search; leave empty to search every job.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "A postcode, town, city or region in England or Wales, e.g. <code>Leeds</code>, <code>LS1 4AP</code>, <code>London</code>, <code>Cardiff</code>, <code>Yorkshire</code>, <code>Wales</code>. Each keyword is searched in each location. A place NHS Jobs cannot pin down (Newport) gives a free row listing the places it suggests.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "distance": {
            "title": "Distance around each location",
            "enum": [
              "only",
              "5",
              "10",
              "20",
              "30",
              "50",
              "100"
            ],
            "type": "string",
            "description": "Only in the place named, or within this many miles of it. Each job then shows its distance.",
            "default": "only"
          },
          "employer": {
            "title": "Employer",
            "type": "string",
            "description": "NHS Jobs' employer filter, e.g. <code>Leeds Teaching Hospitals</code>, <code>Guy's and St Thomas'</code>, <code>Aneurin Bevan University Health Board</code>.",
            "default": ""
          },
          "payBands": {
            "title": "Pay bands and grades",
            "type": "array",
            "description": "Agenda for Change bands and medical and dental grades, as NHS Jobs' filter offers them.",
            "items": {
              "type": "string",
              "enum": [
                "BAND_2",
                "BAND_3",
                "BAND_4",
                "BAND_5",
                "BAND_6",
                "BAND_7",
                "BAND_8A",
                "BAND_8B",
                "BAND_8C",
                "BAND_8D",
                "BAND_9",
                "SPECIALTY_DOCTOR",
                "FOUNDATION_DOCTOR",
                "CONSULTANT",
                "SPECIALTY_REGISTRAR",
                "DOCTOR_OTHER",
                "SPECIALIST",
                "VERY_SENIOR_MANAGER"
              ],
              "enumTitles": [
                "Band 2",
                "Band 3",
                "Band 4",
                "Band 5",
                "Band 6",
                "Band 7",
                "Band 8A",
                "Band 8B",
                "Band 8C",
                "Band 8D",
                "Band 9",
                "Specialty Doctor",
                "Foundation Doctor",
                "Consultant",
                "Specialty Registrar",
                "Doctor - Other",
                "Specialist",
                "Very senior manager (VSM)"
              ]
            },
            "default": []
          },
          "staffGroups": {
            "title": "Staff groups",
            "type": "array",
            "description": "The NHS staff groups of NHS Jobs' filter.",
            "items": {
              "type": "string",
              "enum": [
                "CLINICAL_SERVICES",
                "PROF_SCIENTIFIC_AND_TECHNICAL",
                "ADMINISTRATIVE_AND_CLERICAL",
                "ALLIED_HEALTH_PROF",
                "ESTATES_AND_ANCILLARY",
                "HEALTHCARE_SCIENTISTS",
                "MEDICAL_AND_DENTAL",
                "NURSING_AND_MIDWIFERY_REGD",
                "STUDENTS"
              ],
              "enumTitles": [
                "Additional Clinical Services",
                "Additional Professional Scientific & Technical",
                "Administrative & Clerical",
                "Allied Health Professionals",
                "Estates & Ancillary",
                "Healthcare Scientists",
                "Medical & Dental",
                "Nursing & Midwifery Registered",
                "Students"
              ]
            },
            "default": []
          },
          "contractTypes": {
            "title": "Contract types",
            "type": "array",
            "description": "Permanent, fixed-term, bank, locum and the other contracts of NHS Jobs' filter.",
            "items": {
              "type": "string",
              "enum": [
                "Permanent",
                "Fixed-Term",
                "Apprenticeship",
                "Voluntary",
                "Locum",
                "Training",
                "Secondment",
                "Honorary",
                "Bank",
                "NHS Reservist"
              ],
              "enumTitles": [
                "Permanent",
                "Fixed-term",
                "Apprenticeship",
                "Voluntary",
                "Locum",
                "Training",
                "Secondment",
                "Honorary",
                "Bank",
                "NHS Reservist"
              ]
            },
            "default": []
          },
          "workingPatterns": {
            "title": "Working patterns",
            "type": "array",
            "description": "Full time, part time, job-share, flexible, home or remote working and the other patterns of NHS Jobs' filter.",
            "items": {
              "type": "string",
              "enum": [
                "full-time",
                "part-time",
                "job-share",
                "flexible-working",
                "remote-working",
                "compressed-hours",
                "term-time-hours",
                "annualised-hours"
              ],
              "enumTitles": [
                "Full time",
                "Part time",
                "Job-share",
                "Flexible working",
                "Home or remote working",
                "Compressed hours",
                "Term time hours",
                "Annualised hours"
              ]
            },
            "default": []
          },
          "payRanges": {
            "title": "Pay ranges",
            "type": "array",
            "description": "Yearly pay ranges of NHS Jobs' filter.",
            "items": {
              "type": "string",
              "enum": [
                "100",
                "0-10",
                "10-20",
                "20-30",
                "30-40",
                "40-50",
                "50-60",
                "60-70",
                "70-80",
                "80-90",
                "90-100"
              ],
              "enumTitles": [
                "£100,000 plus",
                "£0 to £10,000",
                "£10,000 to £20,000",
                "£20,000 to £30,000",
                "£30,000 to £40,000",
                "£40,000 to £50,000",
                "£50,000 to £60,000",
                "£60,000 to £70,000",
                "£70,000 to £80,000",
                "£80,000 to £90,000",
                "£90,000 to £100,000"
              ]
            },
            "default": []
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "best_match",
              "newest",
              "closing_soonest",
              "salary_high_to_low",
              "salary_low_to_high"
            ],
            "type": "string",
            "description": "The order NHS Jobs lists the jobs in. Newest first lets \"Posted within\" stop at the first older job.",
            "default": "newest"
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "any",
              "1",
              "3",
              "7",
              "14",
              "30"
            ],
            "type": "string",
            "description": "Only jobs posted on or after this many days before the run (NHS Jobs gives the day a job was posted).",
            "default": "any"
          },
          "searchUrls": {
            "title": "NHS Jobs search links",
            "type": "array",
            "description": "Search result pages of jobs.nhs.uk, read with their filters as they are, e.g. <code>https://www.jobs.nhs.uk/candidate/search/results?keyword=nurse&location=Leeds&distance=10</code>.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "advertUrls": {
            "title": "Advert links",
            "type": "array",
            "description": "Job adverts of jobs.nhs.uk, e.g. <code>https://www.jobs.nhs.uk/candidate/jobadvert/C9236-26-1380</code>: one job with details each, closed adverts included.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeDetails": {
            "title": "Include advert details",
            "type": "boolean",
            "description": "On by default: opens each advert for pay scheme, band, salary note, reference number, every job location, the job summary and description, the person specification, Skilled Worker sponsorship, UK registration, DBS check and the employer's address and website (charged as job-with-details). Off: only what the results list shows (charged as job).",
            "default": true
          },
          "onlySponsorshipWelcome": {
            "title": "Only jobs welcoming Skilled Worker visa sponsorship",
            "type": "boolean",
            "description": "Keeps only adverts whose \"Certificate of Sponsorship\" section says applicants who need Skilled Worker sponsorship are welcome. Each advert is opened to check, so details are always included; adverts left out are not charged.",
            "default": false
          },
          "maxJobsPerSearch": {
            "title": "Max jobs per search",
            "minimum": 0,
            "type": "integer",
            "description": "How many jobs each keyword and location search delivers at most; 0 for every job it finds.",
            "default": 100
          },
          "onlyNewJobs": {
            "title": "Only new jobs since the last run",
            "type": "boolean",
            "description": "Monitor mode for scheduled runs: jobs this input delivered before are skipped and not charged.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}