{
  "openapi": "3.0.1",
  "info": {
    "title": "Reed.co.uk Jobs Scraper",
    "description": "Scrapes job postings from reed.co.uk with normalized salary, remote/hybrid detection and new-job monitoring.",
    "version": "0.1",
    "x-build-id": "S0ojDupnXP4fL7el5"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/uk_jobs_data~reed-jobs/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-uk_jobs_data-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/uk_jobs_data~reed-jobs/runs": {
      "post": {
        "operationId": "runs-sync-uk_jobs_data-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/uk_jobs_data~reed-jobs/run-sync": {
      "post": {
        "operationId": "run-sync-uk_jobs_data-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": "string",
            "description": "Job title or keywords to search for. Ignored if Start URLs is set.",
            "default": "python developer"
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "UK location to search near, e.g. \"London\" or \"Manchester\". Leave empty to search all of the UK. Ignored if Start URLs is set.",
            "default": ""
          },
          "distanceMiles": {
            "title": "Distance from location (miles)",
            "type": "integer",
            "description": "Search radius around Location. Only used when Location is set. Must be one of the values reed.co.uk supports: 0, 1, 3, 5, 10, 15, 20, 30, 50 (other values are rejected).",
            "default": 10
          },
          "salaryFrom": {
            "title": "Minimum salary (GBP/year)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum annual salary in GBP. reed.co.uk only offers fixed filter values (e.g. 10000, 12000, ..., 100000); the closest lower value is used automatically and a warning is logged if your value doesn't match exactly."
          },
          "salaryTo": {
            "title": "Maximum salary (GBP/year)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum annual salary in GBP. reed.co.uk only offers fixed filter values (e.g. 10000, 12000, ..., 100000); the closest higher value is used automatically and a warning is logged if your value doesn't match exactly."
          },
          "contractTypes": {
            "title": "Contract types",
            "type": "array",
            "description": "Filter by contract type. Leave empty to include all types.",
            "items": {
              "type": "string",
              "enum": [
                "permanent",
                "contract",
                "temp"
              ],
              "enumTitles": [
                "Permanent",
                "Contract",
                "Temporary"
              ]
            },
            "default": []
          },
          "workingHours": {
            "title": "Working hours",
            "type": "array",
            "description": "Filter by full-time/part-time. Leave empty to include all.",
            "items": {
              "type": "string",
              "enum": [
                "fullTime",
                "partTime"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time"
              ]
            },
            "default": []
          },
          "workModel": {
            "title": "Work model",
            "type": "array",
            "description": "Filter by onsite/hybrid/remote. Leave empty to include all. reed.co.uk only supports one value per request, so selecting 2 values runs 2 separate searches (results never overlap); selecting all 3 is the same as leaving this empty.",
            "items": {
              "type": "string",
              "enum": [
                "onSite",
                "hybrid",
                "remote"
              ],
              "enumTitles": [
                "On-site",
                "Hybrid",
                "Remote"
              ]
            },
            "default": []
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "any",
              "today",
              "lastThreeDays",
              "lastWeek",
              "lastTwoWeeks"
            ],
            "type": "string",
            "description": "Only include jobs posted within this time window.",
            "default": "any"
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Reed.co.uk search URLs (e.g. https://www.reed.co.uk/jobs/python-developer-jobs) or direct job URLs. When set, this takes priority over Keywords/Location/all filters above.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "includeDetails": {
            "title": "Include job details",
            "type": "boolean",
            "description": "If true, visits each job's detail page for the full description, exact location and confirmed contract type (slower, one extra request per job). If false, uses only the data available on the search results page (faster, cheaper).",
            "default": true
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of job results to return.",
            "default": 20
          },
          "onlyNewJobs": {
            "title": "Only new jobs (monitoring mode)",
            "type": "boolean",
            "description": "If true, skips jobs already seen in a previous run with the same Monitoring key, and does not charge for them. Intended for scheduled runs that monitor for new postings.",
            "default": false
          },
          "monitorKey": {
            "title": "Monitoring key",
            "type": "string",
            "description": "Name for the monitoring state used by \"Only new jobs\". Use a different key per distinct search so their seen-job lists don't mix.",
            "default": "default"
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Maximum number of pages fetched in parallel. Kept low by default to reduce blocking.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy configuration. Datacenter proxies are recommended and used by default.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}