{
  "openapi": "3.0.1",
  "info": {
    "title": "ATS Jobs Scraper - Career Sites, Greenhouse, Lever, Workday",
    "description": "Live jobs from company career sites and careers pages: paste career pages, domains or board URLs. Detects 17 ATSs incl. Greenhouse, Lever, Ashby, Workday, SmartRecruiters. New-job alerts. $1/1k jobs.",
    "version": "0.1",
    "x-build-id": "8xCF25zZzkqBmd5aP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tidytools~ats-career-site-jobs/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tidytools-ats-career-site-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/tidytools~ats-career-site-jobs/runs": {
      "post": {
        "operationId": "runs-sync-tidytools-ats-career-site-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/tidytools~ats-career-site-jobs/run-sync": {
      "post": {
        "operationId": "run-sync-tidytools-ats-career-site-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",
        "properties": {
          "companies": {
            "title": "Companies (career pages, websites or job board URLs)",
            "type": "array",
            "description": "Main input (fill this, or `sources`). One company per line: a job board URL (https://job-boards.greenhouse.io/airbnb, https://jobs.lever.co/leverdemo), a career page or website (stripe.com: the board is detected) or ats:slug (greenhouse:airbnb). 17 ATSs: Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Recruitee, Personio, Breezy HR, Teamtailor, BambooHR, Rippling, Pinpoint, Gem, JazzHR, Homerun, Freshteam. Invalid lines and companies without a readable board get a free error row.",
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "title": "What to return",
            "enum": [
              "jobs",
              "detect"
            ],
            "type": "string",
            "description": "Jobs mode charges per job returned. Detection mode charges per company whose ATS was identified, and returns no job rows. Values: jobs = Jobs: one row per open job; detect = ATS detection only: one row per company (which ATS, board URL, job count, top departments and locations).",
            "default": "jobs"
          },
          "sources": {
            "title": "Extra sources: public remote-job feeds (optional)",
            "type": "array",
            "description": "Add jobs from public job feeds whose terms allow reuse with attribution. Same price per job and same filters as company jobs. Rows have source and attribution; link back to jobUrl when you republish them. Works with or without companies.",
            "items": {
              "type": "string",
              "enum": [
                "remoteok",
                "hackernews"
              ],
              "enumTitles": [
                "Remote OK (remoteok.com API, about 100 latest remote jobs)",
                "Hacker News: latest \"Ask HN: Who is hiring?\" thread (official HN API)"
              ]
            }
          },
          "maxJobsPerCompany": {
            "title": "Max jobs per company",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop taking jobs from one company after this many (after filters). 0 = all open jobs.",
            "default": 0
          },
          "maxJobs": {
            "title": "Max jobs (whole run)",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stop after this many jobs in total. You pay only for jobs returned: 10,000 jobs cost at most $10 on the Free plan.",
            "default": 10000
          },
          "descriptionFormat": {
            "title": "Job description",
            "enum": [
              "text",
              "html",
              "both",
              "none"
            ],
            "type": "string",
            "description": "Same price either way. Values: text = Plain text (descriptionText); html = HTML (descriptionHtml); both = Both; none = None (faster; Workday, SmartRecruiters, Rippling and BambooHR need one extra request per job for descriptions).",
            "default": "text"
          },
          "titleKeywords": {
            "title": "Job title contains (any of)",
            "type": "array",
            "description": "Keep jobs whose title contains at least one of these words or phrases (case-insensitive), e.g. engineer, data scientist. Whole words and their common forms match (engineer finds Engineering, java does not find JavaScript); use * for part of a word (*entwickler). Filtered jobs are not charged.",
            "items": {
              "type": "string"
            }
          },
          "excludeTitleKeywords": {
            "title": "Job title must not contain",
            "type": "array",
            "description": "Drop jobs whose title contains any of these, e.g. intern, senior (intern drops Intern and Internship, not International).",
            "items": {
              "type": "string"
            }
          },
          "locationKeywords": {
            "title": "Location contains (any of)",
            "type": "array",
            "description": "Keep jobs whose location, other locations or country contain one of these, e.g. London, Germany, US, Remote.",
            "items": {
              "type": "string"
            }
          },
          "departments": {
            "title": "Department or team contains (any of)",
            "type": "array",
            "description": "Keep jobs whose department or team contains one of these, e.g. Engineering, Sales.",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Keep jobs marked remote by the ATS or with \"remote\" in the location.",
            "default": false
          },
          "postedWithinDays": {
            "title": "Posted in the last N days",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Keep jobs first published in the last N days. 0 = any date. Jobs without a publication date are dropped when this is set (Homerun feeds have no publication date; Workday gives \"Posted N Days Ago\"; JazzHR dates are the job's creation time).",
            "default": 0
          },
          "onlyNewJobs": {
            "title": "Only new jobs since the last run",
            "type": "boolean",
            "description": "Remember the jobs of every company and return only jobs that were not there on the previous run of the same monitor (the first run returns everything and becomes the baseline). Unchanged jobs are not output and not charged. Ideal for daily schedules.",
            "default": false
          },
          "reportClosedJobs": {
            "title": "Report closed jobs",
            "type": "boolean",
            "description": "With only-new-jobs on: add a free row (changeType \"closed\") for every job that disappeared since the last run.",
            "default": true
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Runs with the same name are compared with each other (letters, digits, dashes). Use different names for different company lists or filters. Default: \"default\"."
          },
          "guessBoards": {
            "title": "Guess the board when a website does not link it",
            "type": "boolean",
            "description": "If a company website does not link its job board, try boards named after the domain (e.g. stripe.com → greenhouse:stripe) on Greenhouse, Lever, Ashby, Workable, Recruitee, SmartRecruiters, Personio, Teamtailor, Pinpoint, BambooHR, Homerun and Gem, and accept one only when its company name or job texts match the domain.",
            "default": true
          },
          "dedupeAcrossBoards": {
            "title": "Remove the same job found on two boards",
            "type": "boolean",
            "description": "When the same company, title and location appear on two different boards or sources in one run (e.g. a company's own board and Remote OK), only the first is returned. Duplicates are free.",
            "default": true
          },
          "httpVia": {
            "title": "Career page requests from",
            "enum": [
              "auto",
              "backend",
              "direct",
              "vm"
            ],
            "type": "string",
            "description": "How company websites are read to find the job board. Job board APIs are read from Apify's network, except with \"Our second server only\": then career pages and job board API requests go through our second server (a different IP, for boards that refuse data-center networks); Workday searches (POST requests) still go from Apify's network.",
            "default": "auto"
          },
          "maxConcurrency": {
            "title": "Companies in parallel",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many companies are processed at the same time.",
            "default": 5
          },
          "companyTimeoutSecs": {
            "title": "Time limit per company (seconds)",
            "minimum": 30,
            "maximum": 3600,
            "type": "integer",
            "description": "A company that takes longer gets a timeout error row (not charged) so one slow board cannot hold the run.",
            "default": 600
          },
          "proxyConfiguration": {
            "title": "Proxy (optional)",
            "type": "object",
            "description": "Only used for requests sent from Apify's network. Apify proxy usage is billed to your Apify account. Not needed for the supported job boards."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}