{
  "openapi": "3.0.1",
  "info": {
    "title": "Greenhouse Jobs Scraper: Job Boards, Salaries & New Jobs",
    "description": "Export every open job from any company's Greenhouse job board: title, location, departments, offices, full description, pay ranges, publish dates and requisition IDs. Filter by keyword, location or department, or monitor boards and get only new jobs. Official public API, no login.",
    "version": "0.0",
    "x-build-id": "jZ74B5DRm1OtmmCV7"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/winterlock~greenhouse-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-winterlock-greenhouse-jobs-scraper",
        "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/winterlock~greenhouse-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-winterlock-greenhouse-jobs-scraper",
        "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/winterlock~greenhouse-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-winterlock-greenhouse-jobs-scraper",
        "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": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "What to scrape",
            "enum": [
              "jobs",
              "jobDetails"
            ],
            "type": "string",
            "description": "Every open job on one or more company job boards, or specific jobs by link or ID.",
            "default": "jobs"
          },
          "boards": {
            "title": "Job boards",
            "type": "array",
            "description": "Board tokens (airbnb, discord) or links: boards.greenhouse.io/airbnb, job-boards.greenhouse.io/discord, an embed link (…/embed/job_board?for=airbnb) or any job link on the board. The token is the part after boards.greenhouse.io/ in a company's job links.",
            "items": {
              "type": "string"
            }
          },
          "maxJobsPerBoard": {
            "title": "Max jobs per board",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "For All jobs. The newest jobs are kept first. Raise it to take whole boards; the biggest boards list around 1,000 open jobs.",
            "default": 100
          },
          "keywords": {
            "title": "Title keywords",
            "type": "array",
            "description": "For All jobs. Keep jobs whose title contains any of these words (whole words, any case). End a word with * to match any ending: engineer* matches Engineer and Engineering.",
            "items": {
              "type": "string"
            }
          },
          "searchDescriptions": {
            "title": "Also search descriptions for the keywords",
            "type": "boolean",
            "description": "Match the title keywords against the full job description as well as the title.",
            "default": false
          },
          "excludeKeywords": {
            "title": "Exclude title keywords",
            "type": "array",
            "description": "Drop jobs whose title contains any of these words, for example intern or senior.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Keep jobs whose location or office matches any of these (whole words): Remote, London, New York, US.",
            "items": {
              "type": "string"
            }
          },
          "departments": {
            "title": "Departments",
            "type": "array",
            "description": "Keep jobs in a department whose name matches any of these (whole words), for example Engineering or Sales.",
            "items": {
              "type": "string"
            }
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Keep jobs first published in the last N days. Leave empty for any date."
          },
          "onlyNewJobs": {
            "title": "Only new jobs since the last run (monitoring)",
            "type": "boolean",
            "description": "Remembers every job each board listed, and on later runs returns only jobs that were not there before. The first run returns the current jobs. Schedule the Actor daily to get a feed of new postings and pay only for those.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Optional. Keeps a separate memory for this name, so two scheduled tasks watching the same board (say, one for engineers and one for sales) each get their own new jobs. Change it to start a fresh baseline."
          },
          "jobUrls": {
            "title": "Job links or IDs",
            "type": "array",
            "description": "For Specific jobs. Greenhouse job links (job-boards.greenhouse.io/discord/jobs/8806482002), embed links (…/embed/job_app?for=airbnb&token=123), board:jobId pairs (airbnb:7943874), bare job IDs, or a company careers-site link with ?gh_jid=. A job that has closed comes back as a free row with found=false.",
            "items": {
              "type": "string"
            }
          },
          "defaultBoard": {
            "title": "Board for bare job IDs",
            "type": "string",
            "description": "For Specific jobs. The board token used for bare job IDs and for careers-site links that do not name the board. Without it, the board is guessed from the link's domain and checked against Greenhouse."
          },
          "includePayRanges": {
            "title": "Include pay ranges",
            "type": "boolean",
            "description": "Adds the posted pay ranges (pay transparency). For All jobs this costs one extra request per job saved; Specific jobs always include them.",
            "default": true
          },
          "includeDescription": {
            "title": "Include plain-text description",
            "type": "boolean",
            "description": "The full job description as readable text.",
            "default": true
          },
          "includeDescriptionHtml": {
            "title": "Include description HTML",
            "type": "boolean",
            "description": "The description as the original HTML, for re-publishing it with its formatting.",
            "default": true
          },
          "includeCustomFields": {
            "title": "Include custom fields",
            "type": "boolean",
            "description": "Board-defined fields the company exposes publicly, such as Workplace Type, Time Type or Career Track.",
            "default": true
          },
          "includeContactEmails": {
            "title": "Include email addresses in custom fields",
            "type": "boolean",
            "description": "Custom fields whose value contains an email address (a recruiter's, for example) are left out unless this is on.",
            "default": false
          },
          "maxItems": {
            "title": "Max items in total",
            "minimum": 1,
            "type": "integer",
            "description": "Stop the run after saving this many items. Leave empty for no limit."
          },
          "maxConcurrency": {
            "title": "Max parallel requests",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many requests run at once. Mostly matters for pay ranges, which are one request per job.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Not needed for most runs. Greenhouse's Job Board API is public and serves anonymous traffic.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}