{
  "openapi": "3.0.1",
  "info": {
    "title": "Reed.co.uk Scraper | Jobs, Companies, Courses & Reviews",
    "description": "Scrape Reed.co.uk jobs, companies, courses, and reviews. Search by keyword, location, filters, or URLs. Extract 80+ job fields including salary, company, GPS location, sector, contract type, skills, full description, postcode, company profile, course details, and review data.",
    "version": "1.0",
    "x-build-id": "lC8zrUYRizwEgbqfL"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~reed-co-uk-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-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/abotapi~reed-co-uk-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-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/abotapi~reed-co-uk-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-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": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "What to scrape",
            "enum": [
              "jobs",
              "company",
              "course"
            ],
            "type": "string",
            "description": "Jobs = job listings (by filters or pasted URLs). Companies = company profiles. Courses = training courses and their reviews.",
            "default": "jobs"
          },
          "urls": {
            "title": "Job URLs (optional)",
            "type": "array",
            "description": "Reed job-search URLs (e.g. https://www.reed.co.uk/jobs/data-engineer-jobs-in-london) or direct job URLs. If set, these are scraped directly and the filters below are ignored. Leave empty to search by the filters below.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "string",
            "description": "Job search terms, e.g. 'data engineer'. Used only when no Job URLs are pasted. Leave empty to browse all jobs in the location."
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "UK cities or regions, e.g. ['london', 'manchester']. One search per location. Leave empty for a UK-wide search.",
            "items": {
              "type": "string"
            }
          },
          "proximity": {
            "title": "Distance (miles)",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Search radius around the location, in miles. Allowed: 0, 1, 3, 5, 10, 15, 20, 30, 50 (other values are ignored). Default 10.",
            "default": 10
          },
          "salaryFrom": {
            "title": "Minimum salary (£)",
            "minimum": 0,
            "type": "integer",
            "description": "Only jobs with a salary at or above this amount (per annum)."
          },
          "salaryTo": {
            "title": "Maximum salary (£)",
            "minimum": 0,
            "type": "integer",
            "description": "Only jobs with a salary at or below this amount (per annum)."
          },
          "postedDate": {
            "title": "Posted within",
            "enum": [
              "anytime",
              "today",
              "last3days",
              "last7days",
              "last14days"
            ],
            "type": "string",
            "description": "Only jobs posted within this window.",
            "default": "anytime"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Result ordering. 'relevance' is Reed's default; 'date' shows newest first.",
            "default": "relevance"
          },
          "fullTime": {
            "title": "Full-time only",
            "type": "boolean",
            "description": "Restrict to full-time roles.",
            "default": false
          },
          "partTime": {
            "title": "Part-time only",
            "type": "boolean",
            "description": "Restrict to part-time roles.",
            "default": false
          },
          "permanent": {
            "title": "Permanent only",
            "type": "boolean",
            "description": "Restrict to permanent roles.",
            "default": false
          },
          "temporary": {
            "title": "Temporary only",
            "type": "boolean",
            "description": "Restrict to temporary roles.",
            "default": false
          },
          "contract": {
            "title": "Contract only",
            "type": "boolean",
            "description": "Restrict to contract roles.",
            "default": false
          },
          "agency": {
            "title": "Posted by agency",
            "type": "boolean",
            "description": "Only jobs posted by recruitment agencies.",
            "default": false
          },
          "direct": {
            "title": "Posted by employer",
            "type": "boolean",
            "description": "Only jobs posted directly by the employer.",
            "default": false
          },
          "graduate": {
            "title": "Graduate roles",
            "type": "boolean",
            "description": "Only graduate-level roles.",
            "default": false
          },
          "easyApply": {
            "title": "Easy apply",
            "type": "boolean",
            "description": "Only jobs that support one-click apply.",
            "default": false
          },
          "visaSponsorship": {
            "title": "Visa sponsorship",
            "type": "boolean",
            "description": "Only jobs offering visa sponsorship.",
            "default": false
          },
          "earlyBird": {
            "title": "Early bird",
            "type": "boolean",
            "description": "Only newly posted 'early bird' jobs.",
            "default": false
          },
          "fetchDetails": {
            "title": "Fetch full job details",
            "type": "boolean",
            "description": "Jobs mode only. When enabled, each job is enriched from its detail page: full HTML description, region/county/postcode, full salary breakdown, sector + parent sector, company profile, contract type, breadcrumbs, and screening questions. Adds one fetch per job.",
            "default": true
          },
          "companies": {
            "title": "Companies",
            "type": "array",
            "description": "Reed company-profile URLs (e.g. https://www.reed.co.uk/company-profile/Marshall-Wolfe-63256) or bare slugs (e.g. Marshall-Wolfe-63256). Slugs are case-sensitive.",
            "items": {
              "type": "string"
            }
          },
          "courseQueries": {
            "title": "Course search keywords",
            "type": "array",
            "description": "Keywords to search Reed Courses, e.g. ['python', 'project management']. One search per keyword; Max results caps the number of courses.",
            "items": {
              "type": "string"
            }
          },
          "courseUrls": {
            "title": "Course URLs or IDs",
            "type": "array",
            "description": "Reed course URLs (e.g. https://www.reed.co.uk/courses/python-course/271655) or bare course IDs (e.g. 271655). Combined with any search keywords above.",
            "items": {
              "type": "string"
            }
          },
          "fetchReviews": {
            "title": "Fetch course reviews",
            "type": "boolean",
            "description": "Courses mode only. When enabled, each course's reviews are returned as separate review records (rating breakdown, text, reviewer, provider response).",
            "default": true
          },
          "maxReviewsPerCourse": {
            "title": "Max reviews per course",
            "minimum": 0,
            "type": "integer",
            "description": "Cap on reviews fetched per course. 0 = all reviews.",
            "default": 0
          },
          "reviewsSort": {
            "title": "Reviews sort order",
            "enum": [
              "MostRecent",
              "RatingDesc",
              "RatingAsc"
            ],
            "type": "string",
            "description": "Order in which course reviews are fetched.",
            "default": "MostRecent"
          },
          "maxListings": {
            "title": "Max results",
            "minimum": 0,
            "type": "integer",
            "description": "The single result cap, applied in every mode: max jobs, companies, or courses (course reviews are additional and not counted here). The run stops once this many are collected. Set 0 for unlimited (the run then walks the whole catalogue).",
            "default": 20
          },
          "maxPages": {
            "title": "Max pages per search",
            "minimum": 0,
            "type": "integer",
            "description": "Optional safety limit on result pages walked per search (Jobs and Courses). Leave at 0 to walk the whole catalogue: the run stops at Max results, the site's own last page, or a repeat-page guard, not an artificial page cap.",
            "default": 0
          },
          "resumeFromRunId": {
            "title": "Resume from a previous run (delta)",
            "type": "string",
            "description": "Optional. ID of a previous run of this actor (or a dataset ID). Jobs already in that dataset are skipped, so this run returns only NEW jobs (a delta). Combine both runs' datasets for the full set. Max results then counts only the new jobs."
          },
          "maxResidentialRequests": {
            "title": "Residential request budget",
            "minimum": 0,
            "type": "integer",
            "description": "Optional cap on how many residential proxy exits the run may use (cost control). 0 = unlimited. Datacenter is used first regardless.",
            "default": 0
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy servers used by the scraper. Default is Apify datacenter (free-tier friendly).",
            "default": {
              "useApifyProxy": true
            }
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max items to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on items written to each connector per run. Does not affect the dataset.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}