{
  "openapi": "3.0.1",
  "info": {
    "title": "Account Hiring Watch",
    "description": "Watch company domains and get only what changed since the last run: new, closed, and reposted job postings read live from 17 job boards, Greenhouse, Lever, Ashby, and Workday among them. Each row has the full job description, a stable posting key, and 30 day hiring velocity. Flat rows or a webhook.",
    "version": "0.1",
    "x-build-id": "bl7HHZHbMbW5yWkOM"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/mambalabs~account-hiring-watch/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-mambalabs-account-hiring-watch",
        "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~account-hiring-watch/runs": {
      "post": {
        "operationId": "runs-sync-mambalabs-account-hiring-watch",
        "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~account-hiring-watch/run-sync": {
      "post": {
        "operationId": "run-sync-mambalabs-account-hiring-watch",
        "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": [
          "domains"
        ],
        "properties": {
          "domains": {
            "title": "Company domains to watch",
            "type": "array",
            "description": "Company website domains, one per line (for example stripe.com). The watch reads each company's own job board and returns only what changed since the last run with the same watch name. Up to 2,000 per run.",
            "items": {
              "type": "string"
            }
          },
          "watch_name": {
            "title": "Watch name",
            "type": "string",
            "description": "Keeps separate watch lists apart. Use one name per list or client. Changing the name starts a new watch, and its first run sets the baseline.",
            "default": "default"
          },
          "keyword_categories": {
            "title": "Role categories",
            "type": "array",
            "description": "Only changes to postings whose title matches these categories are returned and charged. All returns every posting change. Every posting still counts toward hiring velocity.",
            "items": {
              "type": "string",
              "enum": [
                "All",
                "GTM",
                "Engineering",
                "Finance",
                "Operations",
                "Executive",
                "Marketing",
                "HR",
                "CustomerSuccess",
                "Data",
                "Product",
                "Legal",
                "Design",
                "Custom"
              ],
              "enumTitles": [
                "All roles",
                "GTM (sales, revenue, growth)",
                "Engineering",
                "Finance",
                "Operations",
                "Executive",
                "Marketing",
                "HR and people",
                "Customer success",
                "Data",
                "Product",
                "Legal",
                "Design",
                "Custom keywords only"
              ]
            },
            "default": [
              "All"
            ]
          },
          "custom_keywords": {
            "title": "Custom title keywords",
            "type": "array",
            "description": "Extra title keywords, matched on whole words. Prefix with T1: for the strongest tier or T3: for the weakest; no prefix is tier 2. Adding any keyword also adds the Custom category.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "board_hints": {
            "title": "Job board hints",
            "type": "array",
            "description": "Optional. Point a domain at its job board when the watch cannot find it, as domain=provider:slug. Examples: acme.com=greenhouse:acmeinc, acme.com=workday:acme.wd5/External. Providers: greenhouse, lever, ashby, workable, smartrecruiters, personio, recruitee, workday, rippling.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "first_run_mode": {
            "title": "First run",
            "enum": [
              "recent",
              "baseline_only",
              "all_open"
            ],
            "type": "string",
            "description": "What a domain's first run returns. Recent returns postings the board dates inside the last N days. Baseline only returns the summary row. All open returns every open posting. First run changes are marked is_backfill and are never charged.",
            "default": "recent"
          },
          "first_run_recent_days": {
            "title": "First run window (days)",
            "type": "string",
            "description": "With First run set to Recent: how many days back counts as recent. 1 to 30.",
            "default": "7"
          },
          "closed_after_misses": {
            "title": "Close after missed reads",
            "type": "string",
            "description": "A posting closes after this many complete board reads without it. On Greenhouse, Lever, SmartRecruiters, Workable, and Recruitee a 404 from the posting itself closes it on the first miss. A partial read never counts. 1 to 5.",
            "default": "2"
          },
          "repost_window_days": {
            "title": "Repost window (days)",
            "type": "string",
            "description": "A closed posting that comes back inside this many days is reported as reposted, not new. 7 to 60.",
            "default": "30"
          },
          "include_job_description": {
            "title": "Include full job description",
            "enum": [
              "true",
              "false"
            ],
            "type": "string",
            "description": "Adds the full description text to new and reposted rows. Closed rows carry no description.",
            "default": "true"
          },
          "description_max_chars": {
            "title": "Description length cap (characters)",
            "type": "string",
            "description": "Longest description kept per row. job_description_chars always reports the full length. 500 to 100000.",
            "default": "20000"
          },
          "webhook_url": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional HTTPS endpoint. Changes are sent as signed Standard Webhooks requests. With a webhook set, a change is charged only after your endpoint answers 2xx; until then its dataset row is pending, without the description and URL, and it is retried first on the next run."
          },
          "webhook_secret": {
            "title": "Webhook signing secret",
            "type": "string",
            "description": "Required with a webhook URL. Used to sign each request (HMAC SHA256). A whsec_ prefixed secret is base64 decoded per the Standard Webhooks spec."
          },
          "webhook_batch_mode": {
            "title": "Webhook batching",
            "enum": [
              "batch",
              "per_change"
            ],
            "type": "string",
            "description": "Batch sends up to 50 changes per request, grouped by company. Per change sends one request per change, for tools where one request is one row (Clay table webhooks, Zapier).",
            "default": "batch"
          },
          "state_store": {
            "title": "State store (optional)",
            "type": "string",
            "description": "Optional key value store that holds the watch state. Leave empty to use the store account-hiring-watch-state in your own account."
          },
          "max_domains": {
            "title": "Maximum domains per run",
            "type": "string",
            "description": "Domains past this number are skipped. 1 to 2000.",
            "default": "500"
          },
          "max_charge_usd": {
            "title": "Maximum charge for this run (USD)",
            "type": "string",
            "description": "Optional. When the next change would take this run's charges over this amount, the remaining changes are held and delivered first on the next run. 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}