{
  "openapi": "3.0.1",
  "info": {
    "title": "Greenhouse, Lever & Ashby Jobs Scraper + Salary",
    "description": "Live open jobs from Greenhouse, Lever, Ashby, Workable, Recruitee and Teamtailor boards, with salary as min, max, currency and period. Filter by minimum salary or jobs posted in the last 24 hours. Paste URLs, domains or names. $2 per 1,000 jobs; unsupported companies free.",
    "version": "1.0",
    "x-build-id": "fPUNgire82chCXaSI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/meridianlabs~greenhouse-lever-ashby-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-meridianlabs-greenhouse-lever-ashby-jobs-scraper",
        "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/meridianlabs~greenhouse-lever-ashby-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-meridianlabs-greenhouse-lever-ashby-jobs-scraper",
        "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/meridianlabs~greenhouse-lever-ashby-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-meridianlabs-greenhouse-lever-ashby-jobs-scraper",
        "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: a job-board URL (https://jobs.lever.co/company), a careers page URL, a domain (company.com) or a company name. The hiring system is detected automatically. Every company gets a free status row saying what was found; companies on unsupported systems (Workday, iCIMS, ...) are reported, never charged.",
            "items": {
              "type": "string"
            }
          },
          "systems": {
            "title": "Only these hiring systems (optional)",
            "type": "array",
            "description": "Leave empty for all six. Companies on other systems get a free 'not_supported' status row.",
            "items": {
              "type": "string",
              "enum": [
                "greenhouse",
                "lever",
                "ashby",
                "workable",
                "recruitee",
                "teamtailor"
              ],
              "enumTitles": [
                "Greenhouse",
                "Lever",
                "Ashby",
                "Workable",
                "Recruitee",
                "Teamtailor"
              ]
            }
          },
          "titleKeywords": {
            "title": "Job title contains (any of)",
            "type": "array",
            "description": "Keep only jobs whose title contains one of these words or phrases (whole words, case-insensitive), e.g. engineer, product manager. Filters apply after the board is fetched; only saved jobs are charged.",
            "items": {
              "type": "string"
            }
          },
          "excludeTitleKeywords": {
            "title": "Job title does not contain",
            "type": "array",
            "description": "Drop jobs whose title contains any of these, e.g. intern, senior.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations (any of)",
            "type": "array",
            "description": "Keep jobs whose location, city or region contains one of these, or whose country code matches a 2-letter code, e.g. US, Germany, London, Remote.",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Fully remote jobs only",
            "type": "boolean",
            "description": "Keep only jobs the hiring system marks (or the location states) as fully remote. Hybrid jobs are not remote.",
            "default": false
          },
          "postedWithinDays": {
            "title": "Posted within the last N days",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Keep only jobs first published in the last N days. Jobs without a publish date are dropped when this is set, unless you switch on 'Keep jobs without a posted date'."
          },
          "onlyWithSalary": {
            "title": "Only jobs that show a salary",
            "type": "boolean",
            "description": "Keep only jobs with a salary (from the hiring system's pay field or the ad text).",
            "default": false
          },
          "postedWithinHours": {
            "title": "Posted within the last N hours",
            "minimum": 1,
            "maximum": 87600,
            "type": "integer",
            "description": "Keep only jobs published in the last N hours, e.g. 24 for the last day, 168 for the last week. Uses each hiring system's publish date (the posted_at field): Greenhouse first_published (its updated_at when that is missing), Lever createdAt (Lever publishes no separate publish date), Ashby publishedAt, Workable published_on (a date without a time, so a job dated the day the window starts counts as inside it), Recruitee published_at, Teamtailor pubDate. If you also set days, both must pass. Jobs without a date are dropped unless you switch on 'Keep jobs without a posted date'. Dropped jobs are not charged."
          },
          "keepJobsWithoutPostedDate": {
            "title": "Keep jobs without a posted date",
            "type": "boolean",
            "description": "Only used with a 'posted within' filter. Off: jobs whose hiring system gives no publish date are dropped (they can't be shown to be recent). On: they are kept.",
            "default": false
          },
          "minSalary": {
            "title": "Minimum salary",
            "minimum": 1,
            "type": "integer",
            "description": "Drop jobs that pay less than this, in the currency and pay period chosen below, e.g. 120000 USD per year. Each job's normalised salary is converted: other currencies at the European Central Bank's daily reference rates (fetched once per run), other pay periods on a full-time basis (1 year = 12 months = 52 weeks = 260 days = 2,080 hours). Jobs with no salary listed are kept unless you switch on the option below. Dropped jobs are not charged."
          },
          "minSalaryCurrency": {
            "title": "Minimum salary currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "CAD",
              "AUD",
              "NZD",
              "CHF",
              "SEK",
              "NOK",
              "DKK",
              "PLN",
              "CZK",
              "HUF",
              "RON",
              "SGD",
              "INR",
              "JPY",
              "BRL",
              "MXN",
              "ZAR",
              "ILS",
              "AED",
              "HKD",
              "ISK",
              "BGN"
            ],
            "type": "string",
            "description": "Only used with a minimum salary. Jobs paid in other currencies are converted to this one before comparing.",
            "default": "USD"
          },
          "minSalaryPeriod": {
            "title": "Minimum salary is per",
            "enum": [
              "year",
              "month",
              "week",
              "day",
              "hour"
            ],
            "type": "string",
            "description": "Only used with a minimum salary. Hourly, daily, weekly and monthly pay is converted on a full-time basis (2,080 hours, 260 days, 52 weeks, 12 months a year).",
            "default": "year"
          },
          "minSalaryAppliesTo": {
            "title": "Compare the minimum with",
            "enum": [
              "top",
              "bottom"
            ],
            "type": "string",
            "description": "Only used with a minimum salary. Example with a minimum of 120,000: a job paying 100,000 to 140,000 is kept with 'Top' and dropped with 'Bottom'. The headline range is used (the salary min and max fields).",
            "default": "top"
          },
          "minSalaryExcludeUnknown": {
            "title": "Also drop jobs without a comparable salary",
            "type": "boolean",
            "description": "Only used with a minimum salary. Off (default): jobs with no salary listed, or whose pay can't be compared (no currency or pay period, or a salary flagged 'suspect' as a likely typo), are kept, so you don't miss roles that don't publish pay. On: they are dropped and not charged.",
            "default": false
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "all",
              "newSinceLastRun"
            ],
            "type": "string",
            "description": "Monitor mode remembers which jobs it delivered (stable IDs in a named key-value store in your account) and saves, and charges, only jobs that are new or changed since the last run, plus free 'closed' notices for jobs that disappeared. The first monitor run sees every job as new. Schedule it daily for a hiring-signal feed.",
            "default": "all"
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Only used in monitor mode. Runs with the same name share one memory of delivered jobs; use a different name for each separate watch list (letters, digits, hyphens).",
            "default": "default"
          },
          "includeDescription": {
            "title": "Job description",
            "enum": [
              "text",
              "html",
              "none"
            ],
            "type": "string",
            "description": "Personal email addresses and phone numbers are removed from descriptions either way. 'None' gives structured fields only (title, location, salary...). Same price.",
            "default": "text"
          },
          "maxJobsPerCompany": {
            "title": "Max jobs per company",
            "minimum": 1,
            "type": "integer",
            "description": "Save at most this many jobs per company (after filters). Leave empty for all. A simple way to cap cost."
          },
          "includeCompanyRows": {
            "title": "Put company status rows in the dataset",
            "type": "boolean",
            "description": "On: one free row per company (record_type 'company') alongside the job rows. Off: the dataset holds job rows only; the status rows are still saved in the run's key-value store as COMPANIES.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Companies in parallel",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many companies to work on at once. Requests to the same hiring system are always spaced out politely (robots.txt and crawl delays are obeyed), so more parallelism mostly helps mixed lists.",
            "default": 5
          },
          "failOnErrors": {
            "title": "Fail the run if any company fails",
            "type": "boolean",
            "description": "Useful for schedules: the run is marked failed (so Apify can alert you) if a board could not be fetched, or a board URL you gave no longer exists. Failed companies are never charged.",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}