{
  "openapi": "3.0.1",
  "info": {
    "title": "Greenhouse, Lever & Ashby Job Scraper & Monitor",
    "description": "Track job postings at your target companies. Get NEW, CHANGED and confirmed CLOSED events from Greenhouse, Lever and Ashby, with stable event IDs for deduplication. Ready for n8n and Slack. Free Actor; Apify platform usage applies.",
    "version": "1.0",
    "x-build-id": "zpb2AuKf5wq4VeIWc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/olegtestov~greenhouse-lever-ashby-job-changes/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-olegtestov-greenhouse-lever-ashby-job-changes",
        "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/olegtestov~greenhouse-lever-ashby-job-changes/runs": {
      "post": {
        "operationId": "runs-sync-olegtestov-greenhouse-lever-ashby-job-changes",
        "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/olegtestov~greenhouse-lever-ashby-job-changes/run-sync": {
      "post": {
        "operationId": "run-sync-olegtestov-greenhouse-lever-ashby-job-changes",
        "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 to watch",
            "type": "array",
            "description": "One company per line. Board URLs are most reliable; company names, domains and careers URLs are also accepted. Supported systems: Greenhouse, Lever and Ashby. Check each detected company before scheduling. Examples: https://job-boards.greenhouse.io/stripe, https://jobs.lever.co/palantir, https://jobs.ashbyhq.com/ramp, ramp.com, Stripe, greenhouse:stripe. Optional label: 'Stripe | stripe.com'.",
            "items": {
              "type": "string"
            }
          },
          "monitorId": {
            "title": "Monitor ID",
            "type": "string",
            "description": "Identifies this watchlist's saved history in your Apify account. Keep it unchanged for recurring checks. Choose another ID for a separate watchlist. Changing it starts a new baseline. Example: recruiter-watchlist.",
            "default": "default"
          },
          "emitBaselineOnFirstRun": {
            "title": "Show current jobs on the first run",
            "type": "boolean",
            "description": "Shows CURRENT rows so you can check your watchlist. Later runs return only changes. CURRENT rows are a baseline, not new-job alerts. On by default in Apify Console; API calls and tasks that leave it out keep it off.",
            "default": false
          },
          "mode": {
            "title": "Output mode",
            "enum": [
              "changes",
              "snapshot"
            ],
            "type": "string",
            "description": "'changes' (monitor): output only jobs that are NEW, CHANGED or CLOSED since the previous run with the same Monitor ID. 'snapshot': output every open job each run (plus CLOSED ones), each marked with its change type. Both modes are free to use; you pay only your Apify platform usage.",
            "default": "changes"
          },
          "includeChanged": {
            "title": "Report changed jobs",
            "type": "boolean",
            "description": "Output a CHANGED row when title, department, team, location, workplace type, employment type or salary changes. The row lists changedFields and previousValues.",
            "default": true
          },
          "includeClosed": {
            "title": "Report closed jobs",
            "type": "boolean",
            "description": "Output a CLOSED row when a job disappears from the board.",
            "default": true
          },
          "confirmClosedAfterRuns": {
            "title": "Confirm closure after N runs",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "A job is reported CLOSED after it has been missing in this many consecutive runs. Default 2. A job that reappears (also in the re-read done before closing) starts over. 1 = report after one missing run.",
            "default": 2
          },
          "allowMassClosures": {
            "title": "Report mass disappearances as closed",
            "type": "boolean",
            "description": "Off by default: when 3 or more jobs and more than 30% of a board vanish in one check, they are held as pending and no CLOSED rows are written, because a source that returns a cut-down list looks exactly the same. Turn on if you prefer to get those closures (after the usual number of missing runs).",
            "default": false
          },
          "titleKeywords": {
            "title": "Title must contain any of",
            "type": "array",
            "description": "Case-insensitive. Example: engineer, data, sales. Empty = all titles. Filters only reduce output rows. The Actor is free to use; you pay only your Apify platform usage.",
            "items": {
              "type": "string"
            }
          },
          "excludeTitleKeywords": {
            "title": "Title must not contain",
            "type": "array",
            "description": "Case-insensitive. Example: intern, senior.",
            "items": {
              "type": "string"
            }
          },
          "locationKeywords": {
            "title": "Location contains any of",
            "type": "array",
            "description": "Case-insensitive match on locations and workplace type. Example: Spain, Madrid, remote.",
            "items": {
              "type": "string"
            }
          },
          "departmentKeywords": {
            "title": "Department or team contains any of",
            "type": "array",
            "description": "Case-insensitive. Example: engineering, marketing.",
            "items": {
              "type": "string"
            }
          },
          "includeDescription": {
            "title": "Include job description",
            "type": "boolean",
            "description": "Off by default. Turn on to add the plain-text job description. Email addresses and phone numbers are always removed from it.",
            "default": false
          },
          "maxDescriptionChars": {
            "title": "Max description length",
            "minimum": 0,
            "type": "integer",
            "description": "Cut descriptions to this many characters. 0 = no limit.",
            "default": 0
          },
          "guessFromDomain": {
            "title": "Guess the board from the domain",
            "type": "boolean",
            "description": "If no Greenhouse, Lever or Ashby link is found on the company's careers page, try the company or domain name as a board name. Such rows have detection = 'slug-guess'.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Companies in parallel",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many companies are checked at the same time. Requests to one ATS host are always rate-limited.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Not needed: the job-board APIs are public. Use only if your network is blocked.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}