{
  "openapi": "3.0.1",
  "info": {
    "title": "Greenhouse Jobs Scraper – Job Listings by Company Board",
    "description": "Job listings from Greenhouse job boards by company: title, departments, offices, publication date, full ad text, published pay ranges. Many boards per run, keyword and location filters, only new jobs on schedules. Public API, no login, no personal data.",
    "version": "1.1",
    "x-build-id": "aRYpXHbccY0Oi4gpa"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rowcraft~greenhouse-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rowcraft-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/rowcraft~greenhouse-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-rowcraft-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/rowcraft~greenhouse-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-rowcraft-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",
        "properties": {
          "companies": {
            "title": "Companies",
            "type": "array",
            "description": "Greenhouse board names or addresses, one per line: \"stripe\", \"https://job-boards.greenhouse.io/stripe\", \"https://boards.greenhouse.io/gitlab\", or a job link (then only that job). The board name is the last part of the company's job-board address.",
            "items": {
              "type": "string"
            }
          },
          "lists": {
            "title": "Ready-made company lists",
            "type": "array",
            "description": "Lists of companies verified on the public career-site APIs and refreshed with every release (by country of their open jobs, by industry, or every company on a system). Combine with the filters below to search across all of them in one run.",
            "items": {
              "type": "string",
              "enum": [
                "europe",
                "united-kingdom",
                "germany",
                "france",
                "spain",
                "ireland",
                "poland",
                "netherlands",
                "sweden",
                "nordics",
                "dach",
                "benelux",
                "remote",
                "united-states",
                "canada",
                "india",
                "mexico",
                "brazil",
                "australia",
                "singapore",
                "argentina",
                "colombia",
                "japan",
                "israel",
                "south-korea",
                "morocco",
                "industry-b2b",
                "industry-healthcare",
                "industry-fintech",
                "industry-industrials",
                "all-greenhouse"
              ],
              "enumTitles": [
                "Europe (53 companies)",
                "United Kingdom (40 companies)",
                "Germany (11 companies)",
                "France (7 companies)",
                "Spain (9 companies)",
                "Ireland (7 companies)",
                "Poland (10 companies)",
                "Netherlands (7 companies)",
                "Sweden (5 companies)",
                "Nordics (7 companies)",
                "DACH (12 companies)",
                "Benelux (8 companies)",
                "Remote jobs (107 companies)",
                "United States (160 companies)",
                "Canada (70 companies)",
                "India (20 companies)",
                "Mexico (12 companies)",
                "Brazil (9 companies)",
                "Australia (14 companies)",
                "Singapore (9 companies)",
                "Argentina (5 companies)",
                "Colombia (12 companies)",
                "Japan (9 companies)",
                "Israel (10 companies)",
                "South Korea (5 companies)",
                "Morocco (10 companies)",
                "B2B companies (42 companies)",
                "Healthcare companies (12 companies)",
                "Fintech companies (10 companies)",
                "Industrials companies (12 companies)",
                "Every Greenhouse company we know (199 companies)"
              ]
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Keep jobs whose title contains any of these words, e.g. \"engineer\", \"sales\" (case-insensitive). Turn on the option below to search the ad text too; department names go in \"Departments or teams\".",
            "items": {
              "type": "string"
            }
          },
          "keywordsInDescription": {
            "title": "Search keywords in the ad text too",
            "type": "boolean",
            "description": "Also match the keywords in the full description (slower on systems that need a detail request).",
            "default": false
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Keep jobs in any of these countries, country codes, regions or cities, e.g. \"Germany\", \"DE\", \"London\", \"California\". Add \"remote\" to also keep remote jobs.",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Keep only jobs marked remote.",
            "default": false
          },
          "departments": {
            "title": "Departments or teams",
            "type": "array",
            "description": "Keep jobs whose department or team contains any of these words.",
            "items": {
              "type": "string"
            }
          },
          "employmentTypes": {
            "title": "Employment types",
            "type": "array",
            "description": "Keep only these employment types (values the systems do not publish are kept as written).",
            "items": {
              "type": "string",
              "enum": [
                "Full-time",
                "Part-time",
                "Contract",
                "Internship",
                "Temporary",
                "Apprenticeship"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Internship",
                "Temporary",
                "Apprenticeship"
              ]
            }
          },
          "postedAfter": {
            "title": "Published on or after",
            "type": "string",
            "description": "YYYY-MM-DD, or relative: \"today\", \"yesterday\", \"7 days\", \"2 weeks\"."
          },
          "withSalaryOnly": {
            "title": "Only jobs with a published salary",
            "type": "boolean",
            "description": "Keep only jobs where the employer publishes a salary or pay range.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum job ads",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many jobs in total. 0 = no limit.",
            "default": 1000
          },
          "maxItemsPerCompany": {
            "title": "Maximum job ads per company",
            "minimum": 0,
            "type": "integer",
            "description": "0 = no limit. Jobs come in the order of the company's career page.",
            "default": 0
          },
          "includeDetails": {
            "title": "Include published pay ranges (one extra request per job)",
            "type": "boolean",
            "description": "On (default): one extra request per job reads the pay ranges an employer publishes (US pay-transparency fields). The board itself has no pay data. Off: one request per board, faster.",
            "default": true
          },
          "includeHtml": {
            "title": "Include HTML versions of the texts",
            "type": "boolean",
            "description": "Adds the description (and requirements and benefits where separated) as HTML, with contact links removed. Plain text is always included.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new rows since the last run",
            "type": "boolean",
            "description": "Remember the rows already delivered to you (in a key-value store in your Apify account) and deliver only rows that appeared since the last run with the same state key. The first run delivers everything that matches; later runs cost only the new rows. Ideal for schedules.",
            "default": false
          },
          "stateName": {
            "title": "State name",
            "type": "string",
            "description": "Name of the memory used by \"Only new rows\". Use a different name for each schedule or search (for example `stockholm-python`) so they do not share one memory.",
            "default": "default"
          },
          "notifyUrl": {
            "title": "Notify this URL when the run ends",
            "type": "string",
            "description": "A webhook address that receives one JSON POST with the number of new rows and links to the dataset: a Slack or Discord incoming webhook, a Make, n8n or Zapier catch hook, or your own endpoint. The message is also in the `text` (Slack) and `content` (Discord) fields."
          },
          "notifyWhenEmpty": {
            "title": "Notify also when there are no new rows",
            "type": "boolean",
            "description": "By default the notification is sent only when at least one row was delivered.",
            "default": false
          },
          "requestIntervalMs": {
            "title": "Delay between requests (ms)",
            "minimum": 250,
            "maximum": 10000,
            "type": "integer",
            "description": "Default 1000 ms (one request per second). Minimum 250.",
            "default": 1000
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}