{
  "openapi": "3.0.1",
  "info": {
    "title": "Greenhouse, Lever & Ashby Jobs Scraper (Only New)",
    "description": "Job scraper for public ATS career boards (Greenhouse, Lever, Ashby): one clean schema, optional feed mode returning only postings new since the last run.",
    "version": "1.0",
    "x-build-id": "6ET2Hs58uQNjE3u36"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/far003~company-jobs-feed/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-far003-company-jobs-feed",
        "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/far003~company-jobs-feed/runs": {
      "post": {
        "operationId": "runs-sync-far003-company-jobs-feed",
        "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/far003~company-jobs-feed/run-sync": {
      "post": {
        "operationId": "run-sync-far003-company-jobs-feed",
        "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": [
          "companies"
        ],
        "properties": {
          "companies": {
            "title": "Companies",
            "type": "array",
            "description": "One entry per company: the company's website or careers page (e.g. careers.stripe.com), the URL of its public job board (e.g. https://jobs.lever.co/spotify), or source:company (e.g. greenhouse:airbnb). Supported sources: greenhouse, lever, ashby, workable, teamtailor. For a website the Actor finds the board by trying the company name on each supported ATS.",
            "items": {
              "type": "string"
            }
          },
          "onlyNew": {
            "title": "Only new postings",
            "type": "boolean",
            "description": "Return only postings that appeared since the last run with the same Feed name. Schedule the Actor and each run gives you just what is new. You are charged only for postings delivered. Note: the first run delivers (and charges) every open posting that matches your filters, unless you also turn on \"Skip existing postings on the first run\".",
            "default": false
          },
          "baselineOnFirstRun": {
            "title": "Skip existing postings on the first run",
            "type": "boolean",
            "description": "With \"Only new postings\" on: the first run for a company only records every posting currently listed and delivers nothing (and charges nothing). Later runs deliver only what appeared after that, whatever filters you use then.",
            "default": false
          },
          "stateKey": {
            "title": "Feed name",
            "type": "string",
            "description": "Name of the memory used by \"Only new postings\". Use different names for independent feeds (for example one per filter set): a new name starts a new feed with its own first run. Letters, digits, _ and - only.",
            "default": "default"
          },
          "titleKeywords": {
            "title": "Title contains any of",
            "type": "array",
            "description": "Keep a posting only if its title contains at least one of these words or phrases (case-insensitive). A keyword matches whole words, with their usual endings: \"engineer\" finds Engineer, Engineers and Engineering, \"intern\" finds Intern and Internship but not Internal. A word of up to 3 letters (AI, ML) must be the whole word. End a keyword with * to match any ending (\"data*\" finds Database). Empty = no title filter.",
            "items": {
              "type": "string"
            }
          },
          "excludeTitleKeywords": {
            "title": "Title does not contain",
            "type": "array",
            "description": "Drop a posting if its title contains any of these words or phrases (case-insensitive). Same matching as above: \"intern\" drops Intern and Internship, not Internal or International.",
            "items": {
              "type": "string"
            }
          },
          "locationKeywords": {
            "title": "Location contains any of",
            "type": "array",
            "description": "Keep a posting only if one of its locations contains at least one of these words (case-insensitive), e.g. Berlin, Germany, EMEA. A country counts under every spelling (US = USA = United States, UK = United Kingdom), and a word of up to 3 letters must be a whole word.",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote only",
            "type": "boolean",
            "description": "Keep only postings marked as remote by the company (Greenhouse \"Workplace Type\" field, Lever/Ashby workplace type, Workable telecommuting flag, Teamtailor remote status, or a location label saying Remote). Postings with no workplace information are dropped.",
            "default": false
          },
          "postedWithinDays": {
            "title": "Posted within the last N days",
            "minimum": 1,
            "type": "integer",
            "description": "Keep only postings published in the last N days. Postings without a publication date are dropped when this is set."
          },
          "includeDescription": {
            "title": "Include description (plain text)",
            "type": "boolean",
            "description": "Add the full job description as clean plain text (descriptionText).",
            "default": true
          },
          "includeDescriptionHtml": {
            "title": "Include description (HTML)",
            "type": "boolean",
            "description": "Also add the original description HTML (descriptionHtml).",
            "default": false
          },
          "maxJobsPerCompany": {
            "title": "Max postings per company",
            "minimum": 1,
            "type": "integer",
            "description": "Deliver at most this many postings for each company: the most recently published ones. Empty = no limit."
          },
          "maxJobsTotal": {
            "title": "Max postings in total",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after delivering this many postings across all companies (each company's newest first, companies in the order of your list). Empty = no limit."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}