{
  "openapi": "3.0.1",
  "info": {
    "title": "Greenhouse, Lever, Ashby & Workday Jobs Scraper with Salaries",
    "description": "Open jobs from Greenhouse, Lever, Ashby, Workday and 4 more ATS — by company domain, or search ~11,000 company boards by keyword. Posted salaries, filters, and a daily only-new feed.",
    "version": "0.0",
    "x-build-id": "7gENO2IX7PoLy9y3c"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapebench~ats-career-page-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapebench-ats-career-page-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/scrapebench~ats-career-page-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapebench-ats-career-page-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/scrapebench~ats-career-page-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapebench-ats-career-page-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",
        "properties": {
          "company": {
            "title": "Company",
            "type": "string",
            "description": "A company domain (acme.com), a careers URL, or an explicit board such as 'greenhouse:stripe', 'lever:gopuff' or 'workday:nvidia'. The Actor works out which applicant-tracking system the company uses (Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Recruitee, Breezy). Kept forever alongside 'companies' — saved tasks and API callers send it."
          },
          "companies": {
            "title": "Companies (batch)",
            "type": "array",
            "description": "Look up many companies in ONE run instead of starting a run per company. Takes the same values as 'Company'. Combined with 'Company' if you fill both, and duplicates are removed. Billing is unchanged: you are charged per job returned, not per company submitted.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "searchAllCompanies": {
            "title": "Search every company (no company list needed)",
            "type": "boolean",
            "description": "Ignore 'Companies' and search a directory of ~9,400 Greenhouse and Ashby boards (plus ~1,900 Lever boards if you add Lever below) with your filters — e.g. title 'data analyst' + location 'Canada'. Boards are read live at run time, in random order, and the run stops at 'Maximum jobs for the whole run'. Title words are matched on titles only in this mode.",
            "default": false
          },
          "atsPlatforms": {
            "title": "Platforms to search (Search every company)",
            "type": "array",
            "description": "Which directories to search: greenhouse, ashby, lever. Default greenhouse + ashby. Lever is opt-in because its boards publish no light list, so searching all of them is much slower.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxTotalResults": {
            "title": "Maximum jobs for the whole run (Search every company)",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Run-wide spend cap for 'Search every company': the search stops once this many matching jobs are found (each still billed per job). Not used when you list companies — there 'Maximum jobs per company' applies.",
            "default": 500
          },
          "maxResults": {
            "title": "Maximum jobs per company",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Cap on jobs returned PER COMPANY, not per run — so a batch cannot silently return only the first rows overall and read as 'these companies aren't hiring'. When a board holds more, the run log states the board's own total next to what was returned.",
            "default": 1000
          },
          "postedAfter": {
            "title": "Posted on or after",
            "type": "string",
            "description": "Keep only jobs published on or after this date (YYYY-MM-DD) — this is what turns the Actor into a weekly new-openings feed. Jobs whose board states no publish date (Workday says 'Posted Today' rather than a date) are KEPT, because dropping them would hide every Workday job and read as 'not hiring'."
          },
          "titleKeywords": {
            "title": "Job title contains",
            "type": "array",
            "description": "Keep only jobs whose title contains ANY of these words (case-insensitive), e.g. 'engineer', 'account executive'. Applied before billing — you pay only for matching jobs. Leave empty for every job.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keywordsInDescription": {
            "title": "Also match title words in the job description",
            "type": "boolean",
            "description": "Widen 'Job title contains' to the full job text, e.g. find every job mentioning 'Snowflake' or 'visa sponsorship'. Works on Greenhouse, Ashby, Lever, Workable and Recruitee (their boards carry the text); Workday, SmartRecruiters and Breezy still match on title, and so does 'Search every company'. Does not add the description to your rows unless 'Include the full job description' is on.",
            "default": false
          },
          "excludeKeywords": {
            "title": "Job title must NOT contain",
            "type": "array",
            "description": "Drop jobs whose title contains ANY of these words, e.g. 'intern', 'senior', 'manager'. Applied before billing.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "departments": {
            "title": "Department or team contains",
            "type": "array",
            "description": "Keep only jobs whose department or team contains ANY of these words, e.g. 'Engineering', 'Sales'. Boards that publish no department (Workday) match nothing here. Applied before billing.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "employmentTypes": {
            "title": "Employment type",
            "type": "array",
            "description": "Keep only jobs whose employment type contains ANY of these, e.g. 'full time', 'contract', 'intern' — spelling variants such as 'FullTime' and 'Full-time' match alike. Applied before billing.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "onlyNew": {
            "title": "Only jobs new since my last run",
            "type": "boolean",
            "description": "Return only jobs this Actor has not delivered to you before under the same 'State name' — schedule it daily for a new-openings feed, Workday included (which states no posting date). The first run returns every matching job and sets the baseline. Remembered per job ID, so you are never billed twice for the same posting.",
            "default": false
          },
          "stateKey": {
            "title": "State name (for 'only new')",
            "type": "string",
            "description": "Names the memory 'Only jobs new since my last run' uses. Keep one name per feed (e.g. 'sales-hiring-signals'); use a new name to start a fresh baseline. Letters, digits and hyphens.",
            "default": "default"
          },
          "locationKeywords": {
            "title": "Location contains",
            "type": "array",
            "description": "Keep only jobs whose location (primary or any additional one) contains ANY of these words, e.g. 'London', 'Remote', 'United States'. Matches the board's own wording. Applied before billing.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Keep only jobs the board marks remote — its own remote flag, or its own location wording such as 'Remote - US'. Jobs whose board says nothing either way are left out. Applied before billing.",
            "default": false
          },
          "salaryOnly": {
            "title": "Only jobs with a posted salary",
            "type": "boolean",
            "description": "Keep only jobs whose board publishes pay: a range on Greenhouse, Ashby, Lever and Recruitee, or Breezy's pay text, where the employer entered one (SmartRecruiters, Workday and Workable never publish pay). Applied before billing.",
            "default": false
          },
          "includeDescription": {
            "title": "Include the full job description",
            "type": "boolean",
            "description": "Off by default: descriptions are the bulk of the payload (one large board is ~16 KB per job) and most buyers filter on title, team and location first. Turn it on when you need the text.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. These are public vendor APIs and the plain path is the fastest one, so a proxy is genuinely not needed for the boards themselves. Enable it only if a company's own careers page blocks the detection step.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}