{
  "openapi": "3.0.1",
  "info": {
    "title": "Workday Jobs Scraper: Full Descriptions, Past the 2,000 Cap",
    "description": "Scrapes job postings from any Workday careers site (*.myworkdayjobs.com). Returns the full job description and the exact posting date, which Workday's listing endpoint does not provide, and splits large boards by category to get past Workday's hard 2,000-result-per-query ceiling.",
    "version": "1.0",
    "x-build-id": "lv02iJa5OAFQfZf3h"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/firstpartydata~workday-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-firstpartydata-workday-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/firstpartydata~workday-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-firstpartydata-workday-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/firstpartydata~workday-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-firstpartydata-workday-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",
        "properties": {
          "companies": {
            "title": "Workday careers URLs (or company names)",
            "type": "array",
            "description": "One or more Workday careers sites, e.g. https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite. Pasting the whole URL is exact and always works, because the tenant, the wdN host and the site name are all read off it. You can also give a bare company name such as stryker and the board will be searched for, which succeeds about half the time: site names are frequently unguessable (EXT, BAH_Jobs). Leave empty and switch on the built-in list below.",
            "items": {
              "type": "string"
            }
          },
          "useBuiltInCorpus": {
            "title": "Search the built-in company list",
            "type": "boolean",
            "description": "Read the bundled list of verified live Workday boards instead of, or as well as, the URLs above. Largest employers first. Use this for market-wide questions; use the URLs field when you already know which employers you care about.",
            "default": false
          },
          "corpusSample": {
            "title": "How many boards from the built-in list",
            "minimum": 0,
            "type": "integer",
            "description": "How many bundled Workday boards to read, largest first. Workday boards are big and slow, so start small. 10 boards can already be tens of thousands of postings. 0 means every board in the list.",
            "default": 25
          },
          "searchText": {
            "title": "Search inside Workday",
            "type": "string",
            "description": "A keyword query handed to Workday's own search rather than applied afterwards. This is the cheapest filter available: Workday narrows the result set before anything is fetched, so you are not billed for rows you did not want. Example: kernel engineer."
          },
          "jobCategory": {
            "title": "Job categories",
            "type": "array",
            "description": "Workday's own Job Category facet, matched by name against whatever the board publishes. Write Engineering, not an internal id. Name one that does not exist and the run log lists the categories that board actually offers. Combine with the search box above to narrow twice at the source.",
            "items": {
              "type": "string"
            }
          },
          "titleInclude": {
            "title": "Job title must contain",
            "type": "array",
            "description": "Keep only postings whose title contains one of these, case-insensitively. Applied before any description is fetched, so it also cuts the per-posting detail requests. Example: engineer, developer.",
            "items": {
              "type": "string"
            }
          },
          "titleExclude": {
            "title": "Job title must NOT contain",
            "type": "array",
            "description": "Drop postings whose title contains any of these. Example: intern, contract, director.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location contains",
            "type": "array",
            "description": "Keep only postings whose location contains one of these. Workday writes locations as the employer typed them, often 'US, CA, Santa Clara', so match on a city or country rather than a postal code.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Country",
            "type": "array",
            "description": "Keep only postings in these countries. Accepts an ISO code or a country name (DE and Germany both work), because Workday's detail endpoint returns the country as a name while other sources use codes. Requires Include full job descriptions, since the listing endpoint carries no country field.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords in the description",
            "type": "array",
            "description": "Keep only postings whose description contains one of these. Requires Include full job descriptions to be on, since the listing carries no description. Prefer the Workday search box above where you can. It is faster and cheaper.",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote roles only",
            "type": "boolean",
            "description": "Keep only postings Workday marks as remote. Note that most Workday tenants never set the remote flag, so this is a strict filter and will return little on many boards. Postings with no stated arrangement are excluded rather than guessed at.",
            "default": false
          },
          "postedWithinDays": {
            "title": "Posted within the last N days",
            "minimum": 0,
            "type": "integer",
            "description": "0 disables the filter. With descriptions on, this uses the exact date from Workday's detail endpoint; with descriptions off it uses the approximate date parsed from strings like 'Posted 3 Days Ago'.",
            "default": 0
          },
          "includeDescriptions": {
            "title": "Include full job descriptions",
            "type": "boolean",
            "description": "Follow each posting to Workday's detail endpoint for the full description, the exact posting date, the employment type and the remote flag. This is the feature most Workday scrapers lack. It costs one extra request per posting, so turn it off when you only need to know who is hiring for what.",
            "default": true
          },
          "onlyNewOrChanged": {
            "title": "Only new or changed jobs (incremental)",
            "type": "boolean",
            "description": "Return only postings that are new or that have changed since the last run with the same settings. Unchanged rows are skipped and not billed, which is what makes a daily feed on a large Workday board affordable. The first run establishes the baseline and returns everything.",
            "default": false
          },
          "stateKey": {
            "title": "Incremental state name",
            "type": "string",
            "description": "Names the history incremental mode reads and writes. Leave blank and one is derived from your settings, so two differently-filtered feeds never contaminate each other.",
            "default": ""
          },
          "maxItems": {
            "title": "Maximum jobs to return",
            "minimum": 0,
            "type": "integer",
            "description": "Hard ceiling on results. Workday boards are large (a single enterprise tenant can hold several thousand roles), so this defaults low deliberately. Raise it once you know the shape of the board. 0 means no limit.",
            "default": 1000
          },
          "maxPerCompany": {
            "title": "Maximum jobs from any one job board",
            "minimum": 0,
            "type": "integer",
            "description": "Stops a single large board filling the whole result. Leave at 0 and a market-wide run with a ceiling spreads it over at least 40 boards on its own: without that, the bare default returned 1,000 rows from one or two companies, because one Greenhouse board arrives in a single page and takes the whole ceiling. Counted per board, not per employer, so a company that runs two boards can return twice this. It is never applied when you name companies yourself, or when \"maxItems\" is 0.",
            "default": 0
          },
          "concurrency": {
            "title": "Parallel boards",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many Workday boards to read at once. Detail requests within a board are separately limited. The default is sensible; raise it only when reading many boards at once.",
            "default": 10
          },
          "atsPlatforms": {
            "title": "ATS platform",
            "type": "array",
            "description": "Fixed to Workday for this Actor.",
            "items": {
              "type": "string",
              "enum": [
                "workday"
              ],
              "enumTitles": [
                "Workday"
              ]
            },
            "default": [
              "workday"
            ]
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}