{
  "openapi": "3.0.1",
  "info": {
    "title": "Workable Jobs Monitor & Scraper",
    "description": "Scrape public jobs from Workable company career pages and jobs.workable.com search: descriptions, locations, departments and optional salary. Monitor mode returns only new, changed and removed jobs.",
    "version": "0.1",
    "x-build-id": "TJ7djv47KMz29nIs2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/cliqtomedia~workable-jobs-monitor-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-cliqtomedia-workable-jobs-monitor-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/cliqtomedia~workable-jobs-monitor-scraper/runs": {
      "post": {
        "operationId": "runs-sync-cliqtomedia-workable-jobs-monitor-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/cliqtomedia~workable-jobs-monitor-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-cliqtomedia-workable-jobs-monitor-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 on Workable",
            "type": "array",
            "description": "Company career pages on Workable. Use the account name (costello-medical) or a URL like https://apply.workable.com/costello-medical/. A job URL from the same company also works. Up to 200 companies.",
            "items": {
              "type": "string"
            }
          },
          "searchKeywords": {
            "title": "Search keywords (jobs.workable.com)",
            "type": "array",
            "description": "Search all Workable jobs on jobs.workable.com. Each keyword is a separate search, for example \"software engineer\". Up to 20 keywords.",
            "items": {
              "type": "string"
            }
          },
          "searchLocation": {
            "title": "Search location",
            "type": "string",
            "description": "Location for every keyword search, for example \"United States\", \"London\" or \"Germany\". You can also use it alone, without keywords."
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "any",
              "24h",
              "7d",
              "30d"
            ],
            "type": "string",
            "description": "Only jobs posted in this period. Works for both search and companies.",
            "default": "any"
          },
          "workplaceTypes": {
            "title": "Workplace type",
            "type": "array",
            "description": "Keep only remote, hybrid or on-site jobs. Leave empty for all. For companies, hybrid and on-site are known only when \"Add salary and exact workplace type\" is on; otherwise only remote jobs are recognized.",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "hybrid",
                "on_site"
              ],
              "enumTitles": [
                "Remote",
                "Hybrid",
                "On-site"
              ]
            }
          },
          "titleKeywords": {
            "title": "Job title must contain",
            "type": "array",
            "description": "Keep a job if its title contains at least one of these words (not case-sensitive).",
            "items": {
              "type": "string"
            }
          },
          "excludeTitleKeywords": {
            "title": "Job title must not contain",
            "type": "array",
            "description": "Drop a job if its title contains any of these words, for example \"intern\".",
            "items": {
              "type": "string"
            }
          },
          "locationKeywords": {
            "title": "Location must contain",
            "type": "array",
            "description": "Keep a job if any of its locations contains one of these words, for example \"Germany\" or \"London\".",
            "items": {
              "type": "string"
            }
          },
          "departmentKeywords": {
            "title": "Department must contain",
            "type": "array",
            "description": "Keep a job if its department contains one of these words, for example \"Engineering\".",
            "items": {
              "type": "string"
            }
          },
          "includeDetails": {
            "title": "Add salary and exact workplace type (companies)",
            "type": "boolean",
            "description": "For companies: one extra request per job to get salary and hybrid/on-site workplace type. Descriptions, requirements and benefits are included even when this is off. Workable allows only a limited number of these requests per day; when the limit is hit, the Actor stops asking, keeps all jobs and marks the company as partial.",
            "default": false
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "all",
              "changes"
            ],
            "type": "string",
            "description": "\"All jobs\" returns every matching job. \"Only changes\" compares with the previous run of the same input and returns new, changed and removed jobs. The first changes run returns all jobs as new.",
            "default": "all"
          },
          "monitorStateKey": {
            "title": "Monitor name",
            "type": "string",
            "description": "Optional. Runs with the same monitor name share memory. Leave empty to use the companies, searches and filters as the name. Letters, digits, - and _ only."
          },
          "includeUnchanged": {
            "title": "Also return unchanged jobs",
            "type": "boolean",
            "description": "Only for \"Only changes\" mode: also return jobs that did not change, marked unchanged.",
            "default": false
          },
          "maxJobsPerSource": {
            "title": "Max jobs per company or search",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Stop each company or search after this many matching jobs (1–5000). The source is then marked partial.",
            "default": 1000
          },
          "maxJobsTotal": {
            "title": "Max jobs per run",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Stop the whole run after this many matching jobs (1–5000). Bigger jobs: split companies or searches into several runs.",
            "default": 5000
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}