{
  "openapi": "3.0.1",
  "info": {
    "title": "Career Site Job Listings Scraper: Greenhouse, Lever & More",
    "description": "Turn any Greenhouse, Lever, Ashby or Workday careers URL into clean job data. Every posting comes back in one identical shape: title, company, department, location, ISO country, remote flag, salary range, full description and apply link. Mix boards freely. Pay per job returned.",
    "version": "0.0",
    "x-build-id": "ReMfwYGOtM7Uffeep"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nimait~career-site-job-listings-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nimait-career-site-job-listings-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/nimait~career-site-job-listings-scraper/runs": {
      "post": {
        "operationId": "runs-sync-nimait-career-site-job-listings-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/nimait~career-site-job-listings-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-nimait-career-site-job-listings-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": [
          "startUrls"
        ],
        "properties": {
          "startUrls": {
            "title": "Career board URLs",
            "type": "array",
            "description": "One URL per line. Copy them straight from the employer's careers page. Supported shapes: https://boards.greenhouse.io/{company}, https://jobs.lever.co/{company}, https://jobs.ashbyhq.com/{Company} (capitalisation matters here), https://{company}.wd5.myworkdayjobs.com/{SiteName}. A URL that is not recognised is reported in the log and the other boards still run. Boards are crawled in the order given, and the run stops itself before the run timeout — so with a long list, put the boards you care about most first, or split them across several runs.",
            "items": {
              "type": "string"
            }
          },
          "includeDescription": {
            "title": "Include job description",
            "type": "boolean",
            "description": "Adds the full job description to every record, both as HTML and as plain text. Workday is the exception worth knowing about: it only serves descriptions one job at a time, so turning this off skips a request per Workday job and makes those boards much faster and cheaper — but the description, publication date and country come back empty for Workday jobs. Greenhouse, Lever and Ashby are unaffected either way.",
            "default": true
          },
          "includeCompensation": {
            "title": "Include compensation",
            "type": "boolean",
            "description": "Adds a tidy salary object (minimum, maximum, currency, pay interval) whenever the employer publishes pay. Costs nothing extra: the pay data arrives with the job listing. Ashby boards publish pay most often, Lever rarely, Workday never.",
            "default": true
          },
          "maxJobsPerBoard": {
            "title": "Max jobs per board",
            "minimum": 0,
            "type": "integer",
            "description": "Stops after this many jobs from each board. It starts at 25 so your first run is quick and cheap — set it to 0 once you are happy, and every job on every board is returned. Worth keeping a limit on Workday boards: those cost one extra request per job when descriptions are on.",
            "default": 0
          },
          "maxRunTimeSecs": {
            "title": "Stop after this many seconds",
            "minimum": 0,
            "type": "integer",
            "description": "Safety stop. The Actor always finishes by itself shortly before the run timeout, so a long board list ends with a proper summary and the jobs it did collect instead of being killed. Set a number here to stop even sooner. Leave at 0 to use the run timeout.",
            "default": 0
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Leave this alone unless you have a reason not to. Datacenter proxy is included in your Apify plan and is all these job boards need — residential proxy would cost far more and buys you nothing here.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": []
            }
          },
          "fetchGreenhousePay": {
            "title": "Fetch Greenhouse pay ranges",
            "type": "boolean",
            "description": "Greenhouse publishes salary ranges only on each job's own page, so switching this on means one extra request per job. On a 500-job board that turns 1 request into 501 and makes the run noticeably slower and more expensive. Worth it only if you specifically need Greenhouse pay data — many Greenhouse boards publish none at all (in our testing roughly a third of jobs had pay data on the boards that publish any, and none on the boards that don't).",
            "default": false
          },
          "workdayDeepCrawl": {
            "title": "Workday deep crawl",
            "type": "boolean",
            "description": "Workday never returns more than 2,000 jobs for a single search, no matter how big the employer is. Switch this on and the Actor searches job category by job category and merges the results, which is the only way to get the rest. Cost: a 2,000-job Workday board takes about 100 listing requests; with deep crawl the same board takes roughly 150 or more, depending on how many categories it has. Only turn it on for employers with more than 2,000 open jobs — for everyone else it just adds requests.",
            "default": false
          },
          "includeRaw": {
            "title": "Include raw payload",
            "type": "boolean",
            "description": "Attaches the untouched job-board response to each record under \"raw\", for fields we do not map. Makes the dataset several times larger, so leave it off unless you need it.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}