{
  "openapi": "3.0.1",
  "info": {
    "title": "ATS Jobs Scraper: Greenhouse, Lever, Ashby, Workday & 8 More",
    "description": "Every open job from any company on Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Recruitee, Personio, Teamtailor, BambooHR, Jobvite or Oracle in one schema. Presets, company hiring summaries, salary, seniority, new & closed job monitoring.",
    "version": "1.2",
    "x-build-id": "W6xVGeV6hIEIQftTY"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/forward_opera18~ats-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-forward_opera18-ats-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/forward_opera18~ats-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-forward_opera18-ats-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/forward_opera18~ats-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-forward_opera18-ats-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": {
          "companies": {
            "title": "Companies",
            "type": "array",
            "description": "One company per line (or leave empty and pick a preset below). Paste any of these:<br>• <b>A job-board URL</b> from Greenhouse, Lever, Ashby, SmartRecruiters, Workable, Recruitee, Personio, Teamtailor, BambooHR, Jobvite, Workday or Oracle Recruiting Cloud, e.g. <code>https://boards.greenhouse.io/airbnb</code>, <code>https://jobs.lever.co/spotify</code>, <code>https://alkira.bamboohr.com/careers</code>, <code>https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite</code><br>• <code>ats:board</code>, e.g. <code>greenhouse:figma</code>, <code>ashby:notion</code>, <code>smartrecruiters:ServiceNow</code>, <code>recruitee:bunq</code>, <code>bamboohr:alkira</code>, <code>jobvite:nutanix</code><br>• <b>A company website or domain</b>, e.g. <code>figma.com</code> or <code>https://www.notion.com/careers</code>: the Actor finds the careers board for you<br>• <b>A company name or board name</b>, e.g. <code>stripe</code> or <code>Monzo Bank</code>: the Actor checks every supported ATS (Workday and Oracle need a URL)",
            "items": {
              "type": "string"
            }
          },
          "presets": {
            "title": "Preset company lists",
            "type": "array",
            "description": "Add ready-made lists of verified careers boards (merged with \"Companies\", duplicates removed): Top tech (30), AI (26), Fintech (16), Remote-first (20), Developer tools (21), European tech (16), and Enterprise on Workday (12 large employers such as NVIDIA, Salesforce and Cisco). Tip: combine with Output \"One row per company\" to watch hiring across a whole sector for a few cents.",
            "items": {
              "type": "string",
              "enum": [
                "top-tech",
                "ai",
                "fintech",
                "remote-first",
                "devtools",
                "europe",
                "enterprise-workday"
              ],
              "enumTitles": [
                "Top tech companies (30)",
                "AI companies & startups (26)",
                "Fintech (16)",
                "Remote-first companies (20)",
                "Developer tools & infrastructure (21)",
                "European tech (16)",
                "Large enterprises on Workday (12)"
              ]
            }
          },
          "outputMode": {
            "title": "Output",
            "enum": [
              "jobs",
              "companies"
            ],
            "type": "string",
            "description": "<b>Jobs</b>: one row per job posting (a free per-company hiring summary is also saved as COMPANY_SUMMARY in the key-value store).<br><b>One row per company</b>: a hiring-signal summary instead of jobs: open roles, jobs posted in the last 7 and 30 days, top departments and locations, remote share, seniority mix, median salary and newest titles. Filters decide what is counted. Each company row is billed as one result, so summarising 100 companies costs the same as 100 jobs.",
            "default": "jobs"
          },
          "keywords": {
            "title": "Keywords (any of)",
            "type": "array",
            "description": "Keep jobs whose title contains at least one of these words or phrases (whole-word match, case-insensitive). Leave empty to keep all jobs.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop jobs whose title contains any of these words, e.g. \"senior\", \"intern\", \"manager\".",
            "items": {
              "type": "string"
            }
          },
          "keywordsInDescription": {
            "title": "Also match keywords in the job description",
            "type": "boolean",
            "description": "When on, a keyword can match the title OR the full description (e.g. find every job that mentions \"Kubernetes\").",
            "default": false
          },
          "locations": {
            "title": "Locations (any of)",
            "type": "array",
            "description": "Keep jobs whose location contains any of these texts, e.g. \"London\", \"Germany\", \"US\", \"New York\". Matches the location, all secondary locations, city, region and country fields.",
            "items": {
              "type": "string"
            }
          },
          "workplace": {
            "title": "Workplace type",
            "enum": [
              "any",
              "remote",
              "hybrid",
              "onsite",
              "remoteOrHybrid"
            ],
            "type": "string",
            "description": "Filter by remote / hybrid / on-site. Jobs whose workplace type is unknown are only kept with \"Any\".",
            "default": "any"
          },
          "departments": {
            "title": "Departments / teams (any of)",
            "type": "array",
            "description": "Keep jobs whose department or team contains any of these texts, e.g. \"Engineering\", \"Sales\".",
            "items": {
              "type": "string"
            }
          },
          "postedWithinDays": {
            "title": "Posted within the last N days",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Only keep jobs first published in the last N days. 0 = no date filter. Jobs without a publish date are dropped when this is set.",
            "default": 0
          },
          "onlyWithSalary": {
            "title": "Only jobs with a structured salary range",
            "type": "boolean",
            "description": "Keep only jobs where the ATS publishes a machine-readable salary range (common in the US on Greenhouse, Ashby and Lever, and on some Recruitee boards).",
            "default": false
          },
          "minYearlySalary": {
            "title": "Minimum yearly salary",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Keep jobs whose published pay reaches at least this yearly amount (in the job's own currency; hourly/monthly pay is converted to yearly). Jobs without a salary are dropped. 0 = off.",
            "default": 0
          },
          "seniority": {
            "title": "Seniority levels",
            "type": "array",
            "description": "Keep only these levels. Seniority is inferred from the job title (e.g. \"Senior\", \"Staff\", \"Head of\", \"Intern\") and the ATS's experience field.",
            "items": {
              "type": "string",
              "enum": [
                "INTERN",
                "ENTRY",
                "MID",
                "SENIOR",
                "LEAD",
                "MANAGER",
                "DIRECTOR",
                "EXECUTIVE"
              ],
              "enumTitles": [
                "Intern / working student",
                "Entry / junior",
                "Mid-level",
                "Senior",
                "Lead / staff / principal",
                "Manager",
                "Director / VP / head of",
                "Executive / C-level"
              ]
            }
          },
          "includeUnknownSeniority": {
            "title": "Keep jobs with no clear seniority",
            "type": "boolean",
            "description": "Many titles (e.g. \"Software Engineer\") carry no level. On = keep them when filtering by seniority; off = drop them.",
            "default": true
          },
          "onlyNewJobs": {
            "title": "Only new jobs since the last run (monitoring)",
            "type": "boolean",
            "description": "Remember which jobs were already returned and output only new ones. Schedule the Actor (e.g. daily) and connect a webhook, Slack, email or Google Sheets integration to get a feed of new openings. The first run returns all matching jobs.",
            "default": false
          },
          "monitorKey": {
            "title": "Monitor name",
            "type": "string",
            "description": "Use a different name for each separate watch list so their memories don't mix. Letters, digits, - and _ only.",
            "default": "default"
          },
          "reportClosedJobs": {
            "title": "Also report closed jobs",
            "type": "boolean",
            "description": "With monitoring on, also output jobs from earlier runs that have disappeared from the board (isClosed = true). Closed-job rows are not charged.",
            "default": false
          },
          "descriptionFormat": {
            "title": "Job description format",
            "enum": [
              "text",
              "html",
              "both",
              "none"
            ],
            "type": "string",
            "description": "Plain text is best for spreadsheets and AI; HTML keeps formatting. \"None\" makes the output much smaller and SmartRecruiters, Workday, BambooHR, Jobvite and Oracle runs much faster (they need one extra request per job for descriptions).",
            "default": "text"
          },
          "maxJobsPerCompany": {
            "title": "Max jobs per company",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many matching jobs per company. 0 = no limit.",
            "default": 0
          },
          "maxJobs": {
            "title": "Max jobs in total",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stop the whole run after this many jobs. 0 = no limit. You can also cap spending with the run's maximum cost setting.",
            "default": 0
          },
          "maxConcurrency": {
            "title": "Companies processed in parallel",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Higher is faster for long company lists. Requests to each ATS are rate-limited regardless of this value.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}