{
  "openapi": "3.0.1",
  "info": {
    "title": "Company Jobs Finder & New-Jobs Monitor (11 ATS)",
    "description": "Give company websites, get every open job from their job board: Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, Personio, Teamtailor, BambooHR, Workday, Breezy. Working filters, no duplicates, and a monitor mode that returns only new jobs.",
    "version": "1.0",
    "x-build-id": "LUyfpZAUGCk1pqqs3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/southern-data~company-jobs-finder/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-southern-data-company-jobs-finder",
        "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/southern-data~company-jobs-finder/runs": {
      "post": {
        "operationId": "runs-sync-southern-data-company-jobs-finder",
        "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/southern-data~company-jobs-finder/run-sync": {
      "post": {
        "operationId": "run-sync-southern-data-company-jobs-finder",
        "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": "Company websites (stripe.com), careers pages, or job-board links (https://jobs.lever.co/acme, https://boards.greenhouse.io/acme). Shorthand also works: greenhouse:acme, lever:acme, ashby:acme, workday:tenant/site@wd5. We find the job board linked from the website; if none is linked, we look for one under the company's name on each provider and only use it when it is verified to belong to this company.",
            "items": {
              "type": "string"
            }
          },
          "companiesFileUrl": {
            "title": "…or a list file / Google Sheet",
            "type": "string",
            "description": "Link to a CSV, TXT or Google Sheet (shared as \"anyone with the link\") with one company website or job-board link per row. A column named website, domain, url, careers or company url is used when present."
          },
          "mode": {
            "title": "What to return",
            "enum": [
              "all_jobs",
              "new_jobs"
            ],
            "type": "string",
            "description": "all_jobs: every open job (that passes your filters). new_jobs: only jobs that appeared since the previous run of this monitor — schedule it daily or weekly. On the first run of new_jobs, current jobs are saved as the baseline and nothing is returned (unless you switch on \"Return current jobs on the first run\").",
            "default": "all_jobs"
          },
          "monitorName": {
            "title": "Monitor name (new_jobs mode)",
            "type": "string",
            "description": "Name for the memory of already-seen jobs (kept in a named key-value store in your account: jobs-monitor-<name>). Set it so you can edit the company list or filters without losing history. If empty: a saved task uses its own memory; otherwise the memory is tied to the exact company list."
          },
          "includeExistingOnFirstRun": {
            "title": "Return current jobs on the first run (new_jobs mode)",
            "type": "boolean",
            "description": "On a monitor's first run for a company, also return its current jobs (charged at the normal per-job price, isNew = false). Off: the first run only saves the baseline.",
            "default": false
          },
          "titleKeywords": {
            "title": "Job title contains any of",
            "type": "array",
            "description": "Keep only jobs whose title contains one of these words (any case, matches word starts: \"engineer\" also finds \"Engineering Manager\"). Empty = all titles.",
            "items": {
              "type": "string"
            }
          },
          "excludeTitleKeywords": {
            "title": "Job title does NOT contain",
            "type": "array",
            "description": "Drop jobs whose title contains any of these words, e.g. intern, werkstudent.",
            "items": {
              "type": "string"
            }
          },
          "locationKeywords": {
            "title": "Location contains any of",
            "type": "array",
            "description": "Keep only jobs whose location (or any of its locations, or country) contains one of these words, e.g. berlin, germany, remote. \"remote\" also matches jobs the board marks as remote.",
            "items": {
              "type": "string"
            }
          },
          "departmentKeywords": {
            "title": "Department or team contains any of",
            "type": "array",
            "description": "Keep only jobs in a matching department or team, e.g. engineering, sales.",
            "items": {
              "type": "string"
            }
          },
          "workplaceTypes": {
            "title": "Workplace type",
            "type": "array",
            "description": "Keep only these workplace types. \"unknown\" = the board does not say. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "hybrid",
                "onsite",
                "unknown"
              ],
              "enumTitles": [
                "Remote",
                "Hybrid",
                "On-site",
                "Not stated"
              ]
            }
          },
          "postedWithinDays": {
            "title": "Posted within the last N days",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Keep only jobs published in the last N days. Jobs whose board gives no date are dropped (and counted in RUN_SUMMARY). 0 = no date filter.",
            "default": 0
          },
          "includeDescription": {
            "title": "Include job descriptions",
            "type": "boolean",
            "description": "Add the job description as plain text. Most boards include it in one request; Workday, BambooHR and SmartRecruiters need one request per job, so there descriptions are read for the jobs you get (after filters), up to 300 per company. Breezy boards give no description. Long descriptions are cut at 20,000 characters.",
            "default": false
          },
          "mergeDuplicatePostings": {
            "title": "Merge duplicate postings",
            "type": "boolean",
            "description": "Merge repeat postings of the same job on one board (same title, location and department — e.g. one requisition per hiring slot). The row shows how many were merged. Boards reached from two of your inputs are always listed once.",
            "default": true
          },
          "maxJobsPerCompany": {
            "title": "Max jobs read per company",
            "minimum": 0,
            "maximum": 20000,
            "type": "integer",
            "description": "Stop reading a board after this many jobs (0 = no limit). Filters apply after this limit, so keep it high when you filter.",
            "default": 1000
          },
          "maxCompanies": {
            "title": "Max companies",
            "minimum": 0,
            "type": "integer",
            "description": "Check only the first N companies of your list (0 = all). The rest go to the REMAINING record.",
            "default": 0
          },
          "detectFromWebsite": {
            "title": "Find the board on the company website",
            "type": "boolean",
            "description": "Read the homepage and careers pages (respecting robots.txt) to find the linked job board.",
            "default": true
          },
          "guessBoards": {
            "title": "Look up the company name on job-board providers",
            "type": "boolean",
            "description": "When the website links no board, try the company name on each provider. A board is only used when its postings link to the company's domain, or its name matches and the website or board size confirms it.",
            "default": true
          },
          "maxPagesPerSite": {
            "title": "Max website pages per company",
            "minimum": 1,
            "maximum": 15,
            "type": "integer",
            "description": "Pages read on each company website to find the job board.",
            "default": 6
          },
          "maxConcurrency": {
            "title": "Companies in parallel",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many companies are checked at the same time.",
            "default": 8
          },
          "selfTest": {
            "title": "Self-test (health check)",
            "type": "boolean",
            "description": "Run the built-in health check instead of a normal run: no rows, nothing charged; the run fails if any check fails.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}