{
  "openapi": "3.0.1",
  "info": {
    "title": "Workable Jobs Scraper: Search Every Company, Filter and Export",
    "description": "Scrape jobs.workable.com across every hiring company. Search many keywords and locations in one run, filter by remote or hybrid, contract type, experience level and date, refine by title, department and employer, and read pay when stated. Monitor new postings only. Export JSON, CSV, Excel. No login.",
    "version": "0.1",
    "x-build-id": "X8KaYT5j8KfOiOPmy"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~workable-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-workable-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/getascraper~workable-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-workable-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/getascraper~workable-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-workable-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": {
          "searchQueries": {
            "title": "Search keywords",
            "type": "array",
            "description": "Job titles or keywords to search across every company on the Workable job board, one search per entry (for example nurse, data analyst, welder). Results from several entries are merged and de-duplicated. Leave empty to browse all postings that match your other filters.",
            "items": {
              "type": "string"
            },
            "default": [
              "software engineer"
            ]
          },
          "searchUrls": {
            "title": "Search page URLs",
            "type": "array",
            "description": "Optional. Paste jobs.workable.com search page URLs (for example https://jobs.workable.com/search?query=nurse&location=Berlin&workplace=remote). The keyword, location, work setup, employment type, experience and date filters in the link are used as they are.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Countries, regions or cities, one search per entry (for example Germany, DE, Bavaria, London, remote). Each keyword is searched in every location. Leave empty for worldwide.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "workplaceTypes": {
            "title": "Work setup",
            "type": "array",
            "description": "Keep only remote, hybrid or on-site roles. Pick more than one to combine them. Leave empty to include all.",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "hybrid",
                "on_site"
              ],
              "enumTitles": [
                "Remote",
                "Hybrid",
                "On-site"
              ]
            },
            "default": []
          },
          "employmentTypes": {
            "title": "Employment types",
            "type": "array",
            "description": "Keep only the contract types you want, such as full-time or contract. Leave empty to include all.",
            "items": {
              "type": "string",
              "enum": [
                "full_time",
                "part_time",
                "contract",
                "temporary",
                "other"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Other"
              ]
            },
            "default": []
          },
          "experienceLevels": {
            "title": "Experience levels",
            "type": "array",
            "description": "Keep only roles at the seniority levels you pick, from internship to executive. This filter is missing from most Workable scrapers. Leave empty to include all.",
            "items": {
              "type": "string",
              "enum": [
                "internship",
                "entry_level",
                "associate",
                "mid_senior_level",
                "director",
                "executive"
              ],
              "enumTitles": [
                "Internship",
                "Entry level",
                "Associate",
                "Mid-Senior level",
                "Director",
                "Executive"
              ]
            },
            "default": []
          },
          "titleMustContain": {
            "title": "Title must contain",
            "type": "array",
            "description": "Keep a posting only if its title contains at least one of these words. Useful to cut broad keyword matches down to the exact role.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "titleMustNotContain": {
            "title": "Title must not contain",
            "type": "array",
            "description": "Drop postings whose title contains any of these words, for example intern, assistant or junior.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "departments": {
            "title": "Departments",
            "type": "array",
            "description": "Keep a posting only if its department or team name contains one of these words (for example Sales, Engineering). Only postings that publish a department can match.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "companies": {
            "title": "Only these companies",
            "type": "array",
            "description": "Optional. Paste Workable company page URLs (https://jobs.workable.com/company/.../jobs-at-name) to list the open roles of those employers only. Your keyword, location and date filters still apply.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "excludeCompanies": {
            "title": "Exclude companies",
            "type": "array",
            "description": "Drop postings from employers whose name contains any of these words, for example staffing agencies you do not want in the data.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "onlyWithSalary": {
            "title": "Only postings with a stated salary",
            "type": "boolean",
            "description": "Keep only postings whose text states a pay amount or range. Workable has no salary field, so the amount is read from the posting text and only filled in when it is clearly written there.",
            "default": false
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "24h",
              "7d",
              "30d",
              "any"
            ],
            "type": "string",
            "description": "Only postings published inside this window. Use the last 24 hours for a daily feed.",
            "default": "7d"
          },
          "maxItems": {
            "title": "Maximum postings in total",
            "minimum": 1,
            "maximum": 200000,
            "type": "integer",
            "description": "Stop after this many postings across all searches. Free plan runs are capped at 25.",
            "default": 25
          },
          "maxItemsPerSearch": {
            "title": "Maximum postings per search",
            "minimum": 1,
            "maximum": 200000,
            "type": "integer",
            "description": "Cap for each keyword and location combination, so the first search cannot use up the whole total.",
            "default": 25
          },
          "maxPagesPerSearch": {
            "title": "Maximum result pages per search",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Each page holds up to 20 postings. This also bounds how far the run digs when title, department, company or salary filters discard many postings.",
            "default": 5
          },
          "includeDescription": {
            "title": "Include full description",
            "type": "boolean",
            "description": "Add the full posting text as plain text. Off by default to keep rows small and fast.",
            "default": false
          },
          "includeDescriptionHtml": {
            "title": "Include description as HTML",
            "type": "boolean",
            "description": "Add the posting text with its original formatting (lists, bold, links) for display in your own tools.",
            "default": false
          },
          "includeRequirementsAndBenefits": {
            "title": "Include requirements and benefits",
            "type": "boolean",
            "description": "Add the separate requirements and benefits sections as plain text when the employer wrote them.",
            "default": false
          },
          "includeCompanyProfile": {
            "title": "Include company profile text",
            "type": "boolean",
            "description": "Add the employer's profile text and short tagline from its Workable company page.",
            "default": false
          },
          "monitorMode": {
            "title": "Only new postings since last run",
            "type": "boolean",
            "description": "Return only postings that earlier runs with the same monitor name have not delivered yet. Schedule the Actor daily to get a feed of new jobs.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Name of the saved list of delivered postings. Use a different name for each feed you run, and keep the same name between scheduled runs.",
            "default": "workable-feed"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. Requests go out directly by default and switch to Apify datacenter proxy by themselves if Workable rate limits the connection. Choose a proxy here to use it from the first request.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}