{
  "openapi": "3.0.1",
  "info": {
    "title": "ATS Jobs Scraper",
    "description": "Scrape jobs from any company careers page. It recognises Greenhouse, Lever, Ashby, Workday, Oracle HCM, SuccessFactors, Taleo, Mercury xRM and SmartRecruiters from the URL. Get title, location, department, dates and the full advert. Export to CSV, JSON or Excel.",
    "version": "1.0",
    "x-build-id": "TSXlljE2PEr3veG1f"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/boncross~ats-jobs/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-boncross-ats-jobs",
        "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/boncross~ats-jobs/runs": {
      "post": {
        "operationId": "runs-sync-boncross-ats-jobs",
        "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/boncross~ats-jobs/run-sync": {
      "post": {
        "operationId": "run-sync-boncross-ats-jobs",
        "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": {
          "careersUrls": {
            "title": "Careers page URLs",
            "type": "array",
            "description": "One or more company careers pages. Paste the page you would send a candidate to, for example https://job-boards.greenhouse.io/stripe or https://jobs.lever.co/palantir. A page that is not a supported careers board is reported as an error row; after 25 of those in one run, further unrecognised pages are reported without being opened.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "The same thing, but able to bulk-load careers pages from a file or a Google Sheet.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItemsPerBoard": {
            "title": "Max jobs per careers page",
            "minimum": 0,
            "type": "integer",
            "description": "Row limit for each careers page. 0 means no limit.",
            "default": 0
          },
          "maxItems": {
            "title": "Max jobs for the whole run",
            "minimum": 0,
            "type": "integer",
            "description": "Row ceiling across every careers page in the run. 0 means no limit.",
            "default": 0
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Search term. Workday, Oracle HCM, Taleo and SuccessFactors boards search on the platform itself, and Greenhouse boards match it the way their own search does (title and advert text); on the other boards it keeps jobs whose title contains it.",
            "default": ""
          },
          "titleIncludes": {
            "title": "Title must contain",
            "type": "array",
            "description": "Keep a job only if its title contains at least one of these words. Case-insensitive.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "titleExcludes": {
            "title": "Title must not contain",
            "type": "array",
            "description": "Drop a job if its title contains any of these words. Case-insensitive.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "locationIncludes": {
            "title": "Location must contain",
            "type": "array",
            "description": "Keep a job only if its location contains one of these words, for example \"London\". Jobs whose platform publishes no location are dropped by this filter.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "onlyRemote": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Keep only jobs the employer marked as remote. Jobs where the platform says nothing about remote working are dropped, not assumed.",
            "default": false
          },
          "workplaceTypes": {
            "title": "Work type",
            "type": "array",
            "description": "Keep only jobs with these working arrangements, as the employer states them (the workplaceType column). Leave empty for all. Jobs whose board does not say are kept unless you turn off the option below; a job with no stated arrangement whose location or title says remote counts as Remote. On Workday boards the arrangement is stated on the advert, so the job advert is fetched (and billed) before the job can be kept or dropped.",
            "items": {
              "type": "string",
              "enum": [
                "On-site",
                "Hybrid",
                "Remote"
              ],
              "enumTitles": [
                "On-site",
                "Hybrid",
                "Remote"
              ]
            },
            "default": []
          },
          "includeUnknownWorkplace": {
            "title": "Keep jobs with no stated work type",
            "type": "boolean",
            "description": "Only used with Work type. On (the default): jobs whose board says nothing about the arrangement are kept, because many employers never state it. Off: only jobs that state one of the chosen arrangements are kept.",
            "default": true
          },
          "maxDaysOld": {
            "title": "Posted within (days)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only jobs posted in the last N days. 0 keeps everything.",
            "default": 0
          },
          "fetchDetails": {
            "title": "Fetch full job adverts",
            "type": "boolean",
            "description": "Greenhouse, Lever and Ashby return the advert with the listing. For the other six platforms this opens each job to get it. Turn off for a faster listing-only scan.",
            "default": true
          },
          "includeDescription": {
            "title": "Include advert text",
            "type": "boolean",
            "description": "Include the job advert as plain text.",
            "default": true
          },
          "includeDescriptionHtml": {
            "title": "Include advert HTML",
            "type": "boolean",
            "description": "Also include the advert's original HTML. Makes rows considerably larger.",
            "default": false
          },
          "oracleLocationId": {
            "title": "Oracle HCM location id",
            "type": "string",
            "description": "Optional. Restricts an Oracle HCM board to one place using Oracle's own global geography id. London is 300000007171591. Leave empty for the whole board.",
            "default": ""
          },
          "onlyNew": {
            "title": "Only jobs not seen before",
            "type": "boolean",
            "description": "Skip jobs returned by an earlier run that used the same store name below.",
            "default": false
          },
          "dedupStoreName": {
            "title": "Store name for seen jobs",
            "type": "string",
            "description": "Named key-value store that remembers job ids between runs. Leave empty to remember nothing.",
            "default": ""
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 32,
            "type": "integer",
            "description": "How many requests run at once across the whole run. The default is the fastest level measured clean; lower it only if a run reports refusals or errors.",
            "default": 8
          },
          "delayMs": {
            "title": "Delay between requests (ms)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional pause before each call, in milliseconds. 0 (the default) runs as fast as the parallel limit allows.",
            "default": 0
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}