{
  "openapi": "3.0.1",
  "info": {
    "title": "Workday Jobs and Greenhouse Jobs Scraper: ATS Jobs API",
    "description": "ATS jobs from Greenhouse, Lever, Ashby, Workable, Recruitee and Workday career pages, searched by keyword in one daily index or read live for the companies you list. One clean table with new and closed job alerts, seniority, country and exclusion filters and H-1B filing counts. Unofficial tool.",
    "version": "0.5",
    "x-build-id": "2ROhws9xtFuroE9Zs"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/plainrecordlabs~company-jobs-feed/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-plainrecordlabs-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/plainrecordlabs~company-jobs-feed/runs": {
      "post": {
        "operationId": "runs-sync-plainrecordlabs-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/plainrecordlabs~company-jobs-feed/run-sync": {
      "post": {
        "operationId": "run-sync-plainrecordlabs-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",
        "properties": {
          "titleKeywords": {
            "title": "Title keywords",
            "type": "array",
            "description": "Keep only jobs whose title contains any of these words or phrases, for example \"data engineer\" or \"nurse\". Case does not matter and part of a word matches too, so \"intern\" also finds \"internal\". With no companies listed, these keywords search every company in our daily index. Left empty with no companies and no location keywords, the run searches \"data engineer\".",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "locationKeywords": {
            "title": "Location keywords",
            "type": "array",
            "description": "Keep only jobs whose location contains any of these, for example Remote, London or New York. Case does not matter, and a job listed in several places matches on any of them. Empty = all locations.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Keep only jobs the board marks remote, or whose location says Remote, for example to find remote data engineer jobs. A job whose board gives a hybrid or not remote workplace type is left out, even when its location mentions remote.",
            "default": false
          },
          "salaryOnly": {
            "title": "Only jobs that publish a pay range",
            "type": "boolean",
            "description": "Keep only jobs whose posting includes a salary range or pay text (common where pay-transparency laws apply), for example to compare published pay for one title. Only some boards publish pay in their feed, so a job whose pay appears only inside the description is left out.",
            "default": false
          },
          "seniority": {
            "title": "Seniority levels",
            "type": "array",
            "description": "Keep only jobs at these levels. The level is read from words in the job title only, for example Senior, Staff, Manager or Intern, so a plain title like Software Engineer has no level. Pick Not stated in title to keep those too. Level numbers like II or III are not read. Empty = all levels.",
            "items": {
              "type": "string",
              "enum": [
                "intern",
                "junior",
                "mid",
                "senior",
                "lead",
                "manager",
                "director",
                "vp",
                "c-level",
                "not-stated"
              ],
              "enumTitles": [
                "Intern, co-op or trainee",
                "Junior or entry level",
                "Mid level",
                "Senior",
                "Lead, staff or principal",
                "Manager",
                "Director or head of",
                "Vice president",
                "C-level (chief or president)",
                "Not stated in title"
              ]
            },
            "default": []
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Keep only jobs in these countries. Type a two-letter code like US, GB or DE, or the English name like Germany. The country is read from the location text the board gives, including US state and Canadian province codes, so a location like Remote with no country is left out. A job listed in several places is kept when any of them is in one of your countries. Empty = all countries.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeTitleKeywords": {
            "title": "Exclude title keywords",
            "type": "array",
            "description": "Drop jobs whose title contains any of these words or phrases, for example intern or sales. Case does not matter and part of a word matches too.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeCompanyKeywords": {
            "title": "Exclude companies",
            "type": "array",
            "description": "Drop jobs from companies whose name or board name contains any of these, for example staffing for a staffing agency, or your own company.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeLocationKeywords": {
            "title": "Exclude location keywords",
            "type": "array",
            "description": "Drop jobs where any listed location contains one of these, for example Remote or India.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeSeniorityAndCountry": {
            "title": "Add seniority and country fields",
            "type": "boolean",
            "description": "Adds seniority (from the title) and country (a two-letter code from the location) to each job, for example senior and US. They are added on their own when you pick seniority levels or countries above. Each is empty when the title or location does not say.",
            "default": false
          },
          "includeH1bFilings": {
            "title": "Add H-1B filing counts",
            "type": "boolean",
            "description": "Adds h1bFilings to each job: how many certified H-1B labor condition applications the employer filed in the US Department of Labor disclosure data we hold, with the employer name as filed and the data release, for example 1184 filings by Cisco Systems, Inc. in FY2026 Q3. Added on its own when you set a minimum below. The employer is matched by company name, so 0 means no filings were found under a matching name, not proof the employer never sponsors. A filing shows the employer sponsored H-1B workers before, not that this job offers sponsorship.",
            "default": false
          },
          "minH1bFilings": {
            "title": "Minimum H-1B filings by the employer",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only jobs at employers with at least this many certified H-1B filings in that data, for example 10. A company that files under a different legal name can show 0 and be left out. 0 = off.",
            "default": 0
          },
          "companies": {
            "title": "Companies (optional)",
            "type": "array",
            "description": "Leave empty to search our daily index of company job boards. Or list companies, one per line: a job-board URL (boards.greenhouse.io/stripe, jobs.lever.co/spotify, jobs.ashbyhq.com/ramp, apply.workable.com/huggingface, bunq.recruitee.com, cisco.wd5.myworkdayjobs.com/Cisco_Careers), an ats:slug pair (greenhouse:airbnb, lever:plaid, ashby:ramp, workable:huggingface, recruitee:bunq), a company careers page URL (the Actor looks for a supported board linked there), or a plain company slug (the Actor tries Greenhouse, Lever, Ashby, Workable and Recruitee).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "postedWithinDays": {
            "title": "First seen within (days)",
            "minimum": 0,
            "type": "integer",
            "description": "Search mode only: keep jobs our index first saw within this many days, for example 3 for jobs that appeared in the last three days. This is the day our daily index first found the job, which can be later than the day the company posted it. 0 = any age.",
            "default": 0
          },
          "maxResults": {
            "title": "Max results (search mode)",
            "minimum": 0,
            "type": "integer",
            "description": "Search mode only: return at most this many jobs, newest first, for example 50. 0 = no limit. Default 100. In company list mode use Max jobs per company instead.",
            "default": 100
          },
          "onlyNew": {
            "title": "Only jobs not seen in my earlier runs",
            "type": "boolean",
            "description": "Remembers job IDs between your runs (in your own key-value store) and returns only new postings. Pair with an Apify schedule for daily new-job alerts, for example a run every morning that returns only jobs posted since the last one. The first run returns everything and records it.",
            "default": false
          },
          "includeClosed": {
            "title": "Also return jobs that closed since my last run",
            "type": "boolean",
            "description": "Company list mode with Only jobs not seen in my earlier runs on: also returns each job you got in an earlier run that is no longer on the company's board, marked status closed with the date this run noticed, for example to see which roles a competitor filled or pulled. Closed means gone from the public list. A company can also pull a job and post it again. A board that could not be read in full that run reports no closed jobs. Each closed job is charged as one job.",
            "default": false
          },
          "includeDescription": {
            "title": "Include job description text",
            "type": "boolean",
            "description": "Company list mode only: adds the plain-text job description to each job, for example to search the text for a skill or a visa note. Not available for Workday boards or in search mode.",
            "default": false
          },
          "maxJobsPerCompany": {
            "title": "Max jobs per company",
            "minimum": 0,
            "type": "integer",
            "description": "Company list mode only: stop after this many jobs per company, for example 50. 0 = no limit.",
            "default": 0
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}