{
  "openapi": "3.0.1",
  "info": {
    "title": "ATS Job Scraper: Workday, Greenhouse, Lever & More",
    "description": "Extract every open job from company career pages on 12 applicant tracking systems: Workday, Greenhouse, Lever, Ashby, Workable, Personio, BambooHR and more. Filter by title, description keywords, remote, employment type, salary or visa. Get location, salary, seniority and full description.",
    "version": "1.0",
    "x-build-id": "dMYrBxExBQkftI50h"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/digital_influx~ats-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-digital_influx-ats-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/digital_influx~ats-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-digital_influx-ats-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/digital_influx~ats-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-digital_influx-ats-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",
        "required": [
          "companies"
        ],
        "properties": {
          "companies": {
            "title": "Companies",
            "type": "array",
            "description": "One per line. Paste a careers page URL (boards.greenhouse.io/airbnb, jobs.lever.co/spotify, jobs.ashbyhq.com/ramp, apply.workable.com/huggingface, bunq.recruitee.com, nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite, ottonova.jobs.personio.de, ats.rippling.com/rippling/jobs, career.teamtailor.com, company.breezy.hr, company.bamboohr.com/careers, jobs.gem.com/11x-ai), write platform:slug (lever:spotify), or just the board name (ramp) and the Actor finds the platform for you. Workday, Personio and BambooHR need the full careers URL.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Title keywords",
            "type": "array",
            "description": "Keep jobs whose title contains any of these words (whole-word match, so 'intern' does not match 'internal'). Leave empty for all jobs.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude title keywords",
            "type": "array",
            "description": "Drop jobs whose title contains any of these words, e.g. senior, manager.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Keep jobs whose location, any secondary location or country code contains one of these texts (e.g. Berlin, Germany, DE). The word 'remote' also matches jobs flagged remote.",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote only",
            "type": "boolean",
            "description": "Keep only jobs that offer a fully remote option.",
            "default": false
          },
          "seniority": {
            "title": "Seniority",
            "type": "array",
            "description": "Keep only these levels, read from the job title: \"Senior Data Engineer\" is senior, \"Head of Sales\" is director. \"Not stated\" keeps titles without a level word, which are mostly mid-level roles. Empty = all levels.",
            "items": {
              "type": "string",
              "enum": [
                "intern",
                "entry",
                "unspecified",
                "senior",
                "lead",
                "director",
                "executive"
              ],
              "enumTitles": [
                "Intern / working student",
                "Entry / junior / associate",
                "Not stated (usually mid-level)",
                "Senior",
                "Lead / staff / principal",
                "Director / head of",
                "Executive (VP, C-level)"
              ]
            }
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 1,
            "type": "integer",
            "description": "Keep only jobs published in the last N days. Jobs without a publish date are dropped when this is set."
          },
          "workplaceTypes": {
            "title": "Workplace type",
            "type": "array",
            "description": "Keep only these workplace types, as the company set them on its job board. Greenhouse jobs rarely state it (85% of the 195,000 in our index), unless the location says Remote, Hybrid or On-site: add \"Not stated\" to keep them. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "hybrid",
                "onsite",
                "unspecified"
              ],
              "enumTitles": [
                "Remote",
                "Hybrid",
                "On-site",
                "Not stated"
              ]
            }
          },
          "employmentTypes": {
            "title": "Employment type",
            "type": "array",
            "description": "Keep only these employment types. Most platforms give the type; Greenhouse lists none, so its jobs count as \"Not stated\" unless the title says intern, part-time or (contract). Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "fulltime",
                "parttime",
                "contract",
                "temporary",
                "internship",
                "unspecified"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract / freelance",
                "Temporary / fixed-term",
                "Internship / working student",
                "Not stated"
              ]
            }
          },
          "descriptionKeywords": {
            "title": "Description keywords",
            "type": "array",
            "description": "Keep jobs whose description contains any of these words (whole-word match), e.g. Python, Kubernetes, GDPR. Breezy boards publish no description, so their jobs are dropped by description filters. On Workday, Rippling and BambooHR the text of every candidate job is fetched, so those runs take longer.",
            "items": {
              "type": "string"
            }
          },
          "excludeDescriptionKeywords": {
            "title": "Exclude description keywords",
            "type": "array",
            "description": "Drop jobs whose description contains any of these words, e.g. clearance, relocation.",
            "items": {
              "type": "string"
            }
          },
          "onlyWithSalary": {
            "title": "Only jobs that state a salary",
            "type": "boolean",
            "description": "Keep only jobs with a salary given by the job board or written in the description (for example a US pay-transparency range).",
            "default": false
          },
          "onlyVisaSponsorship": {
            "title": "Only jobs that offer visa sponsorship",
            "type": "boolean",
            "description": "Keep only jobs whose description says the company sponsors visas. Jobs that say nothing about it are dropped.",
            "default": false
          },
          "descriptionFormat": {
            "title": "Job description",
            "enum": [
              "text",
              "html",
              "both",
              "none"
            ],
            "type": "string",
            "description": "Plain text is best for spreadsheets and AI agents. 'None' makes runs faster and results smaller.",
            "default": "text"
          },
          "maxJobsPerCompany": {
            "title": "Max jobs per company",
            "minimum": 0,
            "type": "integer",
            "description": "Newest jobs first. 0 or empty = no limit."
          },
          "maxJobs": {
            "title": "Max jobs in total",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after saving this many jobs across all companies. 0 or empty = no limit. You also never pay more than the spending limit you set for the run."
          },
          "maxConcurrency": {
            "title": "Companies in parallel",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many companies are read at the same time (1 to 10).",
            "default": 4
          },
          "onlyNew": {
            "title": "Only new jobs (for scheduled runs)",
            "type": "boolean",
            "description": "Save only jobs that earlier runs with these same companies and filters did not save, so a daily schedule gives you just the new postings and you pay only for those. With a per-company limit, the new jobs are looked for among the newest ones. The memory is kept for 180 days in a key-value store named \"ats-jobs-state\" in your account.",
            "default": false
          },
          "stateKey": {
            "title": "Memory name (optional)",
            "type": "string",
            "description": "By default each set of companies and filters has its own memory. Give a name to share one memory between tasks, or a new name to start over. Letters, digits, dot, dash and underscore."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}