{
  "openapi": "3.0.1",
  "info": {
    "title": "Workable Jobs Scraper & API - All Companies, Remote, 24 Hours",
    "description": "Workable jobs scraper and API for every company on apply.workable.com and jobs.workable.com at once, searched by job title, location, remote, job type and date, newest first. Rows come from Workable's own hourly feed of 170,000+ listings. The site:apply.workable.com dork done at the source.",
    "version": "1.0",
    "x-build-id": "ZcSvkUHpx6VEYCeCA"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/anshumanatrey~workable-job-search/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-anshumanatrey-workable-job-search",
        "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/anshumanatrey~workable-job-search/runs": {
      "post": {
        "operationId": "runs-sync-anshumanatrey-workable-job-search",
        "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/anshumanatrey~workable-job-search/run-sync": {
      "post": {
        "operationId": "run-sync-anshumanatrey-workable-job-search",
        "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": {
          "searchTerms": {
            "title": "Job titles to find (searchTerms)",
            "type": "array",
            "description": "Type the job titles or keywords to find, one per line, for example software engineer. A job matches when its title has every word of a line: frontend also finds Front-End. A word searches every company on Workable at once, in Workable's own feed of its job board. Leave it empty for the newest jobs at the biggest companies. A pasted Google dork or Workable link works too.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Where the job is (location)",
            "type": "array",
            "description": "Type where the jobs should be: a city, state, country or region, one per line, for example London, Texas, United States, EMEA or LatAm. US, USA and United States all work, a US, Canadian, Australian or Indian state works by name or code (Texas or TX), and a region finds the jobs in its countries. Workable gives every job a country, so no job is marked worldwide: type Remote here to get remote jobs. Leave it empty for anywhere.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "workType": {
            "title": "Remote or onsite (workType)",
            "type": "array",
            "description": "Pick remote, hybrid or onsite, or several. Leave it empty for all of them. Workable's job lists mark only remote jobs, so a hybrid or onsite search checks each matching job's own Workable page, newest first, for up to 90 seconds, and finds fewer jobs. Typed words such as wfh work too.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "remote",
                "hybrid",
                "onsite"
              ],
              "enumTitles": [
                "Remote",
                "Hybrid",
                "Onsite, in the office (onsite)"
              ]
            },
            "default": []
          },
          "postedWithin": {
            "title": "Posted in the last (postedWithin)",
            "type": "string",
            "description": "Pick how new the jobs must be: posted in the last 24 hours, 3 days, 7 days or 30 days. Any time, the default, keeps every open job, newest first. You can also type your own period, such as 48 hours or 2 weeks.",
            "default": "any time"
          },
          "maxJobs": {
            "title": "Number of jobs (maxJobs)",
            "type": "integer",
            "description": "Type how many jobs to get, newest first: 100 by default. Type 0 to get every matching job. Each job is one charged row, so this and the $0.01 run start set the most a run can cost.",
            "default": 100
          },
          "includeDetails": {
            "title": "Full details (includeDetails)",
            "type": "boolean",
            "description": "Tick to add the full details of each job: the description, requirements and benefits as text and HTML, pay as numbers with its currency and period when shown, remote, hybrid or onsite, the department, the company's job code, city, region and country. Workable is asked about each job in turn, 2 calls a second, at most 1,000 times a run (about 650 jobs found by a word); jobs past that come without details at the Job price. A job with details costs $3.50 per 1,000 instead of $2.50.",
            "default": false
          },
          "excludeTerms": {
            "title": "Leave out words (excludeTerms)",
            "type": "array",
            "description": "Type words that leave a job out when its title has them, one per line, for example senior or manager. Leave it empty to keep every job.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "employmentType": {
            "title": "Job type (employmentType)",
            "type": "array",
            "description": "Pick the job type: full-time, part-time, contract, internship or temporary, or several. Leave it empty for every job type. This is the type the company set on Workable, and an internship is Workable's experience level Internship. About a fifth of jobs set no type, so a job type leaves them out. Typed words such as freelance or temp work too.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "full-time",
                "part-time",
                "contract",
                "intern",
                "temporary"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract or freelance (contract)",
                "Internship (intern)",
                "Temporary"
              ]
            },
            "default": []
          },
          "searchDescriptions": {
            "title": "Match descriptions (searchDescriptions)",
            "type": "boolean",
            "description": "Tick to match your keywords in the job description too, not only in the title: python then finds every job that asks for Python. Workable's feed carries each description, so a search by word makes no extra calls; named companies are read with their descriptions.",
            "default": false
          },
          "companies": {
            "title": "Only these companies (companies)",
            "type": "array",
            "description": "Type company names to search only them, one per line: a name (Hugging Face), the account in the address (huggingface) or a Workable link (apply.workable.com/huggingface). Their career pages are read live. A company that is not on our list of 2,196 Workable accounts is tried by its name in lower case with hyphens, and its link always works. Leave it empty to search every company.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "jobUrls": {
            "title": "Job links to check (jobUrls)",
            "type": "array",
            "description": "Paste Workable job links to check whether they are still open, one per line, instead of searching. Each link comes back open with the job, closed, or not found. apply.workable.com, old company.workable.com and jobs.workable.com links all work. On apply.workable.com a closed job and one that never existed answer the same, so both come back closed. If none of the lines is a Workable job link, the run searches instead and charges for the jobs it finds.",
            "default": [],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}