{
  "openapi": "3.0.1",
  "info": {
    "title": "Reed.co.uk Scraper",
    "description": "Extracts job listings from Reed.co.uk using the API or HTML fallback, with filters for location, salary, job type, and other criteria. Returns structured job data, including title, employer, salary, and URL.",
    "version": "0.0",
    "x-build-id": "dbpSGMtytJ0HtsaXd"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/moving_beacon-owner1~reed-co-uk-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-moving_beacon-owner1-reed-co-uk-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/moving_beacon-owner1~reed-co-uk-scraper/runs": {
      "post": {
        "operationId": "runs-sync-moving_beacon-owner1-reed-co-uk-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/moving_beacon-owner1~reed-co-uk-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-moving_beacon-owner1-reed-co-uk-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",
        "required": [
          "query"
        ],
        "properties": {
          "apiKey": {
            "title": "Reed API key (recommended)",
            "type": "string",
            "description": "Free at https://www.reed.co.uk/developers. If provided, the actor uses Reed's official REST API — richer data, faster, and supports all filters. If blank, the actor falls back to HTML scraping (filters won't apply)."
          },
          "query": {
            "title": "Search keywords",
            "type": "string",
            "description": "Job title, skill, or keyword to search for on Reed."
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Town, city, or postcode. Examples: 'London', 'Manchester', 'EC1A 1BB'. Leave blank for nationwide."
          },
          "distance": {
            "title": "Distance from location (miles)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "How far around the location to search. API only."
          },
          "minSalary": {
            "title": "Minimum salary (£)",
            "minimum": 0,
            "type": "integer",
            "description": "Filter out roles paying below this amount per year. API only."
          },
          "maxSalary": {
            "title": "Maximum salary (£)",
            "minimum": 0,
            "type": "integer",
            "description": "Filter out roles paying above this amount per year. API only."
          },
          "employmentTypes": {
            "title": "Employment types",
            "uniqueItems": true,
            "type": "array",
            "description": "Restrict to specific types. Valid values: permanent, contract, temp, fullTime, partTime. Leave empty for all. API only.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "postedBy": {
            "title": "Posted by",
            "enum": [
              "any",
              "agency",
              "direct"
            ],
            "type": "string",
            "description": "Restrict to recruitment agencies or direct employers. API only.",
            "default": "any"
          },
          "graduateOnly": {
            "title": "Graduate roles only",
            "type": "boolean",
            "description": "Only return jobs flagged as graduate-level. API only.",
            "default": false
          },
          "employerId": {
            "title": "Employer ID",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Restrict to jobs from a specific employer. Find their numeric ID in the employer's Reed profile URL. API only."
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Soft cap on total jobs returned. The actor paginates until it reaches this many or runs out.",
            "default": 100
          },
          "pageSize": {
            "title": "Page size (API only)",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many jobs to request per API call. Reed caps at 100.",
            "default": 100
          },
          "includeDetails": {
            "title": "Fetch detail per job",
            "type": "boolean",
            "description": "With API key: fetches /api/1.0/jobs/{id} for each result (full description, external apply URL, full employer info). Without: fetches the job's HTML page. Roughly multiplies runtime by N jobs.",
            "default": false
          },
          "impersonate": {
            "title": "Browser impersonation profile",
            "enum": [
              "chrome124",
              "chrome131",
              "chrome120",
              "edge101",
              "safari17_0"
            ],
            "type": "string",
            "description": "curl_cffi TLS / JA3 fingerprint. Only matters for the HTML path — the API path is just JSON over basic auth.",
            "default": "chrome124"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy or your own. The API path doesn't need anything special; HTML scraping benefits from RESIDENTIAL on heavy multi-page runs.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}