{
  "openapi": "3.0.1",
  "info": {
    "title": "ATS Job Scraper: Greenhouse, Lever, Workday, Oracle +10 More",
    "description": "Open jobs from Greenhouse, Lever, Ashby, Workday, Oracle HCM, BambooHR, Workable, Recruitee, SmartRecruiters, Personio, Rippling, Teamtailor, Breezy & Gem boards as unified JSON: title, salary, location, remote, apply link. New/removed job alerts. No login. $1.50 per 1,000 jobs.",
    "version": "0.1",
    "x-build-id": "s3LDqYPsx0E0rhY97"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/steady-scrape~ats-job-feed/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-steady-scrape-ats-job-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/steady-scrape~ats-job-feed/runs": {
      "post": {
        "operationId": "runs-sync-steady-scrape-ats-job-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/steady-scrape~ats-job-feed/run-sync": {
      "post": {
        "operationId": "run-sync-steady-scrape-ats-job-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": "Company job boards (URLs, slugs or company names)",
            "type": "array",
            "description": "Required. One entry per company career board. The ATS platform is auto-detected from the URL. Accepted forms: Greenhouse board URL (https://job-boards.greenhouse.io/stripe) or 'greenhouse:stripe'; Lever (https://jobs.lever.co/spotify) or 'lever:spotify', EU boards 'lever-eu:<slug>'; Ashby (https://jobs.ashbyhq.com/ramp) or 'ashby:ramp'; Workday careers URL (https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite or https://wd3.myworkdaysite.com/recruiting/<tenant>/<site>) or 'workday:nvidia.wd5/NVIDIAExternalCareerSite'; BambooHR (https://acme.bamboohr.com/careers) or 'bamboohr:acme'; Workable (https://apply.workable.com/huggingface/) or 'workable:huggingface'; Recruitee (https://acme.recruitee.com) or 'recruitee:acme'; SmartRecruiters (https://jobs.smartrecruiters.com/Wise) or 'smartrecruiters:Wise'; Personio (https://acme.jobs.personio.de) or 'personio:acme'; Oracle Cloud HCM Candidate Experience URL (https://jpmc.fa.oraclecloud.com/hcmUI/CandidateExperience/en/sites/CX_1001/jobs) or 'oraclehcm:jpmc.fa/CX_1001'; Rippling (https://ats.rippling.com/rippling/jobs) or 'rippling:rippling'; Teamtailor (https://career.teamtailor.com) or 'teamtailor:career' ('teamtailor:careers.acme.com' for a custom domain); Breezy HR (https://acme.breezy.hr) or 'breezy:acme'; Gem (https://jobs.gem.com/accel) or 'gem:accel'. A job URL from the board also works. A company name or domain (e.g. 'Bosch Group', 'stripe.com') is looked up in a built-in list of about 580 live-checked boards; names not in the list are reported under unresolvedInputs in the run summary. A bare slug like 'figma' is looked up in that list, then tried on Greenhouse, Ashby and Lever. Find the slug by opening any job on the company's careers page and reading the URL. Invalid boards are reported in the run summary and do not fail the run.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Title keywords (match any)",
            "type": "array",
            "description": "Keep only jobs whose title contains at least one of these words or phrases (case-insensitive substring match, e.g. 'engineer', 'product manager'). Leave empty to keep all titles.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude title keywords",
            "type": "array",
            "description": "Drop jobs whose title contains any of these words or phrases (case-insensitive substring match, e.g. 'intern', 'senior').",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations (match any)",
            "type": "array",
            "description": "Keep only jobs with at least one location matching any of these: city, region/state, country name or ISO 3166-1 alpha-2 country code (e.g. 'London', 'California', 'Canada', 'US'). Leave empty for all locations. Combine with 'Remote only' for remote jobs in a given country.",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote only",
            "type": "boolean",
            "description": "If true, keep only remote jobs (flagged remote by the ATS, workplace type REMOTE, or 'Remote' in the location).",
            "default": false
          },
          "departments": {
            "title": "Departments / teams (match any)",
            "type": "array",
            "description": "Keep only jobs whose department or team contains any of these (case-insensitive substring, e.g. 'engineering', 'sales', 'marketing'). Workday boards do not expose departments, so this filter removes all Workday jobs when set.",
            "items": {
              "type": "string"
            }
          },
          "postedWithinDays": {
            "title": "Posted within the last N days",
            "minimum": 1,
            "type": "integer",
            "description": "Keep only jobs posted in the last N days (e.g. 7). Jobs without a posted date are kept. Leave empty for any date."
          },
          "includeDescription": {
            "title": "Include full job description",
            "type": "boolean",
            "description": "If true (default), each job includes the full description as HTML (descriptionHtml) and plain text (descriptionText). Set false for a smaller, faster dataset with metadata only.",
            "default": true
          },
          "maxJobsPerCompany": {
            "title": "Max jobs per company",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of jobs returned per board, after filters. With 'Only new jobs' it caps new jobs per board per run (held-back jobs come in later runs). Leave empty for no cap. Use a small value (e.g. 10-100) for quick tests and to control cost ($0.0015 per job)."
          },
          "onlyNewSinceLastRun": {
            "title": "Only new jobs since last run",
            "type": "boolean",
            "description": "If true, the Actor remembers which job IDs it already delivered per board (in the named key-value store below) and outputs only jobs not delivered before, marked changeType='new'. Use for scheduled job alerts and change feeds. If false (default), every matching job is returned on every run.",
            "default": false
          },
          "firstRunEmitsAll": {
            "title": "First run outputs all current jobs",
            "type": "boolean",
            "description": "Only used with 'Only new jobs'. When a board is seen for the first time: true (default) outputs all its current jobs once; false records them silently as a baseline so you only get jobs posted later.",
            "default": true
          },
          "emitRemovedJobs": {
            "title": "Also output removed jobs (free)",
            "type": "boolean",
            "description": "Only used with 'Only new jobs'. If true, jobs that disappeared from a board since the last run are output as free records with changeType='removed', firstSeenAt and removedDetectedAt. Requires a complete board listing (for Workday: no cap or keyword pre-filter).",
            "default": false
          },
          "stateStoreName": {
            "title": "State store name (for 'Only new')",
            "type": "string",
            "description": "Name of the key-value store that keeps delivered job IDs for 'Only new jobs'. Runs that share a name share history. Use a different name for each independent feed or alert.",
            "default": "ats-job-feed-state"
          },
          "maxConcurrency": {
            "title": "Max parallel requests",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum number of HTTP requests in flight at once across all boards. The default of 5 is polite and fast enough for most runs.",
            "default": 5
          },
          "maxRetries": {
            "title": "Max retries per request",
            "minimum": 0,
            "maximum": 8,
            "type": "integer",
            "description": "How many times to retry a request after HTTP 429, 5xx or a timeout, with exponential backoff.",
            "default": 4
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}