{
  "openapi": "3.0.1",
  "info": {
    "title": "Job Board Keyword Signal Scanner",
    "description": "Scan one company domain or a list of them for open roles in 12 role categories or your own keywords, across Greenhouse, Lever, Ashby, Workday, and Rippling. Returns one flat Clay-ready row per domain with matched role counts, plus the full job description of each matched role when you ask for it.",
    "version": "0.1",
    "x-build-id": "CqhEArBvUkPZzJwIH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/mambalabs~job-board-keyword-signal-scanner/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-mambalabs-job-board-keyword-signal-scanner",
        "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/mambalabs~job-board-keyword-signal-scanner/runs": {
      "post": {
        "operationId": "runs-sync-mambalabs-job-board-keyword-signal-scanner",
        "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/mambalabs~job-board-keyword-signal-scanner/run-sync": {
      "post": {
        "operationId": "run-sync-mambalabs-job-board-keyword-signal-scanner",
        "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": [
          "role_categories"
        ],
        "properties": {
          "company_domain": {
            "title": "Company Domain",
            "type": "string",
            "description": "Bare domain to check, e.g. stripe.com. Optional when domains is set; when both are set, this domain is read first."
          },
          "domains": {
            "title": "Domains (list)",
            "type": "array",
            "description": "Optional. A list of bare domains to check in one run, e.g. stripe.com, notion.so. Each domain returns its own row, and each row is one result. Duplicates are removed; order is kept. Leave empty to check only company_domain.",
            "items": {
              "type": "string"
            }
          },
          "max_domains": {
            "title": "Maximum domains per run",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Optional. The run reads at most this many domains from company_domain and domains combined and skips the rest, so one input cannot run past the run timeout. Default 100, maximum 1,000.",
            "default": 100
          },
          "role_categories": {
            "title": "Role Categories",
            "type": "array",
            "description": "One or more of: GTM, Engineering, Finance, Operations, Executive, Marketing, HR, CustomerSuccess, Data, Product, Legal, Design, Custom. Matching is case insensitive and ignores separators, so customer_success, Customer Success and customerSuccess all work, and sales resolves to GTM. Defaults to GTM if empty.",
            "items": {
              "type": "string",
              "enum": [
                "GTM",
                "Engineering",
                "Finance",
                "Operations",
                "Executive",
                "Marketing",
                "HR",
                "CustomerSuccess",
                "Data",
                "Product",
                "Legal",
                "Design",
                "Custom"
              ]
            },
            "default": [
              "GTM"
            ]
          },
          "custom_keywords": {
            "title": "Custom Keywords",
            "type": "array",
            "description": "Required if Custom is in role_categories. Array of keyword strings. Prefix with T1: or T3: to set tier, otherwise defaults to Tier 2.",
            "items": {
              "type": "string"
            }
          },
          "previous_roles_detected": {
            "title": "Previous Roles Detected",
            "type": "string",
            "description": "Comma-separated matched role titles from a previous run of this actor. Used for change detection. Paste the matched_roles_detected value from a prior run. If empty, change detection is skipped."
          },
          "previous_run_date": {
            "title": "Previous Run Date",
            "type": "string",
            "description": "ISO date of the previous run (e.g. 2026-03-15). Optional. Used for traceability in change detection output."
          },
          "enable_fallback": {
            "title": "Enable Pre-Indexed Fallback",
            "type": "boolean",
            "description": "If true, calls a pre-indexed job database when the ATS cascade finds no match. Recovers coverage on domains that time out or use unsupported ATS platforms. Slightly increases run time for unmatched domains.",
            "default": true
          },
          "include_job_descriptions": {
            "title": "Include full job descriptions",
            "type": "boolean",
            "description": "If true, each row gets matched_postings: one object per matched role with its title, location, URL, posting date, and the full job description as plain text (up to 20,000 characters). Greenhouse, Lever, and Ashby descriptions come from one extra board read; Workday needs one extra read per matched role; Rippling and the pre-indexed fallback give no description (null). The price per row does not change.",
            "default": false
          },
          "max_postings_per_domain": {
            "title": "Maximum postings per domain",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Optional. With include_job_descriptions on, at most this many matched roles go into matched_postings for each domain. matched_role_count still counts every match. Default 25, maximum 100.",
            "default": 25
          },
          "max_charge_usd": {
            "title": "Maximum charge for this run (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Optional. The run stops before the next result that would take this run's charges over this amount, and keeps every result already charged. Leave empty to rely only on the maximum cost per run you set in Apify."
          },
          "source_tag": {
            "title": "Source Tag",
            "type": "string",
            "description": "Internal attribution tag set by Mamba Labs on published task examples. Not required, and nothing depends on it. Leave it empty."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}