{
  "openapi": "3.0.1",
  "info": {
    "title": "Greenhouse, Lever & Ashby Jobs: Company Hiring Signals",
    "description": "See which companies are hiring. Give company websites, get their open jobs from Greenhouse, Lever, Ashby, Workable and Personio job boards, with hiring by team, location and seniority, and changes since your last run. Pay per company with a job board, plus per job row in one-row-per-job mode.",
    "version": "0.1",
    "x-build-id": "vneuLxpLTfcNB1FqV"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/datatools_studio~company-hiring-signals/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-datatools_studio-company-hiring-signals",
        "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/datatools_studio~company-hiring-signals/runs": {
      "post": {
        "operationId": "runs-sync-datatools_studio-company-hiring-signals",
        "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/datatools_studio~company-hiring-signals/run-sync": {
      "post": {
        "operationId": "run-sync-datatools_studio-company-hiring-signals",
        "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",
        "required": [
          "companies"
        ],
        "properties": {
          "companies": {
            "title": "Companies",
            "type": "array",
            "description": "Company websites (for example <code>acme.com</code>) or job board links (for example <code>https://boards.greenhouse.io/acme</code>), one per line. For a website, the Actor finds the company's job board through the site and its careers page. Up to 50,000 per run; duplicates are skipped.",
            "items": {
              "type": "string"
            }
          },
          "outputMode": {
            "title": "Output",
            "enum": [
              "companies",
              "jobs"
            ],
            "type": "string",
            "description": "<b>One row per company</b> gives each company's open jobs count, hiring by team, function, location and seniority, recent postings and a short list of jobs. <b>One row per job</b> lists every open job with its details, and each job row is charged (see the Pricing tab); companies without jobs are listed in the COMPANIES record of the run's key-value store.",
            "default": "companies"
          },
          "jobTitleKeywords": {
            "title": "Job title keywords",
            "type": "array",
            "description": "Only count and list jobs whose title contains one of these words, for example <code>engineer</code>, <code>sales</code> or <code>data</code>. Whole words, any letter case. Leave empty for all jobs.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "jobLocationKeywords": {
            "title": "Job location keywords",
            "type": "array",
            "description": "Only count and list jobs whose location contains one of these words, for example <code>London</code>, <code>Germany</code>, <code>DE</code> or <code>remote</code>. Country names and two-letter country codes both work. Leave empty for all locations.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxJobsInCompanyRow": {
            "title": "Jobs listed in each company row",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "One row per company only: how many of the newest jobs to list in the row. Use 0 to leave the list out (handy for spreadsheets).",
            "default": 20
          },
          "maxJobsPerCompany": {
            "title": "Maximum jobs per company",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "One row per job only: the most job rows to write for one company, newest first. Use it to cap the cost of job rows.",
            "default": 1000
          },
          "guessBoards": {
            "title": "Try the company name on job boards",
            "type": "boolean",
            "description": "When the website has no link to a job board, try the company's name on Greenhouse, Lever, Ashby and Workable (and Personio for German, Austrian and Swiss domains). A board found this way is only used when its company name, or its job texts, match the company.",
            "default": true
          },
          "monitorChanges": {
            "title": "Report changes since the last run",
            "type": "boolean",
            "description": "Remember each company's open jobs in a named key-value store in your own account, and report the jobs opened and closed since your previous run. Use it with a schedule.",
            "default": false
          },
          "onlyNewJobs": {
            "title": "Only new jobs",
            "type": "boolean",
            "description": "One row per job with change tracking only: write only jobs that were not open at your previous run. The first run for a company writes no jobs; it saves the starting point.",
            "default": false
          },
          "monitorStoreName": {
            "title": "Storage name for change tracking",
            "type": "string",
            "description": "Name of the key-value store (in your account) that keeps each company's open jobs. Use different names to keep separate watch lists. The Actor creates this storage on the first run and can only use storages it created itself.",
            "default": "hiring-signals-monitor"
          },
          "respectRobotsTxt": {
            "title": "Respect robots.txt",
            "type": "boolean",
            "description": "Do not load company web pages that the website's robots.txt asks automated tools not to load. Public job board feeds are read either way.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Companies checked at the same time",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many companies to check in parallel. Requests to each job board are limited separately to stay polite.",
            "default": 20
          },
          "requestTimeoutSecs": {
            "title": "Request timeout",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "How long to wait for one web page or job feed before giving up.",
            "default": 20
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}