{
  "openapi": "3.0.1",
  "info": {
    "title": "Reed.co.uk Jobs Scraper - UK Jobs, Salaries & Recruiters API",
    "description": "Use this to get UK job ads from Reed.co.uk. Input: keywords, locations, filters or Reed URLs. One result = one job: title, company, agency or employer, location, salary (parsed), contract type, remote/hybrid, date, URL; optional full description, skills and company profile. $0.50 per 1,000.",
    "version": "1.0",
    "x-build-id": "irFw1Kgb79npKn4Vz"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rel8ble~reed-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rel8ble-reed-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/rel8ble~reed-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-rel8ble-reed-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/rel8ble~reed-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-rel8ble-reed-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": {
          "searchQueries": {
            "title": "Search keywords",
            "type": "array",
            "description": "Optional. Job keywords as typed into the Reed search box, one per line: \"software developer\", \"accountant\", \"care assistant\", \"HGV driver\". A job title, skill or company name all work. Each keyword is one search and returns up to maxItems jobs. Leave empty to list all jobs matching the location and filters below. Give at least one of searchQueries, locations, a filter or startUrls.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations (UK)",
            "type": "array",
            "description": "Optional. UK places to search around, one per line: a town or city (\"London\", \"Manchester\"), a county (\"Kent\", \"West Yorkshire\"), a country (\"England\") or a postcode (\"SW1A 1AA\", \"M1\"). Every keyword is searched in every location (2 keywords x 3 locations = 6 searches). Empty = the whole UK. Reed matches the start of a place name, so a vague name can land on a village (\"Scotland\" becomes \"Scotland Gate\"); the run log and summary show the place Reed used.",
            "items": {
              "type": "string"
            }
          },
          "distanceMiles": {
            "title": "Distance from location (miles)",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Optional. Radius around each location in miles. Reed offers 0, 1, 3, 5, 10, 15, 20, 30 and 50; other numbers are rounded to the nearest of those. Default 10 (what reed.co.uk uses). Ignored when locations is empty.",
            "default": 10
          },
          "salaryMin": {
            "title": "Minimum salary (£ per year)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Only jobs paying at least this much, in pounds per year, e.g. 30000. Reed compares against the annual equivalent, so hourly and daily rates are included when they work out above it. 0 or empty = no minimum."
          },
          "salaryMax": {
            "title": "Maximum salary (£ per year)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Only jobs paying at most this much, in pounds per year, e.g. 60000. 0 or empty = no maximum."
          },
          "contractTypes": {
            "title": "Contract types",
            "type": "array",
            "description": "Optional. Keep only these contract types: any of \"permanent\", \"temporary\", \"contract\". Several values = any of them. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "permanent",
                "temporary",
                "contract"
              ],
              "enumTitles": [
                "Permanent",
                "Temporary",
                "Contract"
              ]
            }
          },
          "workingHours": {
            "title": "Working hours",
            "type": "array",
            "description": "Optional. \"fulltime\" and / or \"parttime\". Empty = both.",
            "items": {
              "type": "string",
              "enum": [
                "fulltime",
                "parttime"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time"
              ]
            }
          },
          "workplace": {
            "title": "Remote / hybrid / on-site",
            "enum": [
              "any",
              "remote",
              "hybrid",
              "onsite"
            ],
            "type": "string",
            "description": "Optional. One of \"any\" (default), \"remote\", \"hybrid\", \"onsite\". Reed allows one at a time; run the actor once per value to combine.",
            "default": "any"
          },
          "postedBy": {
            "title": "Posted by",
            "type": "array",
            "description": "Optional. \"employer\" = ads the hiring company posted itself, \"agency\" = ads posted by recruitment agencies. Use [\"employer\"] to skip agencies, [\"agency\"] to list only agency ads. Empty = both.",
            "items": {
              "type": "string",
              "enum": [
                "employer",
                "agency"
              ],
              "enumTitles": [
                "Employer (direct)",
                "Recruitment agency"
              ]
            }
          },
          "sectors": {
            "title": "Sectors (Reed specialisms)",
            "type": "array",
            "description": "Optional. Keep only jobs in these Reed sectors, one per line, written as on reed.co.uk: \"Accountancy\", \"Accountancy (Qualified)\", \"Admin, Secretarial & PA\", \"Apprenticeships\", \"Banking\", \"Charity & Voluntary\", \"Construction & Property\", \"Customer Service\", \"Education\", \"Energy\", \"Engineering\", \"Estate Agency\", \"Financial Services\", \"FMCG\", \"General Insurance\", \"Graduate Training & Internships\", \"Health & Medicine\", \"Hospitality & Catering\", \"Human Resources\", \"IT & Telecoms\", \"Legal\", \"Leisure & Tourism\", \"Manufacturing\", \"Marketing & PR\", \"Media, Digital & Creative\", \"Motoring & Automotive\", \"Other\", \"Purchasing\", \"Recruitment Consultancy\", \"Retail\", \"Sales\", \"Scientific\", \"Security & Safety\", \"Social Care\", \"Strategy & Consultancy\", \"Training\", \"Transport & Logistics\". Several = any of them. Empty = all sectors.",
            "items": {
              "type": "string"
            }
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "Optional. Only jobs posted in the last N days, integer >= 0. 1 = posted today (UK time), 3, 7 and 14 use Reed's own filters; any other number is applied to each job's postedAt date. 0 (default) = any date. Use 1 on a daily schedule to collect only new jobs.",
            "default": 0
          },
          "graduateOnly": {
            "title": "Graduate jobs only",
            "type": "boolean",
            "description": "Optional boolean. true = only jobs Reed marks as suitable for graduates. Default false.",
            "default": false
          },
          "easyApplyOnly": {
            "title": "Easy apply only",
            "type": "boolean",
            "description": "Optional boolean. true = only jobs you can apply to on Reed with your Reed CV. Default false.",
            "default": false
          },
          "visaSponsorshipOnly": {
            "title": "Visa sponsorship only",
            "type": "boolean",
            "description": "Optional boolean. true = only jobs whose advertiser offers visa sponsorship (few ads use this flag). Default false.",
            "default": false
          },
          "salaryShownOnly": {
            "title": "Only jobs that show a salary",
            "type": "boolean",
            "description": "Optional boolean. true = hide ads that say \"Competitive salary\" or \"Salary negotiable\" instead of a figure. Default false.",
            "default": false
          },
          "excludeTrainingCourses": {
            "title": "Leave out training-course ads",
            "type": "boolean",
            "description": "Optional boolean, default true. Reed mixes paid training-course ads (\"Become a ... - no experience needed\") into job results; true leaves them out. false = keep them (they have isTrainingCourse: true).",
            "default": true
          },
          "maxItems": {
            "title": "Max jobs per search",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Maximum jobs saved per search (one keyword in one location), integer >= 0. Default 100; 0 = every job the search has. You pay per job saved ($0.0005 each), so 100 jobs = $0.05. Use 10-20 for a quick answer.",
            "default": 100
          },
          "deepSearch": {
            "title": "Deep search (go past the 10,000-job limit)",
            "type": "boolean",
            "description": "Optional boolean, default true. Reed returns at most 10,000 jobs for any one search (all UK jobs are about 100,000). With deep search on, a bigger search is split automatically by sector, contract type, agency / employer, workplace and hours, and the results are merged without duplicates. Only kicks in when maxItems is above 10,000 (or 0). It costs extra requests, not extra money per job.",
            "default": true
          },
          "includeDetails": {
            "title": "Include full description & skills (slower)",
            "type": "boolean",
            "description": "Optional boolean. false (default) = search data only: title, company, agency or employer, location, salary, contract type, hours, workplace, summary (first ~150 characters), dates, category, links; up to 100 jobs per request. true = also open each job page to add the full description (plain text), the skills list, sector, town, postcode district, region, annual salary equivalent, graduate flag, the advertiser's reference and the company-profile link. One extra request per job, same price per result.",
            "default": false
          },
          "includeDescriptionHtml": {
            "title": "Also keep the description as HTML",
            "type": "boolean",
            "description": "Optional boolean. Only used with includeDetails or job URLs. true = add descriptionHtml (the original formatting) next to the plain-text description. Default false.",
            "default": false
          },
          "includeCompanyDetails": {
            "title": "Include company profile",
            "type": "boolean",
            "description": "Optional boolean. true = add the advertiser's Reed company profile where one exists: website, size, industry, headquarters, description, LinkedIn / Facebook / X / Instagram links and how many jobs it has on Reed. Turns on includeDetails (the profile link is on the job page). One extra request per company (not per job), same price per result. Default false.",
            "default": false
          },
          "startUrls": {
            "title": "Reed URLs",
            "type": "array",
            "description": "Optional. URLs copied from reed.co.uk, one per line. A search URL (\"https://www.reed.co.uk/jobs/python-developer-jobs-in-london?salaryFrom=50000&perm=true\") is scraped with the filters in the URL (the filter fields above are not applied to it). An agency or employer job list (\"https://www.reed.co.uk/jobs/intec-select-limited/p41618\") works the same way. A job URL (\"https://www.reed.co.uk/jobs/python-developers/57418395\") or a bare job id is looked up directly and always includes the full details. A company-profile URL (\"https://www.reed.co.uk/company-profile/Savers-611\") returns all of that company's jobs. Expired jobs are listed in the run summary and are not charged.",
            "items": {
              "type": "string"
            }
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Optional, advanced. Number of parallel requests, integer 1-30. Default 10. Leave unset.",
            "default": 10
          },
          "maxRequestRetries": {
            "title": "Max retries per request",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Optional, advanced. Retries per failed or rate-limited request, integer 0-20; each retry uses a new session (and a new IP when a proxy is on). Default 10. Leave unset.",
            "default": 10
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional, advanced. Apify Proxy settings object. Default {\"useApifyProxy\": false}: no proxy is needed, requests go out directly at a pace Reed accepts (about 170 a minute). Most Apify datacenter proxy IPs are refused by Reed, so do not switch them on; a residential proxy with country GB works but costs extra and is only worth it for very large runs. Leave unset.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}