{
  "openapi": "3.0.1",
  "info": {
    "title": "ATS Jobs Tracker: Greenhouse, Lever, Ashby & Workable Jobs",
    "description": "Track open jobs at any company on Greenhouse, Lever, Ashby or Workable. Paste board slugs, careers URLs or names. Only-new mode for daily monitoring, repost detection, salary, remote and department fields, plus a free per-company hiring summary. No login, no proxies. $1.75 per 1,000 jobs.",
    "version": "0.0",
    "x-build-id": "PC5spNaUKQX7cHPg7"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/classier_linear~ats-jobs-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-classier_linear-ats-jobs-tracker",
        "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/classier_linear~ats-jobs-tracker/runs": {
      "post": {
        "operationId": "runs-sync-classier_linear-ats-jobs-tracker",
        "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/classier_linear~ats-jobs-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-classier_linear-ats-jobs-tracker",
        "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 company per line. Accepted: a careers or job-board URL (https://job-boards.greenhouse.io/stripe, https://jobs.lever.co/palantir, https://jobs.ashbyhq.com/openai, https://apply.workable.com/huggingface/), a board slug (stripe), a slug with the ATS forced (lever:palantir), a company domain (stripe.com) or a plain name (Hugging Face). Slugs, names and domains without a known ATS are auto-detected by trying Greenhouse, Lever, Ashby and Workable in turn. Up to 500 companies per run.",
            "items": {
              "type": "string"
            }
          },
          "ats": {
            "title": "ATS for slugs and names",
            "enum": [
              "auto",
              "greenhouse",
              "lever",
              "ashby",
              "workable"
            ],
            "type": "string",
            "description": "Which ATS bare slugs, names and domains belong to. Auto-detect tries each ATS until one has a public board (a few extra requests per company). URLs always use the ATS they point to.",
            "default": "auto"
          },
          "keywords": {
            "title": "Title keywords (any)",
            "type": "array",
            "description": "Keep only jobs whose title contains at least one of these whole words or phrases (case-insensitive; plural, -ing, -er and -ship forms also match, so engineer matches Engineering Manager), for example engineer, sales, product manager. Leave empty for all jobs.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude title keywords",
            "type": "array",
            "description": "Drop jobs whose title contains any of these whole words or phrases (case-insensitive; plural, -ing, -er and -ship forms also match, so intern drops Intern and Internship but keeps Internal Audit), for example intern, senior, director.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Keep only jobs whose location matches one of these as whole words (case-insensitive; primary location and all listed locations), for example London, United States, Remote. A country name or abbreviation (United States, USA, US, UK) also matches the job's country code on Lever, Ashby and Workable. 'Remote' also matches jobs flagged remote.",
            "items": {
              "type": "string"
            }
          },
          "departments": {
            "title": "Departments or teams",
            "type": "array",
            "description": "Keep only jobs whose department or team contains one of these (case-insensitive), for example Engineering, Sales.",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Keep only jobs marked as remote: Lever and Ashby workplaceType Remote (Ashby's isRemote flag only when it has no workplace type), a location that says remote, Workable telecommuting, or a Greenhouse 'Workplace Type' field, 'Remote'/'Distributed' location or 'remote' in the location or title. Hybrid jobs count only when one of their locations is remote.",
            "default": false
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Keep only jobs posted in the last N days. Dates used: Greenhouse first_published, Lever createdAt, Ashby publishedAt, Workable published_on. Jobs with no date are kept."
          },
          "includeDescription": {
            "title": "Include job description",
            "type": "boolean",
            "description": "Adds a plain-text 'description' column (HTML stripped, up to 50,000 characters). Off keeps the dataset small. Salary parsing from description text happens either way.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new jobs (monitoring mode)",
            "type": "boolean",
            "description": "Remember which jobs were exported and export only jobs not exported before. The first run exports every matching job up to 'Maximum jobs to export' (raise it for the first run; the prefill is 100) and saves the state. Later runs (for example a daily Apify Schedule) return new postings plus any jobs an earlier capped run did not reach (those have isNew=false); already-exported jobs are never charged again. Also adds isNew, isRepost, repostOf and firstSeenAt, and closed/new/reposted counts in HIRING_SUMMARY.",
            "default": false
          },
          "stateKey": {
            "title": "Monitoring list name",
            "type": "string",
            "description": "Name of the memory used by 'Only new jobs'. Runs with the same name share what has been exported; use a different name for each separate watch list. Stored in your account as the named key-value store ats-jobs-tracker-state-<name>; delete that store to start over.",
            "default": "default"
          },
          "maxJobs": {
            "title": "Maximum jobs to export",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many jobs in total across all companies; companies after that point are not checked (and get no HIRING_SUMMARY entry). Default 1000 when omitted (the Console prefill is 100). In 'Only new jobs' mode, set it high enough for the first run to cover all open jobs. Your run's 'Maximum cost per run' also caps the export: at $1.75 per 1,000 jobs a $1.00 cap allows 571 jobs.",
            "default": 1000
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}