{
  "openapi": "3.0.1",
  "info": {
    "title": "HuntBoard Career Jobs Scraper",
    "description": "Scrape company career jobs from 13 ATS platforms, including Greenhouse, Ashby, Lever and Workday. Get available full descriptions, salary ranges, filters and change tracking. Live crawling with clear coverage reports.",
    "version": "0.6",
    "x-build-id": "axVwKHZE8QH6Hefke"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/leadproof~huntboard-career-jobs/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-leadproof-huntboard-career-jobs",
        "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/leadproof~huntboard-career-jobs/runs": {
      "post": {
        "operationId": "runs-sync-leadproof-huntboard-career-jobs",
        "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/leadproof~huntboard-career-jobs/run-sync": {
      "post": {
        "operationId": "run-sync-leadproof-huntboard-career-jobs",
        "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": "Search mode",
            "enum": [
              "live",
              "index"
            ],
            "type": "string",
            "description": "Live preserves existing scraping and monitoring. Index searches recently collected active jobs without crawling companies during your run.",
            "default": "live"
          },
          "indexQuery": {
            "title": "Index: keywords",
            "type": "string",
            "description": "Index mode only. Up to 12 words; all must match title, company or description. Not a title-only phrase filter."
          },
          "indexCountry": {
            "title": "Index: country",
            "type": "string",
            "description": "Index mode only. Exact two-letter country code, for example US or GB."
          },
          "indexSource": {
            "title": "Index: ATS source",
            "type": "string",
            "description": "Index mode only. Exact ATS identifier, for example greenhouse or ashby."
          },
          "indexCompany": {
            "title": "Index: company",
            "type": "string",
            "description": "Index mode only. Exact source-reported company name."
          },
          "indexWorkplace": {
            "title": "Index: work arrangement",
            "enum": [
              "Remote",
              "Hybrid",
              "On-site"
            ],
            "type": "string",
            "description": "Index mode only. Unknown arrangements do not match."
          },
          "indexCursor": {
            "title": "Index: continuation cursor",
            "type": "string",
            "description": "Copy next_cursor from SUMMARY and keep filters identical. Expires after 15 minutes; the index is live, not a frozen snapshot."
          },
          "boards": {
            "title": "Company boards",
            "type": "array",
            "description": "Optional specific boards. Each item contains platform, token, and optional extra. Comeet needs UID in extra; Workday needs wdN|site; Personio accepts de or com. Leave empty to use the bundled registry. See README examples. In index mode leave this empty and use only Index filters."
          },
          "platforms": {
            "title": "ATS platforms",
            "type": "array",
            "description": "Platforms to scan from the bundled registry. Explicit boards choose their own platforms unless this filter is provided.",
            "items": {
              "type": "string",
              "enum": [
                "greenhouse",
                "lever",
                "ashby",
                "comeet",
                "workable",
                "recruitee",
                "personio",
                "pinpoint",
                "smartrecruiters",
                "bamboohr",
                "breezy",
                "rippling",
                "workday"
              ]
            }
          },
          "titleSearch": {
            "title": "Job titles",
            "type": "array",
            "description": "Case-insensitive literal phrase matching. Any phrase may match; filters across fields are combined with AND.",
            "items": {
              "type": "string"
            }
          },
          "titleExclusionSearch": {
            "title": "Exclude titles",
            "type": "array",
            "description": "Exclude any title containing one of these literal phrases.",
            "items": {
              "type": "string"
            }
          },
          "descriptionSearch": {
            "title": "Description keywords",
            "type": "array",
            "description": "Search the title and available description. Any phrase may match; this is literal text, not regex or SQL.",
            "items": {
              "type": "string"
            }
          },
          "companySearch": {
            "title": "Companies",
            "type": "array",
            "description": "Case-insensitive phrase filter on the source-reported company name or board slug.",
            "items": {
              "type": "string"
            }
          },
          "locationSearch": {
            "title": "Locations",
            "type": "array",
            "description": "Case-insensitive phrase filter on raw source locations. Remote does not imply worldwide eligibility.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Two-letter country codes. Unresolved or regional-only locations will not match this strict filter.",
            "items": {
              "type": "string"
            }
          },
          "workplaceTypes": {
            "title": "Work arrangement",
            "type": "array",
            "description": "Unknown work arrangements do not match a filter.",
            "items": {
              "type": "string",
              "enum": [
                "Remote",
                "Hybrid",
                "On-site"
              ]
            }
          },
          "employmentTypes": {
            "title": "Employment type",
            "type": "array",
            "description": "Unknown or unmapped source types do not match a filter.",
            "items": {
              "type": "string",
              "enum": [
                "FULL_TIME",
                "PART_TIME",
                "CONTRACTOR",
                "TEMPORARY",
                "INTERN",
                "VOLUNTEER",
                "PER_DIEM",
                "OTHER"
              ]
            }
          },
          "postedAfter": {
            "title": "Posted on or after",
            "type": "string",
            "description": "YYYY-MM-DD or UTC ISO timestamp. Uses the source publication date. Jobs with unknown posting dates do not match."
          },
          "hasDescription": {
            "title": "Require a description",
            "type": "boolean",
            "description": "Return only jobs containing a nonempty description.",
            "default": false
          },
          "hasSalary": {
            "title": "Require structured salary",
            "type": "boolean",
            "description": "Return only jobs with a numeric salary range and currency supplied by Ashby, Lever, Breezy or Rippling. Text-only salary mentions and AI estimates are not included.",
            "default": false
          },
          "maxJobs": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Hard limit across active jobs and closure events. Result-capped boards do not advance their snapshot. In index mode the maximum is 1000; SUMMARY contains continuation and freshness details.",
            "default": 100
          },
          "maxBoards": {
            "title": "Maximum boards",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum boards in this shard. Selection is deterministic and prioritizes historical registry job counts.",
            "default": 50
          },
          "maxRequests": {
            "title": "Maximum HTTP requests",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Includes list requests, description requests, redirects and retries. Apify storage API calls are excluded.",
            "default": 250
          },
          "maxSeconds": {
            "title": "Source time limit (seconds)",
            "minimum": 10,
            "maximum": 1800,
            "type": "integer",
            "description": "Stops starting source requests after this deadline. Allow a higher platform timeout for flushing results and snapshots.",
            "default": 300
          },
          "concurrency": {
            "title": "Concurrent boards",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Concurrent board fetches. Each board may use up to five description requests concurrently.",
            "default": 3
          },
          "maxListPages": {
            "title": "Maximum list pages per board",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Lever and SmartRecruiters use pages of 100; Workday uses pages of 20. A page cap is reported as partial.",
            "default": 5
          },
          "fetchDescriptions": {
            "title": "Fetch optional descriptions",
            "type": "boolean",
            "description": "Fetches bounded detail pages for SmartRecruiters, BambooHR, Breezy and Rippling. Workday uses detail pages for normalized records. Other sources use descriptions from the list response. Disabling this option reduces coverage on these four sources.",
            "default": true
          },
          "maxDescriptionsPerBoard": {
            "title": "Maximum detail pages per board",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum detail records per board for SmartRecruiters, BambooHR, Breezy, Rippling and Workday. In detail mode, only jobs with successfully checked detail pages are returned; omitted listings make the board partial.",
            "default": 25
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Optional automatic change tracking. Use the same name on repeated runs, such as engineering-jobs. The first run establishes a baseline and returns matching jobs. Later runs reuse the completed checkpoint automatically. Names use 1-64 letters, numbers, hyphens or underscores. Board/filter changes create a separate baseline; increasing result limits preserves it. Do not combine with a previous snapshot ID."
          },
          "previousSnapshotStoreId": {
            "title": "Previous snapshot store ID",
            "type": "string",
            "description": "Advanced manual comparison: default key-value store ID from a completed run of this Actor with the same filters and detail settings. This is not a dataset ID, run ID or automatic monitor store ID. Leave empty when using a monitor name."
          },
          "outputMode": {
            "title": "Output mode",
            "enum": [
              "all",
              "changes"
            ],
            "type": "string",
            "description": "All observed matching jobs, or only new/updated/reopened jobs. Changes mode requires a monitor name or a previous snapshot. A new monitor initially returns all matching jobs as new.",
            "default": "all"
          },
          "includeClosed": {
            "title": "Include closure events",
            "type": "boolean",
            "description": "Requires a monitor name or a previous snapshot. A closure is inferred only after two consecutive complete scans of the same board miss a previously observed job. It is not confirmation from the employer.",
            "default": false
          },
          "shardCount": {
            "title": "Shard count",
            "minimum": 1,
            "maximum": 64,
            "type": "integer",
            "description": "Split board identities across this many runs. Keep shard count stable for a snapshot chain.",
            "default": 1
          },
          "shardIndex": {
            "title": "Shard index",
            "minimum": 0,
            "maximum": 63,
            "type": "integer",
            "description": "Zero-based shard number, less than shardCount.",
            "default": 0
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}