{
  "openapi": "3.0.1",
  "info": {
    "title": "Workday Jobs Scraper - Search Any Workday Career Site",
    "description": "Scrape open job postings from any company's Workday career site. Server-side keyword search, then full descriptions, resolved locations, ISO country codes, employment type, requisition IDs and exact posting dates. Handles Workday's 2000-result cap without billing duplicate pages.",
    "version": "0.1",
    "x-build-id": "IqoOjLV9rKaERSWL0"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/cirkit~workday-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-cirkit-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/cirkit~workday-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-cirkit-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/cirkit~workday-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-cirkit-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": "Companies",
            "type": "array",
            "description": "One company per line. Use a built-in slug (nvidia, salesforce, cvshealth, target, adobe, intel, disney, capitalone, mastercard, abbott, pwc, hpe, autodesk, workday, redhat, zillow, paypal) or write any other company as tenant:pod:site, for example acme:wd103:AcmeCareers. Both parts come straight out of the company careers URL. For anything not listed, paste the full URL into Career site URLs instead.",
            "default": [
              "nvidia",
              "salesforce"
            ],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Career site URLs",
            "type": "array",
            "description": "Paste full Workday career site URLs, for example https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite. This works for every company on Workday, not just the built-in list. A locale segment such as /en-US/ in the URL is fine. Company careers pages on their own domain normally redirect here, so follow the company's Search jobs link and copy the URL you land on.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "searchText": {
            "title": "Search keyword",
            "type": "string",
            "description": "Keyword sent to Workday's own search, which matches the job title and the description. Because Workday does the filtering, postings that do not match are never fetched and never charged, so this is the cheapest way to narrow a large career site. Leave empty to return every open posting."
          },
          "titleKeywords": {
            "title": "Title keywords",
            "type": "array",
            "description": "Keep only postings whose title contains one of these, case-insensitive. Applied after Workday returns the page, so unlike Search keyword it does not reduce what is fetched. Use it to tighten a broad Search keyword, for example searchText \"engineer\" plus titleKeywords senior, staff.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "locationKeywords": {
            "title": "Location keywords",
            "type": "array",
            "description": "Keep only postings whose location, additional locations, country name or two-letter country code contains one of these, case-insensitive. For example London, Remote, IL, United States. Needs Include full descriptions on for country codes and resolved location names.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "employmentTypes": {
            "title": "Employment types",
            "type": "array",
            "description": "Keep only these employment types. Workday publishes this only on the job detail endpoint, so this filter needs Include full descriptions on. Postings that do not publish a type are excluded when this filter is set.",
            "items": {
              "type": "string",
              "enum": [
                "full-time",
                "part-time"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time"
              ]
            },
            "default": []
          },
          "remoteOnly": {
            "title": "Remote roles only",
            "type": "boolean",
            "description": "Return only postings whose location text says remote, work from home or virtual. Workday publishes no dedicated remote flag, so a remote role whose location reads only as a city is excluded. Needs Include full descriptions on, because the resolved location names come from the detail endpoint.",
            "default": false
          },
          "postedWithinDays": {
            "title": "Posted within days",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Keep only postings first published within this many days. Uses the exact posting date from the job detail endpoint when available and falls back to Workday's own relative label. Note that Workday labels anything older than a month as \"Posted 30+ Days Ago\", so with descriptions off the oldest age this can resolve is 30. Leave empty for no age filter."
          },
          "includeDescriptions": {
            "title": "Include full descriptions",
            "type": "boolean",
            "description": "On by default. Fetches each posting's detail page for the complete description as HTML and plain text, plus employment type, two-letter country code, country name, exact posting date, application deadline, resolved location names and the hiring legal entity. Turning it off makes a run roughly 20 times fewer requests and much faster, and does not change what you are charged, but it leaves those fields empty and disables the employment type, remote and posting age filters.",
            "default": true
          },
          "maxItemsPerCompany": {
            "title": "Maximum jobs per company",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Cap on postings returned from any single career site. Useful when one large employer would otherwise use up the whole run: CVS Health alone publishes over 19,000 open postings. Leave empty for no per-company cap."
          },
          "maxItems": {
            "title": "Maximum jobs",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Hard cap on postings returned across every company, and the cap on what you are charged. Workday itself limits any single search to 2000 results per career site, so use Search keyword or run several narrower searches to go beyond that.",
            "default": 200
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Workday career sites have no anti-bot vendor in front of them and do not block datacenter IPs, so no proxy is needed for normal runs. Turn one on when sweeping many companies at once, which is when per-IP throttling can appear.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}