{
  "openapi": "3.0.1",
  "info": {
    "title": "Hiring Changes Monitor: Opened & Closed Jobs by Company",
    "description": "Track which jobs each company opened or closed since your last run, from public Greenhouse, Lever, Ashby, Workable, SmartRecruiters and Recruitee job boards. One summary row per company plus one row per changed job. No login needed.",
    "version": "1.0",
    "x-build-id": "GTV0vW7hh4eZbWTcI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/clearpath-data~hiring-changes-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-clearpath-data-hiring-changes-monitor",
        "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/clearpath-data~hiring-changes-monitor/runs": {
      "post": {
        "operationId": "runs-sync-clearpath-data-hiring-changes-monitor",
        "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/clearpath-data~hiring-changes-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-clearpath-data-hiring-changes-monitor",
        "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 (board slugs or URLs)",
            "type": "array",
            "description": "One company per line. Accepts a board slug (\"stripe\"), a prefixed slug (\"lever:spotify\", \"workable:huggingface\", \"smartrecruiters:BoschGroup\", \"recruitee:bunq\"), a job-board URL (job-boards.greenhouse.io/airbnb, jobs.lever.co/palantir, jobs.ashbyhq.com/openai, apply.workable.com/huggingface, careers.smartrecruiters.com/BoschGroup, bunq.recruitee.com), or a company careers page URL (the Actor looks for an embedded Greenhouse, Lever, Ashby, Workable, SmartRecruiters or Recruitee board). SmartRecruiters company IDs are case-sensitive.",
            "items": {
              "type": "string"
            }
          },
          "ats": {
            "title": "ATS for plain slugs",
            "enum": [
              "auto",
              "greenhouse",
              "lever",
              "ashby",
              "workable",
              "smartrecruiters",
              "recruitee"
            ],
            "type": "string",
            "description": "Which ATS to query for plain slugs such as \"stripe\". \"Auto-detect\" tries Greenhouse, Ashby, Lever, Workable, Recruitee, then SmartRecruiters, and uses the first board with open jobs. URLs and prefixed slugs always use their own ATS.",
            "default": "auto"
          },
          "changeTypes": {
            "title": "Change types",
            "type": "array",
            "description": "Which job changes to return. Leave empty for both.",
            "items": {
              "type": "string",
              "enum": [
                "opened",
                "closed"
              ],
              "enumTitles": [
                "Opened (new postings)",
                "Closed (postings taken down)"
              ]
            },
            "default": []
          },
          "keywords": {
            "title": "Title keywords",
            "type": "array",
            "description": "Keep only jobs whose title contains at least one of these words (case-insensitive). Leave empty for all jobs.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Keep only jobs whose location (or any secondary location / country) contains at least one of these strings, e.g. \"London\", \"Germany\", \"Remote\".",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Keep only jobs marked remote by the ATS, or whose location says Remote/Anywhere.",
            "default": false
          },
          "departments": {
            "title": "Departments / teams",
            "type": "array",
            "description": "Keep only jobs whose department or team contains at least one of these strings, e.g. \"Engineering\", \"Sales\".",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "stateName": {
            "title": "State name",
            "type": "string",
            "description": "Each company's open jobs are saved under this name in a key-value store named \"hiring-changes-monitor-state\" in your account; the next run compares against it. Use a different name per schedule or task. Letters, digits and hyphens.",
            "default": "default"
          },
          "baselineDatasetId": {
            "title": "Compare with dataset (optional)",
            "type": "string",
            "description": "Instead of the saved state, compare with the dataset of an earlier run of this Actor (its company rows hold each board's open jobs). Companies not in that dataset start a new baseline."
          },
          "updateState": {
            "title": "Save this run as the new baseline",
            "type": "boolean",
            "description": "After a company's changes are all saved, store its current open jobs so the next run starts from here. Not done for a company whose changes were cut off by Max results or your maximum cost per run.",
            "default": true
          },
          "currentJobsOnFirstRun": {
            "title": "List current jobs on a company's first check",
            "type": "boolean",
            "description": "On a company's first check (no baseline yet), also save one row per open job matching your filters, with changeType \"current\". These rows are free (only the company check is charged). Later runs list only opened and closed jobs. Uses the room left under Max job changes.",
            "default": true
          },
          "maxResults": {
            "title": "Max job changes",
            "minimum": 0,
            "type": "integer",
            "description": "Stop saving job rows after this many (0 = no limit). Opened and closed jobs count first; current jobs listed on a first check use the room that is left. Company rows are always saved for companies that were checked. Your maximum cost per run also stops the run.",
            "default": 1000
          },
          "maxConcurrency": {
            "title": "Companies in parallel",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many boards to read at once. Requests to the same job-board host are spaced at least 0.5 s apart regardless.",
            "default": 3
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}