{
  "openapi": "3.0.1",
  "info": {
    "title": "Greenhouse Jobs Scraper · Lever, Ashby, SmartRecruiters ATS",
    "description": "ATS jobs scraper for recruiting research and lead generation: Job listings straight from the Greenhouse, Lever, Ashby, Workable, Recruitee, Personio and SmartRecruiters APIs of the companies you name, with salary and experience level parsed out. Missing boards are never charged.",
    "version": "0.3",
    "x-build-id": "dUFTXt2Wohtgx1Ubg"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/thequietstack~ats-direct-jobs/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-thequietstack-ats-direct-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/thequietstack~ats-direct-jobs/runs": {
      "post": {
        "operationId": "runs-sync-thequietstack-ats-direct-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/thequietstack~ats-direct-jobs/run-sync": {
      "post": {
        "operationId": "run-sync-thequietstack-ats-direct-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": [
          "boards"
        ],
        "properties": {
          "boards": {
            "title": "Company boards",
            "type": "array",
            "description": "One per line. Accepted: <code>greenhouse:stripe</code>, <code>lever:spotify</code>, <code>ashby:openai</code>, <code>workable:huggingface</code>, <code>recruitee:bunq</code>, <code>personio:1komma5grad</code>, <code>smartrecruiters:ServiceNow</code>; any board URL (<code>https://boards.greenhouse.io/figma</code>, <code>https://jobs.lever.co/zoox</code>, <code>https://jobs.ashbyhq.com/ramp</code>, <code>https://apply.workable.com/skroutz</code>, <code>https://channable.recruitee.com</code>, <code>https://prewave.jobs.personio.de</code>, <code>https://jobs.smartrecruiters.com/Canva</code>, EU hosts too); a company careers page URL (a board of any of the seven linked in its HTML is detected); or a bare slug (tried on Greenhouse, Lever, Ashby, Workable, Recruitee, Personio, then SmartRecruiters). Via API you can also pass objects: <code>{\"ats\": \"lever\", \"slug\": \"palantir\", \"company\": \"Palantir\"}</code>. SmartRecruiters company ids are case-sensitive (<code>ServiceNow</code>, not <code>servicenow</code>).",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords (any)",
            "type": "array",
            "description": "Keep jobs whose title contains at least one of these (case-insensitive). Empty = all jobs.",
            "items": {
              "type": "string"
            }
          },
          "keywordsInDescription": {
            "title": "Also search keywords in the description",
            "type": "boolean",
            "description": "Off: keywords are matched against the title only (precise). On: title or full description.",
            "default": false
          },
          "excludeKeywords": {
            "title": "Exclude titles containing",
            "type": "array",
            "description": "Drop jobs whose title contains any of these, e.g. intern, senior, manager.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations (any)",
            "type": "array",
            "description": "Keep jobs whose location, any additional location or country contains one of these, e.g. London, Germany, New York, Remote.",
            "items": {
              "type": "string"
            }
          },
          "remote": {
            "title": "Remote",
            "enum": [
              "any",
              "only",
              "exclude",
              "include"
            ],
            "type": "string",
            "description": "any = no remote filter. only = remote jobs only. exclude = no remote jobs. include = remote jobs pass the location filter too.",
            "default": "any"
          },
          "departments": {
            "title": "Departments / teams (any)",
            "type": "array",
            "description": "Keep jobs whose department or team contains one of these, e.g. Engineering, Sales, Design.",
            "items": {
              "type": "string"
            }
          },
          "employmentTypes": {
            "title": "Employment types",
            "type": "array",
            "description": "Empty = all. Greenhouse boards only state this when the company adds it as a custom field; such jobs have employmentType null and are dropped by this filter. Personio working students count as PART_TIME.",
            "items": {
              "type": "string",
              "enum": [
                "FULL_TIME",
                "PART_TIME",
                "CONTRACT",
                "INTERN"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract / temporary",
                "Internship"
              ]
            }
          },
          "experienceLevels": {
            "title": "Experience levels",
            "type": "array",
            "description": "Empty = all. The level comes from an explicit word in the job title first (Intern, Werkstudent, Junior, New Grad, Graduate, Senior, Sr., Staff, Principal, Lead, Director, Head of, VP ...; Engineer II/III), otherwise from the ATS's own level field (SmartRecruiters, Workable, Personio, Recruitee). Jobs with neither have level UNSPECIFIED; add it to keep them. Example for career starters: Internship + Entry level (+ Unspecified with 'Max years of experience').",
            "items": {
              "type": "string",
              "enum": [
                "INTERNSHIP",
                "ENTRY_LEVEL",
                "MID_LEVEL",
                "SENIOR",
                "DIRECTOR_EXECUTIVE",
                "UNSPECIFIED"
              ],
              "enumTitles": [
                "Internship / working student",
                "Entry level / junior / graduate",
                "Mid level",
                "Senior / staff / principal / lead",
                "Director / head of / executive",
                "Unspecified (no level stated)"
              ]
            }
          },
          "maxYearsExperience": {
            "title": "Max years of experience required",
            "minimum": 0,
            "type": "integer",
            "description": "Drop jobs that state a higher minimum, e.g. 1 drops \"3+ years of experience\". Read from the posting text (English and German phrasings, \"no prior experience required\" = 0) or Personio's years field. Jobs that state no number pass; combine with Experience levels to exclude Senior titles."
          },
          "newSinceDays": {
            "title": "Posted within the last N days",
            "minimum": 1,
            "type": "integer",
            "description": "Only jobs first published within this many days (Greenhouse first_published, Lever createdAt, Ashby publishedAt, Workable published_on, Recruitee published_at, Personio createdAt). Empty = any age."
          },
          "onlyWithSalary": {
            "title": "Only jobs with a salary range",
            "type": "boolean",
            "description": "Drop jobs where neither the ATS pay fields nor the posting text contain a pay range.",
            "default": false
          },
          "maxResults": {
            "title": "Max jobs (hard cap)",
            "minimum": 1,
            "type": "integer",
            "description": "The run stops at exactly this many jobs across all boards, even with parallel boards. Newest jobs of each board come first.",
            "default": 1000
          },
          "maxResultsPerCompany": {
            "title": "Max jobs per company",
            "minimum": 1,
            "type": "integer",
            "description": "Optional cap per board, newest first. Empty = no per-company cap."
          },
          "onlyNew": {
            "title": "Only jobs not seen in earlier runs",
            "type": "boolean",
            "description": "Remembers every job ID this Actor has returned (per board) in a named key-value store in your account. Schedule the Actor daily with this on to get only new postings; seen jobs are never charged again.",
            "default": false
          },
          "seenStoreName": {
            "title": "Seen-jobs store name",
            "type": "string",
            "description": "Named key-value store used by \"Only jobs not seen in earlier runs\". Use different names for independent watch lists.",
            "default": "ats-direct-jobs-seen"
          },
          "includeDescription": {
            "title": "Include description text",
            "type": "boolean",
            "description": "Plain-text job description. Turn off for smaller datasets.",
            "default": true
          },
          "includeDescriptionHtml": {
            "title": "Include description HTML",
            "type": "boolean",
            "description": "Also return the original HTML.",
            "default": false
          },
          "concurrency": {
            "title": "Boards in parallel",
            "minimum": 1,
            "maximum": 6,
            "type": "integer",
            "description": "Requests to one ATS service are always spaced to at most 1 per second, whatever this value (all Recruitee and all Personio company subdomains count as one service each).",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Not needed: these are official public APIs. Leave off unless your network requires it.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}