{
  "openapi": "3.0.1",
  "info": {
    "title": "Greenhouse Jobs Scraper API & Hiring Monitor",
    "description": "Greenhouse jobs scraper API for complete live company boards. Export jobs with salary, remote, seniority and country fields, or monitor verified new, updated, closed and reopened vacancies. Uses the official public Job Board API; no login, browser or proxy.",
    "version": "0.1",
    "x-build-id": "WYaSSB94JPP3ooS3U"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automa-flow~greenhouse-jobs-hiring-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automa-flow-greenhouse-jobs-hiring-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/automa-flow~greenhouse-jobs-hiring-monitor/runs": {
      "post": {
        "operationId": "runs-sync-automa-flow-greenhouse-jobs-hiring-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/automa-flow~greenhouse-jobs-hiring-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-automa-flow-greenhouse-jobs-hiring-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": [
          "boards"
        ],
        "properties": {
          "boards": {
            "title": "Companies to scrape",
            "minItems": 1,
            "maxItems": 100,
            "type": "array",
            "description": "Greenhouse board tokens or board URLs, one per line. The token is the last part of the board URL: job-boards.greenhouse.io/stripe means the token is stripe. Up to 100 companies per run.",
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "snapshot",
              "monitor"
            ],
            "type": "string",
            "description": "Get all jobs returns every live vacancy and touches no monitoring state. Monitor changes compares each board with its last complete successful run and reports what is new, changed, closed or reopened.",
            "default": "snapshot"
          },
          "outputMode": {
            "title": "Job output",
            "enum": [
              "all",
              "changesOnly"
            ],
            "type": "string",
            "description": "All jobs returns every current vacancy. Changes only omits UNCHANGED jobs, which is what makes a scheduled monitoring run small and cheap. Company summaries and closures are always returned.",
            "default": "all"
          },
          "includeDescription": {
            "title": "Include job descriptions",
            "type": "boolean",
            "description": "Return normalized description HTML and plain text and include them in change detection. Costs no extra requests: Greenhouse returns descriptions in the same board response.",
            "default": false
          },
          "includePayTransparency": {
            "title": "Include pay transparency",
            "type": "boolean",
            "description": "Request and normalize published pay ranges, and fill salaryMin, salaryMax, salaryCurrency and salaryPeriod. Uses the same board request, not one request per job.",
            "default": true
          },
          "filters": {
            "title": "Filters",
            "type": "object",
            "description": "Narrow which job rows are written. Filters never affect monitoring: the snapshot and the company summary always describe the whole board, so filtering can never invent a NEW or a CLOSED job.",
            "properties": {
              "titleIncludes": {
                "title": "Title contains any of",
                "type": "array",
                "editor": "stringList",
                "description": "Case-insensitive substrings. A job is kept if its title contains at least one."
              },
              "titleExcludes": {
                "title": "Title contains none of",
                "type": "array",
                "editor": "stringList",
                "description": "Case-insensitive substrings. A job is dropped if its title contains any of them."
              },
              "locationIncludes": {
                "title": "Location contains any of",
                "type": "array",
                "editor": "stringList",
                "description": "Case-insensitive substrings matched against the raw location and the parsed city names."
              },
              "departments": {
                "title": "Departments",
                "type": "array",
                "editor": "stringList",
                "description": "Exact department names as published by the board, case-insensitive."
              },
              "countries": {
                "title": "Countries",
                "type": "array",
                "editor": "stringList",
                "description": "ISO 3166-1 alpha-2 codes, for example US, GB, DE. Matched against the countries parsed out of the location string."
              },
              "remoteTypes": {
                "title": "Remote type",
                "type": "array",
                "editor": "select",
                "items": {
                  "type": "string",
                  "enum": [
                    "remote",
                    "hybrid",
                    "onsite"
                  ]
                },
                "description": "Jobs whose wording gives no signal have no remote type and are excluded when this filter is set."
              },
              "seniorities": {
                "title": "Seniority",
                "type": "array",
                "editor": "select",
                "items": {
                  "type": "string",
                  "enum": [
                    "intern",
                    "entry",
                    "junior",
                    "senior",
                    "staff",
                    "principal",
                    "director",
                    "vp",
                    "executive"
                  ]
                },
                "description": "Derived from the job title. Titles with no level word have no seniority and are excluded when this filter is set."
              },
              "withSalaryOnly": {
                "title": "Only jobs with a published salary",
                "type": "boolean",
                "description": "Keep only jobs that published a pay range. Requires pay transparency to stay enabled.",
                "default": false
              },
              "publishedAfter": {
                "title": "First published after",
                "type": "string",
                "editor": "datepicker",
                "description": "ISO date or timestamp. Jobs with an unknown publication date are excluded when this filter is set."
              }
            }
          },
          "boardAliases": {
            "title": "Your own IDs per company",
            "type": "object",
            "description": "Optional map of board token to your own identifier, for example {\"stripe\": \"account-1041\"}. Echoed into every result as externalId so results join back to your CRM or watchlist. Never sent to Greenhouse."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}