{
  "openapi": "3.0.1",
  "info": {
    "title": "Jobs Monitor: Greenhouse, Lever, Ashby, Workday + 5 more ATS",
    "description": "Watch career sites on Greenhouse, Lever, Ashby, Workday, Workable, Recruitee, Personio, Teamtailor and BambooHR via public job-board endpoints. Paste a board or careers page URL. Clean schema, salary parsing, filters, and a monitor for new, changed and closed jobs with a webhook.",
    "version": "2.0",
    "x-build-id": "dt5aiSCih0Gr0L3eO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rationalistic_canoe~ats-jobs-feed/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rationalistic_canoe-ats-jobs-feed",
        "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/rationalistic_canoe~ats-jobs-feed/runs": {
      "post": {
        "operationId": "runs-sync-rationalistic_canoe-ats-jobs-feed",
        "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/rationalistic_canoe~ats-jobs-feed/run-sync": {
      "post": {
        "operationId": "run-sync-rationalistic_canoe-ats-jobs-feed",
        "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": [
          "sources"
        ],
        "properties": {
          "sources": {
            "title": "Company job boards or careers pages",
            "type": "array",
            "description": "One per line. A board URL or short form for Greenhouse, Lever, Ashby, Workable, Recruitee, Personio, Teamtailor, BambooHR or Workday (greenhouse:gitlab, lever:palantir, ashby:ramp, workable:huggingface, recruitee:bunq, personio:ottonova, teamtailor:polestar, bamboohr:scribd, workday:adobe.wd5/external_experienced), or a company careers page URL such as https://www.figma.com/careers/ (the actor finds the board it links to).",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Title keywords (any)",
            "type": "array",
            "description": "Keep jobs whose title contains any of these (case-insensitive). Empty = all jobs.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "searchDescription": {
            "title": "Also match keywords in the description",
            "type": "boolean",
            "description": "Matches keywords in the job description as well as the title.",
            "default": false
          },
          "excludeKeywords": {
            "title": "Exclude title keywords",
            "type": "array",
            "description": "Drop jobs whose title contains any of these, e.g. intern, senior.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations (any)",
            "type": "array",
            "description": "Keep jobs whose location contains any of these, e.g. United States, London, Remote.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Keep only jobs marked remote or with Remote in the location.",
            "default": false
          },
          "departments": {
            "title": "Departments or teams (any)",
            "type": "array",
            "description": "Keep jobs whose department or team contains any of these, e.g. Engineering, Product.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "employmentTypes": {
            "title": "Employment types (any)",
            "type": "array",
            "description": "e.g. Full-time, Contract, Intern. Uses the label each ATS provides.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "postedWithinDays": {
            "title": "Posted within the last N days",
            "minimum": 0,
            "type": "integer",
            "description": "0 = no date filter.",
            "default": 0
          },
          "minSalary": {
            "title": "Minimum yearly salary",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only jobs whose published yearly range reaches this amount (any currency). 0 = off. Jobs with no published salary are dropped when this is set.",
            "default": 0
          },
          "includeDescription": {
            "title": "Job description",
            "enum": [
              "none",
              "text",
              "html",
              "both"
            ],
            "type": "string",
            "description": "How the job description is included in each item.",
            "default": "text"
          },
          "monitorMode": {
            "title": "Monitor mode",
            "enum": [
              "off",
              "new",
              "newAndChanged"
            ],
            "type": "string",
            "description": "Remembers jobs between runs in a named key-value store. 'New jobs only' returns postings not seen before. 'New and changed' also returns jobs whose title, location, department, type, remote status or salary changed, and jobs that were closed and reopened. Each item gets changeType: new, updated or reopened.",
            "default": "off"
          },
          "onlyNewJobs": {
            "title": "Monitor: only jobs not seen before (v1 setting)",
            "type": "boolean",
            "description": "Kept for monitors created with version 1. Same as Monitor mode = New jobs only. Leave off and use Monitor mode instead.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Use a different name for each separate watchlist.",
            "default": "default"
          },
          "skipExistingOnFirstRun": {
            "title": "Monitor: skip jobs already open on the first run",
            "type": "boolean",
            "description": "Turn on to start quietly: jobs already open the first time a board is read are remembered but not returned. Works per board, so a board added to the list later also starts quietly.",
            "default": false
          },
          "reportClosedJobs": {
            "title": "Monitor: list jobs that closed",
            "type": "boolean",
            "description": "Writes jobs that disappeared from a board since the last run to the CLOSED_JOBS record (and to the webhook). Closed jobs are not saved to the dataset and are not billed. Only boards read in full are checked.",
            "default": false
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional. At the end of the run, saved jobs are POSTed here as JSON in batches ({items, closed, monitorName, batch, batches}). No call is made when nothing new was found."
          },
          "webhookSecret": {
            "title": "Webhook secret",
            "type": "string",
            "description": "Optional. Sent as the X-Webhook-Secret header so your endpoint can check the call came from your run."
          },
          "webhookBatchSize": {
            "title": "Webhook batch size",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Jobs per webhook call.",
            "default": 100
          },
          "outputDatasetName": {
            "title": "Also append to a named dataset",
            "type": "string",
            "description": "Optional. Saved jobs are also appended to this named dataset, so a scheduled monitor builds one growing history across runs."
          },
          "maxJobsPerSource": {
            "title": "Max jobs fetched per board",
            "minimum": 0,
            "type": "integer",
            "description": "0 = no limit.",
            "default": 0
          },
          "maxJobs": {
            "title": "Max jobs saved in total",
            "minimum": 0,
            "type": "integer",
            "description": "0 = no limit. Each saved job is one billable result.",
            "default": 0
          },
          "workdaySearchText": {
            "title": "Workday search text",
            "type": "string",
            "description": "Workday sites return at most 2,000 jobs per search. For very large Workday sites, enter a search word (e.g. engineer) to narrow the list before filters run.",
            "default": ""
          },
          "maxConcurrency": {
            "title": "Boards read in parallel",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many boards are read at the same time. Per-host politeness delays still apply.",
            "default": 4
          },
          "allowSmartRecruiters": {
            "title": "SmartRecruiters boards you are authorised to read",
            "type": "boolean",
            "description": "SmartRecruiters publishes its Posting API for each company's own career site, and its robots.txt asks automated clients to stay out. Turn this on only for boards you are authorised to read, such as your own company's. When off, smartrecruiters: sources are skipped and listed in OUTPUT.",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}