{
  "openapi": "3.0.1",
  "info": {
    "title": "Reed.co.uk Jobs Scraper",
    "description": "Scrapes job vacancies with full descriptions from Reed.co.uk — one of the UK's largest job boards, with 100,000+ live vacancies. Keyword and location search with salary, job-type and date filters, plus direct job-URL lookup. No pagination ceiling.",
    "version": "0.1",
    "x-build-id": "n7g4w8cdbTJ4P3LQO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapyx~reed-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapyx-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/scrapyx~reed-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapyx-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/scrapyx~reed-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapyx-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": {
          "keywords": {
            "title": "Search keywords",
            "type": "array",
            "description": "One search per entry — each keyword runs as its own query and gets its own SEARCH_SUMMARY row. Leave empty to browse every job (optionally narrowed by location and the filters below).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Town, city, county or postcode, e.g. London, Manchester, Bristol, EC1. Leave empty to search the whole UK. Applies to every keyword in the run.",
            "default": ""
          },
          "proximity": {
            "title": "Distance from location (miles)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Widen the search around the location. Only has an effect when a location is set — a run that sets this without a location is refused rather than silently ignoring it.",
            "default": 0
          },
          "salaryFrom": {
            "title": "Minimum salary (£)",
            "minimum": 0,
            "type": "integer",
            "description": "Annual salary floor. Leave empty or 0 for no minimum.",
            "default": 0
          },
          "salaryTo": {
            "title": "Maximum salary (£)",
            "minimum": 0,
            "type": "integer",
            "description": "Annual salary ceiling. Leave empty or 0 for no maximum.",
            "default": 0
          },
          "datePosted": {
            "title": "Posted within",
            "enum": [
              "",
              "today",
              "lastthreedays",
              "lastweek"
            ],
            "type": "string",
            "description": "Only these three windows are honoured by Reed. Anything else (last month, yesterday…) is silently ignored upstream and returns the unfiltered search, so those options are deliberately not offered and unknown values are refused.",
            "default": ""
          },
          "fullTime": {
            "title": "Full-time only",
            "type": "boolean",
            "description": "Restrict results to full-time positions.",
            "default": false
          },
          "partTime": {
            "title": "Part-time only",
            "type": "boolean",
            "description": "Restrict results to part-time positions.",
            "default": false
          },
          "contract": {
            "title": "Contract roles only",
            "type": "boolean",
            "description": "Restrict results to fixed-term contract positions.",
            "default": false
          },
          "temp": {
            "title": "Temporary roles only",
            "type": "boolean",
            "description": "Restrict results to temporary positions.",
            "default": false
          },
          "graduate": {
            "title": "Graduate roles only",
            "type": "boolean",
            "description": "Restrict results to graduate-level and entry-level positions.",
            "default": false
          },
          "agency": {
            "title": "Recruitment-agency posts only",
            "type": "boolean",
            "description": "Restrict to jobs posted by agencies rather than direct employers.",
            "default": false
          },
          "jobUrls": {
            "title": "Job URLs (direct mode)",
            "type": "array",
            "description": "Scrape specific vacancies directly, skipping search. Accepts a full URL (https://www.reed.co.uk/jobs/x/57088337) or a bare numeric job id. Can be combined with a keyword search in the same run.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max jobs per keyword",
            "minimum": 0,
            "type": "integer",
            "description": "Stop paginating a keyword after this many jobs. Set to 0 for unlimited — Reed has no pagination ceiling, so unlimited really does mean the entire result set (browsing with no keyword reaches 100,000+ jobs). Set a bound unless you mean it.",
            "default": 100
          },
          "includeJobDetails": {
            "title": "Fetch full job descriptions",
            "type": "boolean",
            "description": "Fetch the complete ad (full HTML description, salary breakdown, contract details, application info, recruiter) for every result via one extra request per job. Turn this off for a fast listing-only crawl — search rows already carry title, employer, salary range, location, job type and a description snippet.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max concurrent requests",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "Upper bound on requests in flight at once, across keyword pagination and detail fetches.",
            "default": 4
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Reed runs no active bot challenge and a direct connection works, but Residential is the default for cloud runs — container egress is a different posture than a home connection, and this portfolio has lost a full cloud run to that difference before.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}