{
  "openapi": "3.0.1",
  "info": {
    "title": "Greenhouse, Lever, Ashby, Recruitee & Teamtailor Jobs API",
    "description": "ATS jobs API and job monitor for Greenhouse, Lever, Ashby, Recruitee and Teamtailor. Paste company names, domains or board URLs and get every open job with published pay ranges in one schema, or schedule it for new job alerts: only new, updated and closed jobs since the last run.",
    "version": "0.2",
    "x-build-id": "OS2tIxz62hUrXW4XM"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/quarrywise~greenhouse-lever-ashby-jobs-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-quarrywise-greenhouse-lever-ashby-jobs-api",
        "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/quarrywise~greenhouse-lever-ashby-jobs-api/runs": {
      "post": {
        "operationId": "runs-sync-quarrywise-greenhouse-lever-ashby-jobs-api",
        "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/quarrywise~greenhouse-lever-ashby-jobs-api/run-sync": {
      "post": {
        "operationId": "run-sync-quarrywise-greenhouse-lever-ashby-jobs-api",
        "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": 1000,
            "type": "array",
            "description": "One company per line: a name (Stripe), a domain (stripe.com) or a job board URL (https://jobs.lever.co/palantir, https://job-boards.greenhouse.io/stripe, https://jobs.ashbyhq.com/openai, https://channable.recruitee.com, https://{name}.teamtailor.com). Board URLs match exactly; names and domains are matched by guessing the board name, so check the COMPANIES record for the board each one matched. Inputs that lead to the same board are read and charged once. Up to 1,000 companies per run.",
            "items": {
              "type": "string"
            }
          },
          "ats": {
            "title": "Job board system (ATS)",
            "enum": [
              "auto",
              "greenhouse",
              "lever",
              "ashby",
              "recruitee",
              "teamtailor"
            ],
            "type": "string",
            "description": "Auto tries Greenhouse, Lever and Ashby first, then Recruitee and Teamtailor for every name or domain. Pick one system to try only that one (fewer requests, fewer wrong matches).",
            "default": "auto"
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "snapshot",
              "changes"
            ],
            "type": "string",
            "description": "Snapshot returns every open job that matches your filters. Changes returns only jobs that are new, updated or closed since the previous run with the same watchlist ID; schedule it daily or weekly as a job monitor.",
            "default": "snapshot"
          },
          "watchlistId": {
            "title": "Watchlist ID",
            "pattern": "^[A-Za-z0-9._-]{1,64}$",
            "type": "string",
            "description": "Required in changes mode. A name for this watchlist (letters, digits, '.', '_' or '-'), for example target-accounts. Runs with the same ID are compared with each other; use a different ID for each separate list."
          },
          "includeBaseline": {
            "title": "Save the first run's jobs",
            "type": "boolean",
            "description": "Changes mode only. Off: the first run of a new watchlist, and the first run after you add a company, only record the current jobs as a baseline and save no job rows for them (companies are still checked). On: those jobs are also saved as new. Changing the filters, ATS, job cap or description setting always records a new baseline silently.",
            "default": false
          },
          "titleKeywords": {
            "title": "Title keywords",
            "type": "array",
            "description": "Keep jobs whose title contains any of these words (not case-sensitive), for example engineer, sales, data. Start a word with - to exclude it, for example -intern. Empty keeps all titles.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Keep jobs whose location contains any of these values, for example London, Germany, New York. The word remote also matches remote jobs. Empty keeps all locations.",
            "items": {
              "type": "string"
            }
          },
          "departments": {
            "title": "Departments or teams",
            "type": "array",
            "description": "Keep jobs whose department or team contains any of these values, for example Engineering, Sales. Empty keeps all departments.",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Keep only jobs the board marks as remote (or whose location says remote).",
            "default": false
          },
          "includeDescription": {
            "title": "Include a description excerpt",
            "type": "boolean",
            "description": "Adds a short plain-text excerpt of each job description. Email addresses and phone numbers in common formats, links and social handles are removed; names after recruiter, contact or reporting phrases are removed on a best-effort basis. Off by default. On Greenhouse this also reads office locations, so turning it on or off re-baselines a changes-mode watchlist.",
            "default": false
          },
          "descriptionMaxChars": {
            "title": "Excerpt length (characters)",
            "minimum": 50,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum length of the description excerpt.",
            "default": 300
          },
          "maxJobsPerCompany": {
            "title": "Maximum jobs per company",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Saves at most this many matching jobs per company. In changes mode, closed jobs are only reported for companies whose matching jobs all fit under this limit.",
            "default": 500
          },
          "maxDetectionAttempts": {
            "title": "Maximum detection attempts per company",
            "minimum": 1,
            "maximum": 24,
            "type": "integer",
            "description": "For names and domains: how many boards may be tried per company across the job board systems. The default 12 covers the joined name and the name without words such as Technologies or AI on Greenhouse, Lever and Ashby, then on Recruitee and Teamtailor. 6 keeps detection to the first three systems for a two-word name. Boards that did not exist are remembered for 7 days and not asked again.",
            "default": 12
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}