{
  "openapi": "3.0.1",
  "info": {
    "title": "RailwayPeople Jobs Scraper: UK Rail Vacancies by Role & Salary",
    "description": "Scrape current UK rail vacancies from RailwayPeople.com's own ~50-category discipline taxonomy: Signalling, Rolling Stock, Overhead Line Engineering, and more. Returns full description, employer, location, dates, employment type, and salary when published. $1.50 per 1,000 jobs.",
    "version": "0.0",
    "x-build-id": "E2hGG0YVtu3ukpSF7"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~railwaypeople-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-railwaypeople-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/getascraper~railwaypeople-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-railwaypeople-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/getascraper~railwaypeople-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-railwaypeople-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",
            "type": "string",
            "description": "Free-text search term sent to RailwayPeople's own job search, for example \"Signalling\" or \"Project Manager\". Leave blank to pull the full current listing instead of a keyword match.",
            "default": ""
          },
          "jobCategories": {
            "title": "Job Categories",
            "type": "array",
            "description": "Limit results to one or more rail discipline categories, taken from RailwayPeople's own category taxonomy. Leave empty to include every category.",
            "items": {
              "type": "string",
              "enum": [
                "Rail Engineering and Engineer",
                "Engineering",
                "Civil Engineering",
                "Electrical Engineering",
                "Project Management",
                "Rail Engineering",
                "Signalling (Rail Engineering and Engineer)",
                "Signalling (Rail Operations and Management)",
                "Mechanical Engineering",
                "Surveying",
                "Rail Vehicle Engineering",
                "Site Engineer",
                "Site Agent",
                "Strategy and Planning",
                "Environment Engineering",
                "Maintenance Engineering",
                "Overhead Line Engineering",
                "Rolling Stock",
                "Rail Construction",
                "Construction",
                "Design",
                "Production",
                "Quantity Surveyor",
                "Quality Assurance",
                "Groundworker",
                "CAD Technician",
                "On Track Construction",
                "Rail Operations and Management",
                "Management",
                "Health and Safety",
                "Training",
                "Rail Operations",
                "Finance",
                "Information Technology",
                "Legal",
                "Cleanering",
                "Customer Service",
                "Education",
                "Human Resources",
                "Train Controller",
                "Train Operating",
                "Support Services",
                "Compliance",
                "Other",
                "Supply Chain",
                "Commercial Manager",
                "Logistics",
                "Other Rail",
                "Distribution",
                "Administrative",
                "Buyer",
                "Accounting and Auditing",
                "Business Development",
                "Science",
                "Writing and Editing"
              ],
              "enumTitles": [
                "Rail Engineering and Engineer (all subcategories)",
                "Engineering",
                "Civil Engineering",
                "Electrical Engineering",
                "Project Management",
                "Rail Engineering",
                "Signalling (Engineering)",
                "Signalling (Operations)",
                "Mechanical Engineering",
                "Surveying",
                "Rail Vehicle Engineering",
                "Site Engineer",
                "Site Agent",
                "Strategy and Planning",
                "Environment Engineering",
                "Maintenance Engineering",
                "Overhead Line Engineering",
                "Rolling Stock",
                "Rail Construction (all subcategories)",
                "Construction",
                "Design",
                "Production",
                "Quantity Surveyor",
                "Quality Assurance",
                "Groundworker",
                "CAD Technician",
                "On Track Construction",
                "Rail Operations and Management (all subcategories)",
                "Management",
                "Health and Safety",
                "Training",
                "Rail Operations",
                "Finance",
                "Information Technology",
                "Legal",
                "Cleaning",
                "Customer Service",
                "Education",
                "Human Resources",
                "Train Controller",
                "Train Operating",
                "Support Services",
                "Compliance",
                "Other",
                "Supply Chain",
                "Commercial Manager",
                "Logistics",
                "Other Rail",
                "Distribution",
                "Administrative",
                "Buyer",
                "Accounting and Auditing",
                "Business Development",
                "Science",
                "Writing and Editing"
              ]
            },
            "default": []
          },
          "employmentTypes": {
            "title": "Employment Types",
            "type": "array",
            "description": "Limit results to one or more contract types, taken from RailwayPeople's own filters. Leave empty to include every employment type.",
            "items": {
              "type": "string",
              "enum": [
                "Full Time",
                "Permanent",
                "Contract",
                "Contract or Permanent",
                "Temporary",
                "Fixed Term Contract",
                "Zero Hours Contract"
              ],
              "enumTitles": [
                "Full Time",
                "Permanent",
                "Contract",
                "Contract or Permanent",
                "Temporary",
                "Fixed Term Contract",
                "Zero Hours Contract"
              ]
            },
            "default": []
          },
          "workArrangement": {
            "title": "Work Arrangement",
            "type": "array",
            "description": "Limit results by where the role is performed. Leave empty to include both in-person and hybrid roles.",
            "items": {
              "type": "string",
              "enum": [
                "In Person",
                "Hybrid"
              ],
              "enumTitles": [
                "In Person",
                "Hybrid"
              ]
            },
            "default": []
          },
          "maxItems": {
            "title": "Maximum Jobs to Scrape",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Maximum number of job postings to collect. Each job always requires its own detail-page fetch to get the full description, since RailwayPeople's own robots.txt asks for a 10-second gap between requests, so a larger value takes proportionally longer to run.",
            "default": 15
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "RailwayPeople's job pages are plain server-rendered HTML with no anti-bot tier observed during testing, so Apify's datacenter proxy group works reliably. Residential proxies are not required.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}