{
  "openapi": "3.0.1",
  "info": {
    "title": "Greenhouse, Lever, Ashby & Workable Jobs Scraper & Monitor",
    "description": "Job board scraper for Greenhouse, Lever, Ashby, Workable, Personio and Teamtailor: one schema from a company name, filters, posted salaries, and monitoring of new, updated and removed jobs. Public job feeds, no login. Not affiliated with Greenhouse, Lever, Ashby, Workable, Personio or Teamtailor.",
    "version": "1.1",
    "x-build-id": "EoVZ07FlJTC9S9DSc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/mmdincer~ats-jobs-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-mmdincer-ats-jobs-monitor",
        "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/mmdincer~ats-jobs-monitor/runs": {
      "post": {
        "operationId": "runs-sync-mmdincer-ats-jobs-monitor",
        "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/mmdincer~ats-jobs-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-mmdincer-ats-jobs-monitor",
        "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": [
          "companies"
        ],
        "properties": {
          "companies": {
            "title": "Companies",
            "minItems": 1,
            "maxItems": 300,
            "type": "array",
            "description": "Companies to read, one per line. Use the company name (<code>airbnb</code>), a job board URL (<code>https://boards.greenhouse.io/airbnb</code>, <code>https://jobs.lever.co/palantir</code>, <code>https://jobs.ashbyhq.com/ashby</code>, <code>https://apply.workable.com/huggingface</code>, <code>https://helpling.jobs.personio.de</code>, <code>https://dustin.teamtailor.com</code>) or a company domain (<code>airbnb.com</code>). The Actor looks for the company's public board on all six systems and reads the one with the most open jobs. If the board name differs from the company name, use the name from the board URL, or add the system in front: <code>lever:palantir</code>, <code>workable:huggingface</code>, <code>personio:helpling</code>, <code>teamtailor:dustin</code>. Up to 300 companies per run.",
            "items": {
              "type": "string"
            }
          },
          "ats": {
            "title": "Job board system",
            "enum": [
              "auto",
              "greenhouse",
              "lever",
              "ashby",
              "workable",
              "personio",
              "teamtailor"
            ],
            "type": "string",
            "description": "<b>Auto</b> looks for each company on Greenhouse, Lever, Ashby, Workable, Personio and Teamtailor and reads the board with the most open jobs; the company row tells you when the same name also exists on another system. Choose one system to skip the search and avoid mix-ups when two different companies share a name. A prefix such as <code>lever:palantir</code> in the Companies list overrides this setting.",
            "default": "auto"
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "jobs",
              "changes"
            ],
            "type": "string",
            "description": "<b>Jobs</b> returns every current job that matches your filters. <b>Changes</b> compares each company with the previous run and returns only new, updated and removed jobs (the first run saves a baseline and returns no job rows).",
            "default": "jobs"
          },
          "maxJobsPerCompany": {
            "title": "Max jobs per company",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Stops reading a company after this many jobs (newest first, after your filters). Keep it small for a quick test; the default covers almost every board. In Changes mode a cut-off board cannot report removed jobs.",
            "default": 1000
          },
          "titleKeywords": {
            "title": "Job title contains (any of)",
            "type": "array",
            "description": "Keep only jobs whose title contains at least one of these words or phrases, for example <code>engineer</code> or <code>product manager</code>. Not case sensitive. Leave empty for all jobs.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Job title does not contain",
            "type": "array",
            "description": "Drop jobs whose title contains any of these words, for example <code>intern</code> or <code>director</code>. Not case sensitive.",
            "items": {
              "type": "string"
            }
          },
          "departmentKeywords": {
            "title": "Department or team contains (any of)",
            "type": "array",
            "description": "Keep only jobs whose department or team contains one of these words, for example <code>engineering</code> or <code>sales</code>.",
            "items": {
              "type": "string"
            }
          },
          "locationKeywords": {
            "title": "Location contains (any of)",
            "type": "array",
            "description": "Keep only jobs with at least one location that contains one of these words, for example <code>london</code>, <code>germany</code> or <code>remote</code>. Jobs with several locations match on any of them.",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Keep only jobs the board marks as remote (workplace type remote, or a location that says remote).",
            "default": false
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Jobs mode only: keep only jobs first published in the last N days. 0 means no limit. Jobs without a publish date are dropped when this is set. Ignored in Changes mode.",
            "default": 0
          },
          "includeDescription": {
            "title": "Include job description",
            "type": "boolean",
            "description": "Add the full job description as plain text to every job row. Rows get much larger; leave it off if you only need the job list.",
            "default": false
          },
          "changeTypes": {
            "title": "Change types to report",
            "type": "array",
            "description": "Which changes become rows (Changes mode only). Leave all selected to get everything. Changes you leave out are not reported and are not charged, and they are not reported later either.",
            "items": {
              "type": "string",
              "enum": [
                "NEW_JOB",
                "UPDATED_JOB",
                "REMOVED_JOB"
              ],
              "enumTitles": [
                "New job",
                "Updated job (title, location, department or salary)",
                "Removed job (closed or filled)"
              ]
            },
            "default": [
              "NEW_JOB",
              "UPDATED_JOB",
              "REMOVED_JOB"
            ]
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Changes mode only: the name under which the baseline is saved (letters, digits, - and _). Use different names to watch the same company with different filters or for different people. Keep the same name between runs.",
            "default": "default"
          },
          "requestsPerSecond": {
            "title": "Requests per second",
            "minimum": 0.2,
            "maximum": 5,
            "type": "number",
            "description": "Maximum request rate per job board host. The default is polite and fast enough; lower it only if you see rate-limit warnings. Lever is always limited to one request per second, as its robots.txt asks.",
            "default": 2
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. The public job board APIs work from the Apify platform without a proxy. Turn on Apify Proxy only if a request is refused. Proxy traffic is billed by Apify separately.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}