{
  "openapi": "3.0.1",
  "info": {
    "title": "Company Jobs Scraper: Workday, Greenhouse, Lever & Ashby",
    "description": "Get fresh job postings for any list of companies, read live from public job-board APIs. Works with Greenhouse, Lever, Ashby, Workable and Recruitee. Finds boards by name or domain, keeps published salaries, and can return only jobs that are new since your last run.",
    "version": "0.0",
    "x-build-id": "zEcVc7OjDBD10MHX5"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/jay_hong~jobboard-actor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-jay_hong-jobboard-actor",
        "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/jay_hong~jobboard-actor/runs": {
      "post": {
        "operationId": "runs-sync-jay_hong-jobboard-actor",
        "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/jay_hong~jobboard-actor/run-sync": {
      "post": {
        "operationId": "run-sync-jay_hong-jobboard-actor",
        "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",
            "minItems": 1,
            "maxItems": 1000,
            "type": "array",
            "description": "One company per line. Accepted forms: a company name (\"Stripe\"), a website domain (\"stripe.com\"), a careers-board URL (\"https://jobs.lever.co/spotify\", \"https://boards.greenhouse.io/figma\", \"https://jobs.ashbyhq.com/ramp\", \"https://apply.workable.com/huggingface\", \"https://acme.recruitee.com\", \"https://jobs.smartrecruiters.com/Canva\", \"https://salesforce.wd12.myworkdayjobs.com/External_Career_Site\", \"https://ats.rippling.com/rippling/jobs\", \"https://jobs.gem.com/retool\"), or \"ats:token\" (\"greenhouse:figma\", \"lever:eu:acme\", \"workday:salesforce.wd12/External_Career_Site\"). For a domain, the actor reads that site's careers pages for links to its job board; for a plain name (or when the site links none) it reads \"<name>.com\" and tries the name as a board token on each ATS. A board is used only when it has jobs posted in the last year and, where the ATS publishes a company name, the same name. Only confirmed matches are charged: a board URL or ats:token (confidence \"exact\"), or a board the website you gave links to (\"high\"). A match found from the name alone is returned free with confidence \"medium\", even when the ATS publishes the same company name; give the board URL to confirm it. URLs and ats:token skip the lookup (use one to watch a company with no openings right now). Personio and Pinpoint boards are not supported (status \"unsupported\", not charged). Up to 1000 entries.",
            "items": {
              "type": "string"
            }
          },
          "outputMode": {
            "title": "Output mode",
            "enum": [
              "all",
              "new",
              "changes"
            ],
            "type": "string",
            "description": "\"all\": every open job that matches your filters. \"new\": only jobs not seen in earlier runs of the same watchlist (the first run returns everything, because nothing was seen before). \"changes\": new jobs, jobs whose title, location, department, workplace, employment type or salary changed, and jobs that were taken down since the last run. Every job row has a changeType field (new, updated, unchanged, removed).",
            "default": "all"
          },
          "watchlistName": {
            "title": "Watchlist name",
            "pattern": "^[a-zA-Z0-9_-]{1,40}$",
            "type": "string",
            "description": "Name for the memory of jobs already seen, used by \"new\" and \"changes\" modes. Runs with the same name share that memory; use different names for separate trackers. Letters, digits, \"-\" and \"_\" only.",
            "default": "default"
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Keep jobs whose title contains any of these words or phrases (case-insensitive, partial match: \"engineer\" also matches \"Engineering Manager\"). Leave empty to keep all jobs.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop jobs whose title contains any of these words or phrases (case-insensitive).",
            "items": {
              "type": "string"
            }
          },
          "searchDescription": {
            "title": "Also search descriptions",
            "type": "boolean",
            "description": "When on, keywords and exclude keywords are also matched against the job description, not only the title.",
            "default": false
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Keep jobs whose location contains any of these (case-insensitive), for example \"Berlin\", \"New York\", \"Germany\". Two- or three-letter entries such as \"US\" or \"DE\" match the country code or a whole word. \"remote\" matches remote jobs. Leave empty for any location.",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Keep only jobs marked as remote by the ATS (or whose location says remote when the ATS has no remote field).",
            "default": false
          },
          "employmentTypes": {
            "title": "Employment types",
            "type": "array",
            "description": "Keep only these employment types. Leave empty for all. Jobs whose ATS gives no employment type (Greenhouse, Workday, Rippling) are dropped when this filter is set.",
            "items": {
              "type": "string",
              "enum": [
                "full_time",
                "part_time",
                "contract",
                "temporary",
                "internship",
                "other"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship",
                "Other"
              ]
            }
          },
          "requireSalary": {
            "title": "Only jobs with a published salary",
            "type": "boolean",
            "description": "Keep only jobs where the employer published a structured pay range through the ATS (available on Greenhouse, Lever, Ashby and Recruitee boards that choose to publish it). Workable, SmartRecruiters, Workday, Rippling and Gem jobs have no salary field, so this drops them.",
            "default": false
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Keep jobs first published in the last N days. Jobs without a published date are kept (Rippling publishes none). Workday shows older postings only as \"30+ days ago\": they are dropped for N under 30 and kept above."
          },
          "atsPlatforms": {
            "title": "ATSs to search for company names",
            "type": "array",
            "description": "Limit the lookup of names and domains to these ATSs. Leave empty to try all of them. Board URLs and ats:token entries are always used as given.",
            "items": {
              "type": "string",
              "enum": [
                "greenhouse",
                "lever",
                "ashby",
                "workable",
                "recruitee",
                "smartrecruiters",
                "workday",
                "rippling",
                "gem"
              ],
              "enumTitles": [
                "Greenhouse",
                "Lever",
                "Ashby",
                "Workable",
                "Recruitee",
                "SmartRecruiters",
                "Workday",
                "Rippling",
                "Gem"
              ]
            }
          },
          "descriptionFormat": {
            "title": "Job description format",
            "enum": [
              "text",
              "html",
              "both",
              "none"
            ],
            "type": "string",
            "description": "\"text\" returns plain text (best for AI agents and spreadsheets), \"html\" the original HTML, \"both\" both fields, \"none\" no description (smallest output). SmartRecruiters, Workday and Rippling jobs come without a description.",
            "default": "text"
          },
          "maxJobs": {
            "title": "Max jobs per run",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stop after this many job rows in total. Protects your budget: each row is one charged \"job\" event. In \"new\" and \"changes\" modes, jobs cut off by this limit are returned again on the next run.",
            "default": 1000
          },
          "maxJobsPerCompany": {
            "title": "Max jobs per company",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Return at most this many jobs per company (newest first). 0 means no per-company limit. Jobs beyond this limit are treated as seen and are not returned later.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}