{
  "openapi": "3.0.1",
  "info": {
    "title": "Company Jobs Scraper — Greenhouse, Lever, Ashby, Workday + more",
    "description": "Give company names, domains, or careers-page URLs; get every open job as clean JSON (title, location, remote, apply link, date). Auto-detects 9 ATS — Greenhouse, Lever, Ashby, Workable, Workday & more. Pay only per job returned. Built for hiring signals, recruiting, and AI agents (MCP tool).",
    "version": "0.1",
    "x-build-id": "6X0TnCVcZ9xjcM2kR"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/kjel~company-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-kjel-company-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/kjel~company-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-kjel-company-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/kjel~company-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-kjel-company-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": "The companies to fetch open jobs for. Each entry can be a company name (e.g. <code>Stripe</code>), a website domain (e.g. <code>stripe.com</code>), or a careers-page / job-board URL (e.g. <code>https://jobs.lever.co/spotify</code>) — you can mix all three in one run. The Actor auto-detects which ATS each company uses. Tip: for a generic one-word company name, or for Workday boards (which can't be guessed from a name), paste the board URL to guarantee an exact match.",
            "items": {
              "type": "string"
            }
          },
          "titleKeywords": {
            "title": "Job title keywords",
            "type": "array",
            "description": "Optional. Keep only jobs whose title contains at least one of these keywords (case-insensitive substring match, OR semantics), e.g. <code>engineer</code>, <code>sales</code>. Omit or leave empty to return jobs of every title.",
            "items": {
              "type": "string"
            }
          },
          "departmentKeywords": {
            "title": "Department keywords",
            "type": "array",
            "description": "Optional. Keep only jobs whose department or team contains at least one of these keywords (case-insensitive, OR semantics). Omit or leave empty to return every department.",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Optional. If true, keep only <b>fully remote</b> jobs. Hybrid roles are excluded — some boards report hybrid postings with a remote flag set, so this filters on the stated workplace type instead of trusting that flag. Every job also carries a <code>workplaceType</code> field (remote/hybrid/onsite) if you'd rather filter yourself. Default false (all jobs).",
            "default": false
          },
          "postedAfter": {
            "title": "Posted after",
            "type": "string",
            "description": "Optional. Keep only jobs published on or after this date, in ISO format <code>YYYY-MM-DD</code> (e.g. <code>2026-07-01</code>). Jobs whose board doesn't expose a publish date are always kept. Omit for no date filter."
          },
          "includeDescription": {
            "title": "Include full job descriptions",
            "type": "boolean",
            "description": "Optional. If true, add the full job description as <code>descriptionHtml</code> and <code>descriptionText</code> to each job (increases output size significantly). Descriptions are available for Greenhouse, Lever, Ashby, and Recruitee; other ATSs return the posting without body text (these fields will be null). Default false.",
            "default": false
          },
          "includeUnconfirmed": {
            "title": "Include unconfirmed matches",
            "type": "boolean",
            "description": "Optional. By default the Actor returns and charges for a company only when the board is confirmed to be theirs (you pasted the URL, the board's own details match, or the link was found on the company's own website). Enable this to ALSO return name-guessed boards that couldn't be confirmed: they are flagged with <code>matchConfidence: \"probable\"</code>, are never charged for, and may occasionally be a demo or same-name board. For common one-word company names, pasting the careers URL is the reliable path. Default false.",
            "default": false
          },
          "onlyNewJobs": {
            "title": "Only new jobs (monitoring mode)",
            "type": "boolean",
            "description": "Optional. Return — and charge for — only postings that haven't been seen on a previous run of this monitor. Ideal on a schedule: run it daily and get just the day's new openings. The first run has no history, so it returns everything currently open and becomes the baseline. Closed postings drop out of the baseline automatically. Default false (return all open jobs every run).",
            "default": false
          },
          "monitorId": {
            "title": "Monitor ID",
            "type": "string",
            "description": "Optional. Only used when \"Only new jobs\" is on. Names the history this run compares against, so you can keep several independent monitors (e.g. <code>target-accounts</code> and <code>competitors</code>) without them interfering. Leave as <code>default</code> if you only run one.",
            "default": "default"
          },
          "maxJobsPerCompany": {
            "title": "Max jobs per company",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Cap the number of jobs returned per company (applied after filters). Use 0 for no per-company limit. Default 0.",
            "default": 0
          },
          "maxJobs": {
            "title": "Max jobs (whole run)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Hard cap on the total number of jobs returned across all companies — effectively your spend ceiling, since you are charged per job. The run stops once the cap is reached. Use 0 for no limit. Default 0.",
            "default": 0
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. Route requests through a proxy to avoid rate-limiting on very large runs. The target endpoints are public JSON APIs, so small and medium runs don't need this; enable Apify Proxy for big sweeps if you hit throttling. Off by default.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}