{
  "openapi": "3.0.1",
  "info": {
    "title": "Lever Jobs Scraper",
    "description": "Type company names or paste Lever job-board URLs (US and EU) and get every open job from those companies' Lever career pages: full descriptions, salary where published, one clean format. Filter by keyword, place, department, salary or date; get only new, changed or closed jobs since your last run.",
    "version": "1.1",
    "x-build-id": "wd55sf6tG7iyiJGXC"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/humble-echidna~lever-jobs/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-humble-echidna-lever-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/humble-echidna~lever-jobs/runs": {
      "post": {
        "operationId": "runs-sync-humble-echidna-lever-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/humble-echidna~lever-jobs/run-sync": {
      "post": {
        "operationId": "run-sync-humble-echidna-lever-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 company per line, in any of three forms: a company name (e.g. Outreach), its Lever job-board URL (e.g. https://jobs.lever.co/spotify, EU boards on jobs.eu.lever.co too, or the short form lever:spotify), or its careers page if that page links to its Lever board. Names are looked up on Lever only. The list starts with 2 examples; replace them with your own.",
            "default": [
              "Outreach",
              "https://jobs.lever.co/spotify"
            ],
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Title keywords",
            "type": "array",
            "description": "Keep only jobs whose title contains any of these words (case-insensitive). Leave empty for all jobs.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude title keywords",
            "type": "array",
            "description": "Drop jobs whose title contains any of these words, e.g. intern, senior.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Keep only jobs whose location or country contains any of these, e.g. London, Germany, US. Add \"remote\" to also keep remote jobs.",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Keep only jobs the ATS marks as remote.",
            "default": false
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 1,
            "type": "integer",
            "description": "Keep only jobs published in the last N days. Leave empty for all."
          },
          "departments": {
            "title": "Departments",
            "type": "array",
            "description": "Keep only jobs whose department or team contains any of these (case-insensitive), e.g. Engineering, Sales. Jobs whose board names no department or team for them are left out while this is set; the run log says how many per company. Leave empty for all departments.",
            "items": {
              "type": "string"
            }
          },
          "employmentTypes": {
            "title": "Employment types",
            "type": "array",
            "description": "Keep only jobs of these types. Jobs whose board states no type for them are left out while this is set; the run log says how many per company. Leave empty for all types.",
            "items": {
              "type": "string",
              "enum": [
                "FULL_TIME",
                "PART_TIME",
                "CONTRACT",
                "TEMPORARY",
                "INTERNSHIP",
                "VOLUNTEER"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship",
                "Volunteer"
              ]
            }
          },
          "minSalary": {
            "title": "Minimum salary",
            "minimum": 1,
            "type": "integer",
            "description": "Keep only jobs whose pay reaches this amount (the top of the job's range), in the currency and period below. Pay comes from the ATS's own salary field, or else from pay-transparency text in the description, which is then read even if \"Include full job description\" is off. Most jobs publish no pay: see \"Keep jobs with no comparable salary\". Leave empty for no salary filter."
          },
          "minSalaryCurrency": {
            "title": "Minimum salary: currency",
            "pattern": "^[A-Za-z]{3}$",
            "type": "string",
            "description": "Three-letter currency code of the minimum salary, e.g. USD, EUR, GBP, CAD. Amounts are never converted between currencies: a job paid in another currency counts as having no comparable salary.",
            "default": "USD"
          },
          "minSalaryPeriod": {
            "title": "Minimum salary: per",
            "enum": [
              "YEAR",
              "MONTH",
              "WEEK",
              "DAY",
              "HOUR"
            ],
            "type": "string",
            "description": "The period of `minSalary`: `YEAR` (default), `MONTH`, `WEEK`, `DAY` or `HOUR`. Pay stated per another period is compared as a full-time year of 2,080 hours, 260 days, 52 weeks or 12 months; a job whose pay has no period counts as having no comparable salary.",
            "default": "YEAR"
          },
          "keepJobsWithoutSalary": {
            "title": "Keep jobs with no comparable salary",
            "type": "boolean",
            "description": "Only with a minimum salary. On: jobs that publish no pay, or pay in another currency or with no period, are kept (their salary fields show what is known). Off: only jobs known to pay at least the minimum are returned.",
            "default": true
          },
          "onlyNewJobs": {
            "title": "Only jobs new since my last run",
            "type": "boolean",
            "description": "The first run returns all matching jobs; later runs return only jobs posted since. The actor remembers what it already returned in a storage in your own Apify account, separately for each company and each combination of filters, so different searches never hide each other's jobs. Changing the filters starts a fresh search. Use it with a schedule for job alerts or hiring-signal monitoring.",
            "default": false
          },
          "includeClosedAndChanged": {
            "title": "Also report closed and changed jobs",
            "type": "boolean",
            "description": "Turns this into a job-change feed: besides new jobs, each run also returns jobs returned before that have since closed (changeType `closed`, last known title, location and link) or changed title, location, department, employment type or salary (changeType `changed`, changedFields old -> new). Each such row is charged like a job. Implies `onlyNewJobs`. A board that fails, is blocked or suddenly shrinks isn't checked for closures that run.",
            "default": false
          },
          "includeDescription": {
            "title": "Include full job description",
            "type": "boolean",
            "description": "Adds the plain-text job description. Turn off for faster, smaller results.",
            "default": true
          },
          "maxJobs": {
            "title": "Max jobs per run",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many jobs in total, across all companies. Leave empty for no limit. The run also stops cleanly at the maximum cost per run you set in the run options, whichever comes first."
          },
          "maxJobsPerCompany": {
            "title": "Max jobs per company",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many matching jobs per company. Leave empty for no limit."
          },
          "maxConcurrency": {
            "title": "Companies fetched in parallel",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many companies are fetched at the same time, 1 to 20 (default 5). The default suits almost every run; lower it if a career site starts rate-limiting.",
            "default": 5
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}