{
  "openapi": "3.0.1",
  "info": {
    "title": "Multi-ATS Job Scraper - Greenhouse, Lever, Ashby, Workday",
    "description": "Scrape jobs from 5 major ATS platforms in one dataset: Greenhouse, Lever, Ashby, SmartRecruiters & Workday. Full descriptions, salaries, locations, departments & apply links. Auto-detects the ATS from a careers URL or company name. Monitor mode emits only new jobs.",
    "version": "1.0",
    "x-build-id": "A5bJvFSYjZYOktmhm"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapesage~multi-ats-job-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapesage-multi-ats-job-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/scrapesage~multi-ats-job-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapesage-multi-ats-job-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/scrapesage~multi-ats-job-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapesage-multi-ats-job-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 / career boards",
            "type": "array",
            "description": "One entry per company. Each can be: <b>a careers/board URL</b> (most reliable) - e.g. <code>https://boards.greenhouse.io/figma</code>, <code>https://jobs.lever.co/palantir</code>, <code>https://jobs.ashbyhq.com/openai</code>, <code>https://careers.smartrecruiters.com/BoschGroup</code>, <code>https://salesforce.wd12.myworkdayjobs.com/External_Career_Site</code>; an <b>\"ats:token\" shorthand</b> - <code>greenhouse:figma</code>, <code>lever:palantir</code>, <code>ashby:openai</code>, <code>smartrecruiters:BoschGroup</code>; or a <b>plain company name</b> to auto-detect (Greenhouse, Lever, Ashby, SmartRecruiters). <b>Workday always needs a URL.</b>",
            "items": {
              "type": "string"
            }
          },
          "searchTerms": {
            "title": "Search terms (keyword filter)",
            "type": "array",
            "description": "Optional keywords. A job is kept if any term starts a word in its title, department, tags or description (case-insensitive; set Match search terms in to Job title only for title matches). Leave empty to return every posting.",
            "items": {
              "type": "string"
            }
          },
          "matchSearchTermsIn": {
            "title": "Match search terms in",
            "enum": [
              "everywhere",
              "title"
            ],
            "type": "string",
            "description": "Where a search term must appear. Job title only keeps the roles you name (a company's description boilerplate can mention any word); Title, department, tags and description also catches jobs that only mention the term.",
            "default": "everywhere"
          },
          "locationFilters": {
            "title": "Location filter",
            "type": "array",
            "description": "Optional location keywords. A job is kept if any term starts a word in its location, city, region or country (e.g. <code>London</code>, <code>Remote</code>, <code>United States</code>), so US does not match Australia. Leave empty for all locations.",
            "items": {
              "type": "string"
            }
          },
          "includeDescription": {
            "title": "Include full job descriptions",
            "type": "boolean",
            "description": "Fetch the full job description (HTML + plain text). Free for Greenhouse, Lever and Ashby (in the listing). For SmartRecruiters and Workday this adds one detail request per job - turn off for faster, cheaper listing-only runs.",
            "default": true
          },
          "includeCompensation": {
            "title": "Include salary / compensation",
            "type": "boolean",
            "description": "Parse salary ranges and equity flags where the employer publishes them (richest on Ashby, Lever and Greenhouse).",
            "default": true
          },
          "includeRawData": {
            "title": "Include raw ATS object",
            "type": "boolean",
            "description": "Attach the complete original ATS response object for each job under a <code>raw</code> field - useful when you need a field this actor doesn't map yet.",
            "default": false
          },
          "maxItemsPerCompany": {
            "title": "Max jobs per company",
            "minimum": 0,
            "type": "integer",
            "description": "Cap the number of jobs per company (0 = no limit), counted after the search-term and location filters: with search terms set, the actor reads each board until it has that many matching jobs (or the board ends). In monitor mode the cap watches the first matching jobs of each board: one an earlier run delivered keeps its place without being emitted again. Handy for quick test runs on large boards.",
            "default": 0
          },
          "maxItems": {
            "title": "Max jobs (total)",
            "minimum": 0,
            "type": "integer",
            "description": "Hard cap on total jobs across all companies (0 = no limit).",
            "default": 0
          },
          "onlyNewItems": {
            "title": "Monitor mode - only new jobs",
            "type": "boolean",
            "description": "Emit only postings not seen in previous runs. Seen job IDs are saved in a named key-value store (below) and compared on every run, so a daily Schedule yields just the new jobs. The first run emits everything. Note: quiet runs return 0 items, which can trip a Console Monitoring \"results lower than N\" alert.",
            "default": false
          },
          "dedupStoreName": {
            "title": "Monitor state store name",
            "type": "string",
            "description": "Name of the named key-value store that holds previously-seen job IDs for monitor mode. Use a different name per independent monitor (e.g. per client or per company set).",
            "default": "ats-jobs-state"
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Parallel detail requests (SmartRecruiters / Workday).",
            "default": 8
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings. The ATS APIs accept direct requests, so the default Apify (datacenter) proxy is plenty - no residential proxy needed.",
            "default": {
              "useApifyProxy": true
            }
          },
          "urlsFromFile": {
            "title": "Import URLs from a file",
            "type": "string",
            "description": "Paste a list of URLs (one per line), OR one link to a .txt/.csv file, Google Sheet or Google Drive file containing them. Lets you import many Start URLs at once instead of typing each. Google Sheet/Drive share links are handled automatically."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}