{
  "openapi": "3.0.1",
  "info": {
    "title": "Hays Jobs Scraper: 8 Countries, Salary, Descriptions",
    "description": "Scrape Hays jobs from 8 country sites (UK, US, CA, IE, NL, ES, PT, AE). Returns title, location, salary parsed from the advert text, full description, work arrangement, employment type and industry. Search by keyword, URL or job link. Filter by job type, working pattern, industry.",
    "version": "1.2",
    "x-build-id": "cNy1SNrej0y29KNZ4"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/santamaria-automations~hays-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-santamaria-automations-hays-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/santamaria-automations~hays-scraper/runs": {
      "post": {
        "operationId": "runs-sync-santamaria-automations-hays-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/santamaria-automations~hays-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-santamaria-automations-hays-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": "Job title or skill keywords, for example 'accountant' or 'site manager'. Each keyword runs as its own search on the chosen country site and rows are tagged with search_query. Leave everything empty to browse the newest jobs.",
            "items": {
              "type": "string"
            }
          },
          "searchUrls": {
            "title": "Search URLs",
            "type": "array",
            "description": "Hays search URLs from a supported site (uk, us, ca, ie, nl, es, pt, ae). The keyword (q=) and location are read from the URL and the country is taken from the domain.",
            "items": {
              "type": "string"
            }
          },
          "directUrls": {
            "title": "Direct job URLs",
            "type": "array",
            "description": "Hays job-detail URLs for still-alive checks or specific vacancies. Each row gets job_status online or offline. Offline rows (vacancy removed) carry the id from the URL and are not billed.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Country",
            "enum": [
              "uk",
              "us",
              "ca",
              "ie",
              "nl",
              "es",
              "pt",
              "ae"
            ],
            "type": "string",
            "description": "Hays country site used for keyword searches. Only sites that run the Hays job portal are listed. Ignored for search URLs and direct URLs.",
            "default": "uk"
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City or region to search in, for example 'Manchester'. Leave empty to search the whole country. Applies to keyword searches and search URLs."
          },
          "jobType": {
            "title": "Job type",
            "enum": [
              "any",
              "permanent",
              "contract",
              "temporary"
            ],
            "type": "string",
            "description": "Only return permanent, contract or temporary roles. Applied by the Hays search itself, so it also lowers the page count and cost. 'any' returns all types.",
            "default": "any"
          },
          "workingPattern": {
            "title": "Working pattern",
            "enum": [
              "any",
              "flexible",
              "fullTime",
              "partTime"
            ],
            "type": "string",
            "description": "Filter by working pattern. 'flexible' keeps jobs Hays marks as flexible working, 'fullTime' and 'partTime' keep jobs of that pattern. Applied by the Hays search itself. 'any' applies no filter.",
            "default": "any"
          },
          "industry": {
            "title": "Industry",
            "type": "string",
            "description": "Client industry exactly as the Hays site labels it, for example 'Accountancy Firms', 'Government & Public Services', 'Banking & Financial Services' or 'Manufacturing & Production'. Labels differ per country site. A label the site does not know returns no results. Leave empty for all industries."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "newest",
              "relevance",
              "title"
            ],
            "type": "string",
            "description": "Result order. 'newest' sorts by publish date, newest first (best for scheduled runs). 'relevance' uses the Hays relevance ranking. 'title' sorts alphabetically.",
            "default": "newest"
          },
          "postedWithinDays": {
            "title": "Posted within days",
            "minimum": 0,
            "type": "number",
            "description": "Only return jobs published in the last N days (cutoff at midnight UTC of that day). Leave empty for no date limit. Works best with sort 'newest', which stops early once jobs are older than the cutoff."
          },
          "maxResults": {
            "title": "Max total results",
            "minimum": 0,
            "type": "integer",
            "description": "Total cap across all keywords, search URLs and direct URLs. Set 0 for no cap. Start small when testing.",
            "default": 10
          },
          "maxResultsPerQuery": {
            "title": "Max results per keyword or URL",
            "minimum": 0,
            "type": "integer",
            "description": "Cap per keyword or per search URL, so one broad keyword cannot use up the whole budget. Set 0 for no per-query cap.",
            "default": 50
          },
          "scrapeDetails": {
            "title": "Include full description",
            "type": "boolean",
            "description": "Return the full job description in four forms (description_full, description_snippet, description_html, description_md). Every job costs $0.003; jobs with a description cost an extra $0.005.",
            "default": true
          },
          "strictKeywordMatch": {
            "title": "Strict keyword match",
            "type": "boolean",
            "description": "Hays search also returns loosely related jobs that only mention your words in the description. When on, a job is kept only if every keyword word appears in its title (word stems, so 'accountant' matches 'accounting'). For single-word keywords the job category is also checked. Description-only matches are dropped and not billed. Turn off to keep everything Hays returns.",
            "default": true
          },
          "maxPages": {
            "title": "Max pages per keyword",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Safety limit on result pages per keyword or URL (10 jobs per page).",
            "default": 50
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Number of keywords or URLs processed in parallel, each with its own session. Higher is faster and safe up to about 5.",
            "default": 3
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}