{
  "openapi": "3.0.1",
  "info": {
    "title": "Hiring Signal Check & ATS Detector — Greenhouse, Lever, Ashby",
    "description": "Hiring signals and ATS detection from company domains: is the company hiring, on Greenhouse, Lever or Ashby, and for what. Open role count, departments, seniority split and the technologies its job ads name. Each match is checked against the board's own links or published website. JSON/CSV/API/MCP.",
    "version": "0.1",
    "x-build-id": "AGvYN7507GN2gks1O"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/brenton8907~hiring-signal-check/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-brenton8907-hiring-signal-check",
        "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/brenton8907~hiring-signal-check/runs": {
      "post": {
        "operationId": "runs-sync-brenton8907-hiring-signal-check",
        "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/brenton8907~hiring-signal-check/run-sync": {
      "post": {
        "operationId": "run-sync-brenton8907-hiring-signal-check",
        "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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "hiring-check",
              "job-dump"
            ],
            "type": "string",
            "description": "hiring-check: one enrichment row per domain with counts and signals. job-dump: every open role on the company's board.",
            "default": "hiring-check"
          },
          "domains": {
            "title": "Company domains",
            "type": "array",
            "description": "One company domain per line. The board slug is resolved from the domain and then corroborated against the board's own job links, so a domain is answerable and a company name is not.",
            "items": {
              "type": "string"
            }
          },
          "platforms": {
            "title": "Platforms to check",
            "type": "array",
            "description": "Narrowing this makes a no-match cheaper and faster, at the cost of missing boards on the platforms you drop.",
            "items": {
              "type": "string",
              "enum": [
                "greenhouse",
                "lever",
                "ashby"
              ],
              "enumTitles": [
                "Greenhouse",
                "Lever",
                "Ashby"
              ]
            },
            "default": [
              "greenhouse",
              "lever",
              "ashby"
            ]
          },
          "extraSlugs": {
            "title": "Extra board slugs to try first",
            "type": "array",
            "description": "If you already know a company's board name, put it here and it is tried before the guesses. The most reliable way to fix a false 'no board found'.",
            "items": {
              "type": "string"
            }
          },
          "maxSlugCandidates": {
            "title": "Max slug guesses per domain",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "Nothing in a domain says what a company called its board, so the actor guesses: the brand, then common qualifiers stripped (ashbyhq.com -> ashby) and added (scale.com -> scaleai, box.com -> boxinc). Six covers the variants that produced real hits. Lowering it makes a no-match cheaper and risks reporting 'no board' for a company that is hiring; raising it costs more requests on negatives only.",
            "default": 6
          },
          "maxRequestsPerDomain": {
            "title": "Hard request ceiling per domain",
            "minimum": 3,
            "maximum": 60,
            "type": "integer",
            "description": "Absolute cap, whatever the other limits say. Six slug guesses across three platforms is 18 requests for a true no-match, so 24 leaves headroom. A domain stopped by this ceiling is reported with a hint saying the answer is provisional rather than as a clean 'no board'.",
            "default": 24
          },
          "includeTechStack": {
            "title": "Extract technologies from job descriptions",
            "type": "boolean",
            "description": "Scans postings for named technologies. Requires the fuller Greenhouse payload (5 MB on a 700-role board), so turning it off makes large boards noticeably lighter.",
            "default": true
          },
          "techSampleSize": {
            "title": "Postings to scan for technologies",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Reading all 721 of Stripe's postings to discover 'Python' is waste; the row reports how many were sampled.",
            "default": 40
          },
          "minTechMentions": {
            "title": "Minimum postings naming a technology",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Raise to 2 or 3 to drop technologies named in a single passing reference.",
            "default": 1
          },
          "maxRolesPerCompany": {
            "title": "Max roles per company (job-dump mode)",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Each role is one row and one job-listing charge ($0.001), so this caps the cost per company: at most $0.20 at the default. Only job-dump mode uses it.",
            "default": 200
          },
          "requestDelaySeconds": {
            "title": "Delay between requests",
            "minimum": 0,
            "maximum": 10,
            "type": "number",
            "description": "These are public APIs that did not rate-limit at this actor's pace, so the default is no delay. Raise it if you see HTTP 429.",
            "default": 0
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Not required: all three APIs are public and unauthenticated, with no bot protection observed. Provided for accounts that must route egress through a proxy.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}