{
  "openapi": "3.0.1",
  "info": {
    "title": "Hiring Change Monitor — Track New & Removed Jobs",
    "description": "Monitor public company career pages and ATS boards (Greenhouse, Lever, Ashby, Workday-style sites) for hiring changes. Detect new, removed, reopened, and changed job posts as clean, CSV-friendly hiring-signal events.",
    "version": "1.0",
    "x-build-id": "RK5iPpkM3a04X4MDa"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/coregent~hiring-change-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-coregent-hiring-change-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/coregent~hiring-change-monitor/runs": {
      "post": {
        "operationId": "runs-sync-coregent-hiring-change-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/coregent~hiring-change-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-coregent-hiring-change-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",
        "properties": {
          "startUrls": {
            "title": "Career-board URLs",
            "type": "array",
            "description": "Company career pages and ATS board URLs to monitor — Greenhouse (boards.greenhouse.io/{company}), Lever (jobs.lever.co/{company}), Ashby (jobs.ashbyhq.com/{company}), Workday-style career sites, or generic career pages. Provide at least one of Career-board URLs or Company domains.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "companyDomains": {
            "title": "Company domains",
            "type": "array",
            "description": "Optional. Company domains (e.g. \"canva.com\") to discover careers pages for when the exact board URL is unknown. The actor probes the homepage and common careers paths and follows links to supported ATS boards only — no deep crawling.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "monitorId": {
            "title": "Monitor ID",
            "type": "string",
            "description": "Stable namespace for the snapshot used across scheduled runs. Reuse the same value to keep comparing against prior runs. Leave empty to derive a deterministic ID from your inputs.",
            "default": ""
          },
          "maxResults": {
            "title": "Max current jobs",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of current job records to process across all sources before change comparison. Range 1–10000.",
            "default": 1000
          },
          "maxChanges": {
            "title": "Max saved records",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of records saved to the dataset (and charged) per run. In 'All current jobs' mode this caps the total rows; in 'Changes only' mode it caps the change events. Range 1–10000.",
            "default": 1000
          },
          "outputMode": {
            "title": "Output mode",
            "enum": [
              "all",
              "changes"
            ],
            "type": "string",
            "description": "What each run returns. 'All current jobs' returns every job currently on the board, each tagged with change_type (new/changed/reopened/unchanged), plus jobs that were removed since the last run — so output is never empty and you are charged per saved record. 'Changes only' returns just the differences versus the previous run (new/removed/reopened/changed) and suppresses unchanged jobs — leaner and ideal for scheduled monitoring.",
            "default": "all"
          },
          "changeTypes": {
            "title": "Change types (optional filter)",
            "type": "array",
            "description": "Optionally restrict output to specific change types. Leave empty to use the Output mode default (all types in 'All current jobs' mode; new/removed/reopened/changed in 'Changes only' mode). Unknown values are ignored.",
            "items": {
              "type": "string",
              "enum": [
                "new",
                "removed",
                "reopened",
                "changed",
                "unchanged"
              ],
              "enumTitles": [
                "New",
                "Removed",
                "Reopened",
                "Changed",
                "Unchanged"
              ]
            },
            "default": []
          },
          "keywordFilter": {
            "title": "Keyword filter (include)",
            "type": "array",
            "description": "Keep only jobs whose title, department, location, description, company, or reason tags contain one of these terms (case-insensitive). Leave empty to keep all.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeKeywordFilter": {
            "title": "Keyword filter (exclude)",
            "type": "array",
            "description": "Exclude jobs matching any of these terms (case-insensitive), for example \"intern\". Exclusion wins over inclusion.",
            "default": [
              "intern"
            ],
            "items": {
              "type": "string"
            }
          },
          "departmentFilter": {
            "title": "Department filter",
            "type": "array",
            "description": "Keep only jobs in matching departments/teams (case-insensitive). A job with no department is dropped when this filter is set.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "locationFilter": {
            "title": "Location filter",
            "type": "array",
            "description": "Keep only jobs in matching locations (case-insensitive). A job with no location is dropped when this filter is set.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote only",
            "type": "boolean",
            "description": "Keep only remote or hybrid-remote postings.",
            "default": false
          },
          "includeDescriptionText": {
            "title": "Include job descriptions",
            "type": "boolean",
            "description": "Include the normalized plain-text job description. Turning this off makes runs leaner; descriptions are still used for change fingerprinting when cheaply available.",
            "default": true
          },
          "includeCompensation": {
            "title": "Include compensation",
            "type": "boolean",
            "description": "Include public compensation fields when the source exposes them (e.g. Lever salary ranges, Ashby compensation). No paid enrichment.",
            "default": true
          },
          "saveSnapshot": {
            "title": "Save snapshot",
            "type": "boolean",
            "description": "Store the current snapshot for the next run. Turn off for a dry comparison that does not update stored state.",
            "default": true
          },
          "deduplicate": {
            "title": "Deduplicate jobs",
            "type": "boolean",
            "description": "Remove duplicate jobs across inputs by job ID, canonical URL, then normalized title/company/location/department.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy configuration. Defaults to Apify Proxy enabled. Apify Residential is NOT supported and will fail the run at startup; if you need residential routing, supply your own provider via Custom proxy URLs (proxyUrls).",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}