{
  "openapi": "3.0.1",
  "info": {
    "title": "Career Site Job Scraper: Greenhouse, Lever, Ashby, Workday",
    "description": "Get every open job from company career sites on Greenhouse, Lever, Ashby, Workday and SmartRecruiters via their public job-board feeds. Normalized fields, salary ranges, clean descriptions, filters, and new/closed job tracking between runs. $1.50 per 1,000 jobs.",
    "version": "1.1",
    "x-build-id": "sLxroqrqnC2xZnrXB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fairfetch~career-site-jobs-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fairfetch-career-site-jobs-api",
        "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/fairfetch~career-site-jobs-api/runs": {
      "post": {
        "operationId": "runs-sync-fairfetch-career-site-jobs-api",
        "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/fairfetch~career-site-jobs-api/run-sync": {
      "post": {
        "operationId": "run-sync-fairfetch-career-site-jobs-api",
        "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 (career-page URLs or ats:slug)",
            "minItems": 1,
            "type": "array",
            "description": "One company job board per line. Accepted forms:\n- Greenhouse: https://job-boards.greenhouse.io/stripe or greenhouse:stripe\n- Lever: https://jobs.lever.co/palantir or lever:palantir (EU boards on jobs.eu.lever.co work too)\n- Ashby: https://jobs.ashbyhq.com/openai or ashby:openai\n- Workday: https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite or workday:nvidia.wd5/NVIDIAExternalCareerSite\n- SmartRecruiters: https://jobs.smartrecruiters.com/ServiceNow or smartrecruiters:ServiceNow\n- A company's own careers page (e.g. https://example.com/careers): the page is scanned for an embedded Greenhouse, Lever, Ashby, Workday or SmartRecruiters board.\nThe same board entered twice (for example as a URL and as \"ats:slug\") is read and charged once. An entry that returns no jobs because of a problem (wrong slug, no board found, site error) gives one free error row with the reason.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords (any of)",
            "type": "array",
            "description": "Keep only jobs whose title, department or team contains at least one of these words (case-insensitive). 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, e.g. \"intern\" or \"senior\".",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations (any of)",
            "type": "array",
            "description": "Keep only jobs with a location containing one of these texts (case-insensitive), e.g. \"London\", \"United States\". The special value \"Remote\" uses the same rule as \"Remote jobs only\" (including the option to keep jobs with unknown remote status), so hybrid or on-site jobs that list a \"Remote\" location are not matched.",
            "items": {
              "type": "string"
            }
          },
          "departments": {
            "title": "Departments / teams (any of)",
            "type": "array",
            "description": "Keep only jobs whose department or team contains one of these texts. Workday sites do not publish departments, so this filter is skipped for Workday.",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Keep only remote jobs: the ATS marks the job as remote, or (when the ATS gives no workplace type) a location says \"Remote\", e.g. \"US-Remote\". Hybrid and on-site jobs are never included, even when the ATS also flags them as remote-eligible. Jobs whose ATS doesn't say whether they are remote (output `remote: null`, common on Greenhouse and Workday) are left out unless you tick the next option.",
            "default": false
          },
          "includeUnknownRemote": {
            "title": "Remote only: also keep jobs with unknown remote status",
            "type": "boolean",
            "description": "With \"Remote jobs only\": also keep jobs whose ATS doesn't say whether they are remote (`remote: null`), so you can check them yourself. Hybrid and on-site jobs stay excluded.",
            "default": false
          },
          "postedWithinDays": {
            "title": "Posted within the last N days",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Keep only jobs first published in the last N days (where the ATS publishes a date). Leave empty for no limit."
          },
          "includeDescription": {
            "title": "Include job description (clean text)",
            "type": "boolean",
            "description": "Add the full job description converted from HTML to clean plain text. For Workday and SmartRecruiters this needs one extra request per job, so runs take longer.",
            "default": true
          },
          "maxJobsPerCompany": {
            "title": "Max jobs per company",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of matching jobs returned per company, newest first (by the date the ATS publishes; undated jobs last). 0 = no limit. Lever boards are always read in full to find the newest, because Lever does not list them by date; Workday and SmartRecruiters list newest first, so only the first pages are read when no filters or tracking are used. Closed jobs reported by change tracking are not counted against this limit.",
            "default": 0
          },
          "trackChanges": {
            "title": "Track new and closed jobs",
            "type": "boolean",
            "description": "Remember the jobs returned for each company in a named key-value store, so every later run marks jobs as \"new\" or \"existing\" and also returns jobs that have been taken down since the previous run as \"closed\". Schedule the Actor (e.g. daily) to monitor hiring. Turned on automatically when \"Return only new and closed jobs\" is ticked.",
            "default": false
          },
          "onlyNewAndClosed": {
            "title": "Return only new and closed jobs",
            "type": "boolean",
            "description": "Skip jobs that were already returned in an earlier run, so you only pay for changes. Needs change tracking, which this option turns on by itself. The first run returns every job as \"new\".",
            "default": false
          },
          "trackingId": {
            "title": "Tracking ID",
            "pattern": "^[A-Za-z0-9_-]{1,60}$",
            "type": "string",
            "description": "Name of the tracking state (used only with change tracking). Runs with the same ID share what has been seen; use different IDs for independent monitors (e.g. one per team or per filter set). Letters, numbers, dashes and underscores.",
            "default": "default"
          },
          "maxConcurrency": {
            "title": "Max parallel requests",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Upper limit of simultaneous HTTP requests. Requests to one host are additionally limited to 3 at a time to stay polite.",
            "default": 5
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 300,
            "type": "integer",
            "description": "Timeout for a single HTTP request.",
            "default": 60
          },
          "maxRetries": {
            "title": "Max retries per request",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Retries for network errors, HTTP 429 and 5xx responses (exponential backoff, honours Retry-After).",
            "default": 4
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Not needed for the public job-board feeds. Enable only if a site blocks your requests.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}