{
  "openapi": "3.0.1",
  "info": {
    "title": "Lever & Greenhouse Jobs Lookup & New-Job Alerts",
    "description": "Get open jobs from any company's Lever or Greenhouse job board: give names, careers URLs or board links and the Actor finds the board. Filter by date, location, remote, department, keyword and salary. New-job alerts. Official public Lever and Greenhouse APIs, clean JSON.",
    "version": "0.2",
    "x-build-id": "XDcdrvcKQueV4vUVd"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/stego-bot~ats-jobs/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-stego-bot-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/stego-bot~ats-jobs/runs": {
      "post": {
        "operationId": "runs-sync-stego-bot-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/stego-bot~ats-jobs/run-sync": {
      "post": {
        "operationId": "run-sync-stego-bot-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",
        "required": [
          "companies"
        ],
        "properties": {
          "companies": {
            "title": "Companies",
            "type": "array",
            "description": "One per line, up to 500. Each entry can be a company name (e.g. 'Spotify'), a careers page or a Lever / Greenhouse board URL (e.g. https://jobs.lever.co/spotify, https://jobs.eu.lever.co/<site>, https://job-boards.greenhouse.io/<token>, a company careers page that links to its board), or a token ('lever:spotify', 'lever-eu:<site>', 'greenhouse:<token>'). Names and careers URLs are matched against Lever and Greenhouse boards; board URLs and tokens are the most reliable. Greenhouse boards are read only through Greenhouse's public Job Board API. Ashby, Workday and other ATS links get status 'unsupportedAts'.",
            "items": {
              "type": "string"
            }
          },
          "allowUncertainMatches": {
            "title": "Allow uncertain name matches",
            "type": "boolean",
            "description": "Off by default: when a company name or domain is guessed and the board's own name doesn't match what you typed (e.g. 'Apex' → a board named 'Apex Eye'), that board is skipped (status 'uncertainMatch', nothing charged) and suggested in OUTPUT. Turn on to include such boards; every job carries matchConfidence and boardName either way.",
            "default": false
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Whole-word, case-insensitive match: 'AI' matches 'AI Engineer' but not 'Maintain'. Phrases are matched as phrases. Add '*' at the end for a prefix match ('engineer*' also matches 'engineering'); '*' anywhere else is rejected. Leave empty for all jobs. An entry must contain a letter or digit ('*' alone is rejected).",
            "items": {
              "type": "string"
            }
          },
          "keywordMode": {
            "title": "Keyword matching",
            "enum": [
              "any",
              "all"
            ],
            "type": "string",
            "description": "Jobs containing ANY keyword, or ALL of them.",
            "default": "any"
          },
          "searchIn": {
            "title": "Search keywords in",
            "enum": [
              "title",
              "titleAndDescription"
            ],
            "type": "string",
            "description": "Title-only is the most precise. 'Title and full description' also finds jobs that mention a skill in the body.",
            "default": "title"
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop jobs whose title or description contains any of these (whole-word), e.g. 'Senior', 'Intern'.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Keep jobs whose location (or any of their locations/offices) contains one of these as a whole word or phrase, e.g. 'London', 'New York', 'Germany', 'Remote'. Location text is free-form, exactly as each company writes it.",
            "items": {
              "type": "string"
            }
          },
          "excludeLocations": {
            "title": "Exclude locations",
            "type": "array",
            "description": "Drop jobs whose location contains any of these (whole-word).",
            "items": {
              "type": "string"
            }
          },
          "remote": {
            "title": "Remote",
            "enum": [
              "any",
              "only",
              "exclude"
            ],
            "type": "string",
            "description": "Lever publishes a workplace type (remote / hybrid / on-site); Greenhouse doesn't. When a posting has none, a job counts as remote when its location, offices or title say 'Remote' (or 'anywhere', 'work from home').",
            "default": "any"
          },
          "departments": {
            "title": "Departments / teams",
            "type": "array",
            "description": "Keep jobs whose department (Greenhouse department, or Lever department or team) contains one of these as a whole word, e.g. 'Engineering', 'Sales'.",
            "items": {
              "type": "string"
            }
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Only jobs first published in the last N days (Lever 'createdAt', Greenhouse 'first_published'). 0 = all open jobs.",
            "default": 0
          },
          "onlyWithSalary": {
            "title": "Only jobs with a published salary",
            "type": "boolean",
            "description": "Keep only jobs whose posting includes a pay range (many US postings do; most others don't).",
            "default": false
          },
          "minSalary": {
            "title": "Minimum salary (yearly)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep jobs whose published range reaches at least this yearly amount (hourly/monthly ranges are annualized: 2,080 h, 12 months). Needs a salary currency; jobs without a salary are dropped."
          },
          "salaryCurrency": {
            "title": "Salary currency",
            "type": "string",
            "description": "3-letter ISO 4217 code used with Minimum salary, e.g. USD, EUR, GBP."
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum jobs returned (and charged) per run across all companies. Each company's newest jobs come first.",
            "default": 100
          },
          "maxResultsPerCompany": {
            "title": "Max results per company",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Cap per company (0 = no cap), so one big employer doesn't use up Max results.",
            "default": 0
          },
          "includeDescription": {
            "title": "Include job description",
            "type": "boolean",
            "description": "Add the full job description. Off by default to keep results small and fast.",
            "default": false
          },
          "descriptionFormat": {
            "title": "Description format",
            "enum": [
              "text",
              "html"
            ],
            "type": "string",
            "description": "Plain text (default) or the original HTML.",
            "default": "text"
          },
          "descriptionMaxLength": {
            "title": "Description max length",
            "minimum": 0,
            "type": "integer",
            "description": "Truncate descriptions to this many characters (0 = no limit).",
            "default": 0
          },
          "includeContactDetails": {
            "title": "Keep emails and phone numbers in descriptions",
            "type": "boolean",
            "description": "Off by default: email addresses and phone numbers inside descriptions (often a recruiter's) are replaced with '[email removed]' / '[phone removed]'. Turn on only if you have a lawful basis to process that personal data.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new since last run (alerts)",
            "type": "boolean",
            "description": "Return only jobs not returned by a previous run with the same State key. Use with a schedule for new-job alerts.",
            "default": false
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "Name for this alert's memory, e.g. 'client-a-eng'. Recommended. Leave empty to derive one from the filters AND the company entries you typed (changing the company list then starts a new alert; a company that is briefly unreachable does not). The state store is shared by all runs and tasks in your account."
          },
          "baselineOnFirstRun": {
            "title": "Baseline on first run",
            "type": "boolean",
            "description": "On the first alert run (and for any company added later, or after you change filters) just remember today's matching jobs and return nothing, so you only pay for the run start. Turn off to receive (and pay for) the current jobs on the first run.",
            "default": true
          },
          "stateStoreName": {
            "title": "State store name",
            "type": "string",
            "description": "Named key-value store that keeps alert memory. Default 'ats-jobs-state'."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}