{
  "openapi": "3.0.1",
  "info": {
    "title": "Greenhouse Jobs Scraper - Any Company's Job Board",
    "description": "All open jobs from any company's Greenhouse job board, with departments, offices and pay ranges where published.",
    "version": "0.1",
    "x-build-id": "6DJAf8B7p1VOTfZhs"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/afterstar~greenhouse-jobs/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-afterstar-greenhouse-jobs",
        "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/afterstar~greenhouse-jobs/runs": {
      "post": {
        "operationId": "runs-sync-afterstar-greenhouse-jobs",
        "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/afterstar~greenhouse-jobs/run-sync": {
      "post": {
        "operationId": "run-sync-afterstar-greenhouse-jobs",
        "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": {
          "boards": {
            "title": "Greenhouse job boards",
            "type": "array",
            "description": "One per line: `stripe` or `https://job-boards.greenhouse.io/stripe`.",
            "items": {
              "type": "string"
            }
          },
          "companyNames": {
            "title": "Company names (optional)",
            "type": "array",
            "description": "Type company names instead of links, like Stripe or SpaceX. Each name is matched to a board's name or its address in our directory of 4,175 public Greenhouse job boards (found in Common Crawl's public index, 2026-08 to 2026-09, and checked live on 2026-10-05). A name with several boards takes the one with the most open jobs. One free row per name shows the board it was matched to and any others with that name; a name we don't know gives a free row too. If it's not the right board, paste the careers page or job board link instead.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords (optional)",
            "type": "array",
            "description": "Only jobs whose title (or title and description, see below) contains one of these words. Short keywords (up to 3 letters, like AI, IT, HR, Go) match whole words only; 4-5 letters match the start of a word ('Java' finds 'JavaScript'); longer ones match anywhere ('Entwickler' finds 'Softwareentwickler').",
            "items": {
              "type": "string"
            }
          },
          "keywordScope": {
            "title": "Search keywords in",
            "enum": [
              "title",
              "titleAndDescription"
            ],
            "type": "string",
            "description": "Where the keywords must appear.",
            "default": "title"
          },
          "locationContains": {
            "title": "Location contains (any of)",
            "type": "array",
            "description": "Only jobs where one of these appears as whole words in the location text or the country the board gives, like Germany, Berlin, Remote or US. A country name or code also matches the board's country field (Germany = DE) and the country's name in the location text. Accents don't matter (Zurich = Zürich). Country codes (US, DE, UK) and short words typed in capitals match only in capitals; other short names (Zug, Ulm) match in any case. US state codes look like country codes (CA, DE, IN), so full country names are safer. A board that lists only a city (Berlin) without a country is matched by the city, not by Germany.",
            "items": {
              "type": "string"
            }
          },
          "excludeLocations": {
            "title": "Exclude locations (optional)",
            "type": "array",
            "description": "Drop jobs whose country field matches one of these, or whose every listed location contains one (whole words), like United States or London. A job also open in another place stays; regions like EMEA or North America count as another place, and an entry that only says Remote doesn't. A board that writes only a city (San Francisco, CA) without a country is not dropped by United States.",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote only",
            "type": "boolean",
            "description": "Only jobs the board marks remote, with a remote workplace type, or with 'remote' in the location text. Anything marked hybrid is left out.",
            "default": false
          },
          "postedAfter": {
            "title": "Posted on or after (optional)",
            "type": "string",
            "description": "A date like 2026-10-01. Jobs without a posting date are kept."
          },
          "postedBefore": {
            "title": "Posted on or before (optional)",
            "type": "string",
            "description": "A date like 2026-10-31."
          },
          "minSalary": {
            "title": "Minimum salary (optional)",
            "minimum": 0,
            "type": "integer",
            "description": "Only jobs whose top of the salary range reaches this number (any currency, as published). Jobs without salary are kept unless you tick the next box."
          },
          "onlyWithSalary": {
            "title": "Only jobs with a published salary",
            "type": "boolean",
            "description": "Drop jobs that publish no salary (works on its own or with a minimum salary).",
            "default": false
          },
          "maxItems": {
            "title": "Max jobs per board",
            "minimum": 1,
            "type": "integer",
            "description": "The most jobs per board in one run (no fixed cap; default 10,000).",
            "default": 10000
          },
          "outputMode": {
            "title": "Output mode",
            "enum": [
              "all",
              "new",
              "changes"
            ],
            "type": "string",
            "description": "'All' lists everything found now. 'Only new' lists results never seen in earlier runs. 'New, changed and removed' also lists results that changed or disappeared. The first scheduled run counts everything as new; use 'Baseline only' to start cheaply.",
            "default": "all"
          },
          "baselineOnly": {
            "title": "Baseline only (remember the current results, output nothing)",
            "type": "boolean",
            "description": "Saves what exists now without listing it, so the next scheduled run shows only what's new. Charged like a run with nothing new.",
            "default": false
          },
          "stateKey": {
            "title": "Memory name (optional)",
            "type": "string",
            "description": "Leave empty: each saved task keeps its own memory. Set a name to share one memory between tasks, or a new name to start over.",
            "default": ""
          },
          "resetState": {
            "title": "Forget earlier runs",
            "type": "boolean",
            "description": "Starts from an empty memory: every result counts as new again.",
            "default": false
          },
          "webhookUrl": {
            "title": "Webhook URL (optional)",
            "type": "string",
            "description": "We POST a summary plus up to 100 new, changed or removed results here when something changed. Works with Slack incoming webhooks (choose the Slack format), Zapier, Make and n8n.",
            "default": ""
          },
          "webhookFormat": {
            "title": "Webhook format",
            "enum": [
              "json",
              "slack"
            ],
            "type": "string",
            "description": "JSON for automation tools; 'Slack message' sends one line of text.",
            "default": "json"
          },
          "webhookAlways": {
            "title": "Call the webhook on every run",
            "type": "boolean",
            "description": "By default the webhook is called only when something changed or a source failed.",
            "default": false
          },
          "keepContactsInText": {
            "title": "Keep emails and phone numbers in texts",
            "type": "boolean",
            "description": "By default, emails and phone numbers inside free text (like job descriptions) are replaced by [redacted].",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}