{
  "openapi": "3.0.1",
  "info": {
    "title": "Greenhouse, Lever, Ashby & Workday Jobs API (ATS Scraper)",
    "description": "Get every open job from any company's career page in ONE clean schema. Auto-detects Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, Personio and Workday from a URL or domain. Salary, remote, location, keyword and date filters plus delta mode (only new jobs).",
    "version": "0.1",
    "x-build-id": "d6Gm73BStdH86uABh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/gazidev~ats-jobs-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-gazidev-ats-jobs-api",
        "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/gazidev~ats-jobs-api/runs": {
      "post": {
        "operationId": "runs-sync-gazidev-ats-jobs-api",
        "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/gazidev~ats-jobs-api/run-sync": {
      "post": {
        "operationId": "run-sync-gazidev-ats-jobs-api",
        "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": {
          "targets": {
            "title": "Companies (URLs, domains or ats:slug)",
            "type": "array",
            "description": "One company per line. Accepts: a job-board URL (https://jobs.lever.co/palantir, https://boards.greenhouse.io/airbnb, https://jobs.ashbyhq.com/ramp, https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite ...), a company career page (https://www.notion.so/careers), a bare domain (stripe.com — the ATS is auto-detected from the career page or by probing each ATS), or a shorthand like greenhouse:airbnb, lever:spotify, ashby:openai, workable:huggingface, smartrecruiters:Ubisoft2, recruitee:bunq, personio:1komma5grad.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "companies": {
            "title": "Companies (explicit JSON entries)",
            "type": "array",
            "description": "Optional. Explicit entries when you already know the ATS, e.g. [{\"ats\": \"greenhouse\", \"slug\": \"stripe\"}, {\"ats\": \"workday\", \"url\": \"https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite\", \"company\": \"NVIDIA\"}]. Supported ats values: greenhouse, lever, ashby, workable, smartrecruiters, recruitee, personio, workday. \"company\" overrides the display name.",
            "default": []
          },
          "keywords": {
            "title": "Keywords (any)",
            "type": "array",
            "description": "Keep a job if ANY keyword matches its title, department or team (case/accent-insensitive whole words; trailing * = prefix, e.g. \"engineer*\"). Empty = all jobs.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop jobs whose title contains any of these words (e.g. \"intern\", \"senior\").",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "searchInDescription": {
            "title": "Match keywords in description too",
            "type": "boolean",
            "description": "Also match keywords against the full job description (broader, noisier). Off = title/department/team only.",
            "default": false
          },
          "locations": {
            "title": "Locations (any)",
            "type": "array",
            "description": "Keep a job if ANY of these strings appears in its locations or country (substring, case-insensitive), e.g. \"London\", \"Germany\", \"New York\". \"remote\" also matches jobs flagged remote. Empty = all locations.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Only jobs flagged remote by the ATS or with 'Remote' in their location/title.",
            "default": false
          },
          "postedWithinDays": {
            "title": "Posted within last N days",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Only jobs posted (or, if the ATS has no posting date, updated) in the last N days. Empty = no date filter."
          },
          "onlyNew": {
            "title": "Delta mode: only jobs not seen in previous runs",
            "type": "boolean",
            "description": "Remembers delivered jobs in a named key-value store (ats-jobs-api-state), keyed by your companies + filters. Scheduled runs then output (and charge) only newly posted jobs. The first run returns everything that matches.",
            "default": false
          },
          "stateKey": {
            "title": "Delta state key (optional)",
            "type": "string",
            "description": "Custom name for the delta memory, so you can edit companies/filters and keep the history. Default: derived automatically from companies + filters."
          },
          "includeDescription": {
            "title": "Include job description",
            "type": "boolean",
            "description": "Add description_html and description_text to each job. Off keeps the dataset small. (SmartRecruiters needs one extra request per job for this.)",
            "default": false
          },
          "maxJobsPerCompany": {
            "title": "Max jobs per company",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Safety cap per job board (applied before filters for most ATSs; after title/date pre-filter for Workday).",
            "default": 2000
          },
          "maxItems": {
            "title": "Max jobs in total",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stop after this many jobs are output (you are charged per job output).",
            "default": 10000
          },
          "guessSlugs": {
            "title": "Probe ATS APIs when a domain's career page shows no ATS",
            "type": "boolean",
            "description": "For bare domains: if the career page has no recognisable ATS link, try the domain name (e.g. stripe.com -> 'stripe') on each ATS's public board API. Detection method is reported per company in the OUTPUT record.",
            "default": true
          },
          "workdayFetchDetails": {
            "title": "Workday: fetch job details",
            "type": "boolean",
            "description": "Workday job lists only carry title, a location summary and a relative date. With this on (recommended), each matching job's detail is fetched for all locations, exact posting date, time type and description. Keyword filters are applied first (and sent to Workday search), so only relevant jobs cost a request.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}