{
  "openapi": "3.0.1",
  "info": {
    "title": "Reed Scraper — UK Jobs, Salaries & Recruiters",
    "description": "Scrape Reed.co.uk jobs by keyword, location, salary, contract type, remote/hybrid or URL: title, employer, salary text with parsed GBP min/max, dates; optional full description.",
    "version": "0.1",
    "x-build-id": "eoZzckD618MTFjkSz"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tortuga~reed-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tortuga-reed-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/tortuga~reed-scraper/runs": {
      "post": {
        "operationId": "runs-sync-tortuga-reed-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/tortuga~reed-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-tortuga-reed-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, skill or company)",
            "type": "array",
            "description": "One search per keyword, e.g. \"python developer\", \"nurse\", \"accountant\". Leave empty to list every job matching the location and filters.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Where, as you would type it on Reed: a town or city (\"Manchester\"), a county (\"Kent\") or a postcode (\"SW1A 1AA\"). Leave empty for the whole UK. \"Remote\" = remote jobs only."
          },
          "distance": {
            "title": "Distance (miles)",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Radius around the location. Reed offers 0, 1, 3, 5, 10, 15, 20, 30 and 50 miles (other values are rounded to the nearest); Reed's default is 10."
          },
          "salaryMin": {
            "title": "Minimum salary (GBP per year)",
            "minimum": 0,
            "type": "integer",
            "description": "Reed's salary filter \"From\", in GBP per year, e.g. 30000."
          },
          "salaryMax": {
            "title": "Maximum salary (GBP per year)",
            "minimum": 0,
            "type": "integer",
            "description": "Reed's salary filter \"To\", in GBP per year, e.g. 60000."
          },
          "contractTypes": {
            "title": "Contract type",
            "type": "array",
            "description": "Only permanent, contract or temporary jobs. Several = any of them.",
            "items": {
              "type": "string",
              "enum": [
                "permanent",
                "contract",
                "temporary"
              ],
              "enumTitles": [
                "Permanent",
                "Contract",
                "Temporary"
              ]
            }
          },
          "workingHours": {
            "title": "Working hours",
            "enum": [
              "",
              "fullTime",
              "partTime"
            ],
            "type": "string",
            "description": "Only full-time or only part-time jobs.",
            "default": ""
          },
          "workplaceType": {
            "title": "Remote / on-site",
            "enum": [
              "",
              "remote",
              "hybrid",
              "onSite"
            ],
            "type": "string",
            "description": "Only remote, hybrid or on-site jobs.",
            "default": ""
          },
          "postedWithin": {
            "title": "Date posted",
            "enum": [
              "",
              "today",
              "lastthreedays",
              "lastweek",
              "lasttwoweeks"
            ],
            "type": "string",
            "description": "Only jobs posted within this period.",
            "default": ""
          },
          "postedBy": {
            "title": "Posted by",
            "enum": [
              "",
              "agency",
              "employer"
            ],
            "type": "string",
            "description": "Only jobs posted by recruitment agencies or only jobs posted directly by employers.",
            "default": ""
          },
          "graduateOnly": {
            "title": "Graduate jobs only",
            "type": "boolean",
            "description": "Reed's \"Graduate\" experience-level filter.",
            "default": false
          },
          "easyApplyOnly": {
            "title": "Easy Apply only",
            "type": "boolean",
            "description": "Only jobs you can apply to on Reed with Easy Apply.",
            "default": false
          },
          "visaSponsorshipOnly": {
            "title": "Visa sponsorship only",
            "type": "boolean",
            "description": "Only jobs that Reed marks as offering visa sponsorship (few jobs have this).",
            "default": false
          },
          "excludeTrainingCourses": {
            "title": "Skip training-course ads",
            "type": "boolean",
            "description": "Reed mixes paid training courses (\"Trainee ... with job guarantee\", shown with \"Training Course\" instead of a salary) into job results, sometimes half of a search. On = only real job ads, for keyword searches and search URLs. Off = exactly what Reed lists.",
            "default": true
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Relevance (Reed's default for keyword searches) or newest first (Reed's default without keywords)."
          },
          "startUrls": {
            "title": "Start URLs (Reed search or job pages)",
            "type": "array",
            "description": "Optional: Reed search URLs with any filters set on the site, e.g. https://www.reed.co.uk/jobs/accountant-jobs-in-leeds?salaryFrom=30000&perm=True, company job pages (https://www.reed.co.uk/jobs/<company>/p<id>), or single job URLs (https://www.reed.co.uk/jobs/<title>/<id>), which are returned with full details.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItems": {
            "title": "Max jobs",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many jobs in total (you pay per job saved).",
            "default": 100
          },
          "maxItemsPerSearch": {
            "title": "Max jobs per search",
            "minimum": 1,
            "type": "integer",
            "description": "Optional cap for each keyword / start URL, so one search does not use the whole Max jobs budget."
          },
          "splitLargeSearches": {
            "title": "Get more than Reed's 10,000 results per search",
            "type": "boolean",
            "description": "Reed shows at most 10,000 jobs for any search. With this on, a bigger search is split by specialism, contract type and agency/employer (and read in both sort orders when a slice is still too big), so you get all or nearly all of its jobs. Each extra page is one small request.",
            "default": true
          },
          "includeDetails": {
            "title": "Include full job description",
            "type": "boolean",
            "description": "Read each job's page data for the full description (text and HTML), sector and specialism, town, region, country and postcode, annual pay equivalent, graduate flag, the advertiser's job reference, recruiter type and whether the job is still live. One extra small request and one 'detail' event per job.",
            "default": false
          },
          "onlyNewOrChanged": {
            "title": "Only new or changed items",
            "type": "boolean",
            "description": "Remember what earlier runs of this search returned and output only new jobs or jobs whose title or salary changed. Use with a Schedule; unchanged jobs are not charged. With this on, Max jobs is the number of jobs checked per run; sort by date to watch the newest jobs.",
            "default": false
          },
          "monitoringKey": {
            "title": "Monitoring key",
            "type": "string",
            "description": "Name for this watch, so several schedules on the same search stay separate; defaults to a key derived from the search input"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Reed blocks Apify datacenter IPs, so the default is Apify RESIDENTIAL proxy with UK IPs (any other proxy that gets blocked is switched to it automatically). Traffic is small: about 15 KB per 100 jobs and 5 KB per job description, so roughly 0.2 MB per 1,000 jobs (about 3 MB with descriptions), billed by Apify as residential proxy data.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "GB"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}