{
  "openapi": "3.0.1",
  "info": {
    "title": "Reed.co.uk Jobs Scraper: UK Jobs, Salaries & New-Job Monitor",
    "description": "UK jobs from Reed.co.uk by keyword, town and distance: title, company, salary as numbers (per year, day or hour), contract type, remote/hybrid, posting date and optional full descriptions. Same schema as Career Site Jobs API. Monitor mode returns only new jobs. Respects robots.txt.",
    "version": "0.1",
    "x-build-id": "0BHMyCh8I247eeD1d"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/localwire~reed-jobs/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-localwire-reed-jobs",
        "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/localwire~reed-jobs/runs": {
      "post": {
        "operationId": "runs-sync-localwire-reed-jobs",
        "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/localwire~reed-jobs/run-sync": {
      "post": {
        "operationId": "run-sync-localwire-reed-jobs",
        "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": "array",
            "description": "What to search for: job titles, skills or company names, one search per line, e.g. \"python developer\". Each keyword is searched in every location, up to 50 searches per run. Give keywords, locations or both; a run with neither fails. Reed's own search filters (distance, date posted, remote, contract type) are used where they match your input.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "UK towns, cities or regions, e.g. London, Leeds. Leave empty to search the whole of the UK for your keywords. Locations without keywords return every job in that place.",
            "items": {
              "type": "string"
            }
          },
          "radius": {
            "title": "Distance from location (miles)",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Search this many miles around each location (Reed's own distance filter). Only used when a location is given. Leave empty for Reed's own default distance."
          },
          "postedWithinDays": {
            "title": "Posted in the last N days",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Keep jobs posted in the last N days, e.g. 3 or 7. Up to 14 days Reed's own date filter narrows the search first; the exact cut is then applied to each job's posting date. Jobs without a date are kept."
          },
          "workplace": {
            "title": "Workplace",
            "type": "array",
            "description": "Keep only these work arrangements. When the results page doesn't say, the job page is read to decide (slower); jobs that still don't say are dropped.",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "hybrid",
                "onsite"
              ],
              "enumTitles": [
                "Remote",
                "Hybrid",
                "On-site"
              ]
            }
          },
          "employmentTypes": {
            "title": "Employment types",
            "type": "array",
            "description": "Keep only these employment types. When the results page doesn't say, the job page is read to decide (slower); jobs that still don't say are dropped.",
            "items": {
              "type": "string",
              "enum": [
                "full-time",
                "part-time",
                "contract",
                "temporary",
                "internship",
                "apprenticeship",
                "other"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship",
                "Apprenticeship",
                "Other"
              ]
            }
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop jobs whose title contains ANY of these words, e.g. senior, recruiter.",
            "items": {
              "type": "string"
            }
          },
          "monitorMode": {
            "title": "Monitor mode: only new jobs",
            "type": "boolean",
            "description": "Remember which jobs each search returned before and return only new ones (changeType \"new\"). Schedule the Actor (e.g. every few hours) to get a feed of new openings. Keep the same filters for a monitor.",
            "default": false
          },
          "monitorEmitExistingOnFirstRun": {
            "title": "Return existing jobs on the first run",
            "type": "boolean",
            "description": "On a monitor's first run every current job counts as new. Turn this off to record them silently (and not be charged for them).",
            "default": true
          },
          "monitorStoreName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Name of the key-value store in your account that holds the monitor's memory. Use a different name for each monitor. Letters, digits and hyphens.",
            "default": "reed-jobs-monitor"
          },
          "includeDescriptions": {
            "title": "Include full descriptions",
            "type": "boolean",
            "description": "Read each job's page for the full description (plus employment type, remote flag and salary where published). One extra request per job, so runs take longer.",
            "default": false
          },
          "includeHtml": {
            "title": "Include description HTML",
            "type": "boolean",
            "description": "Also include the description as HTML (descriptionHtml). Needs full descriptions on.",
            "default": false
          },
          "maxResults": {
            "title": "Max jobs in total",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Stop the run after this many jobs in total. Each job returned is charged once, so this is also the cost cap. 100 when left out; the form starts at 50 so that a first run is small. You can also cap spending with the run's maximum cost.",
            "default": 100
          },
          "maxResultsPerSearch": {
            "title": "Max jobs per search",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Stop each keyword/location search after this many jobs, so one busy search can't use up the whole run. Leave empty to use the total limit. At most 100 results pages (about 2,500 jobs) are read per search."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}