{
  "openapi": "3.0.1",
  "info": {
    "title": "ATS Jobs Scraper – Greenhouse, Lever, Ashby & Workday",
    "description": "Search jobs posted on company career pages (Greenhouse, Lever, Ashby and Workday) by role, keyword, location and remote status. Deduplicates listings and exports descriptions, company details and direct apply URLs.",
    "version": "0.1",
    "x-build-id": "QlofN6DEfWTuvzn52"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/herazur~ats-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-herazur-ats-jobs-scraper",
        "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/herazur~ats-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-herazur-ats-jobs-scraper",
        "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/herazur~ats-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-herazur-ats-jobs-scraper",
        "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": {
          "roles": {
            "title": "Job titles / roles",
            "type": "array",
            "description": "OR between roles; every word in a role must appear in the job title.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "keywords": {
            "title": "Description keywords",
            "type": "array",
            "description": "OR between phrases, searched in title and description. Combined with the role filter using AND.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "OR between locations. Europe and Turkey have a limited alias dictionary. Remote jobs still need to match the requested region.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "remote": {
            "title": "Remote only",
            "type": "boolean",
            "description": "True: explicitly remote. False: explicitly non-remote/hybrid. Omit this field in JSON to include all workplace types."
          },
          "postedWithinDays": {
            "title": "Posted within days",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Omit to disable date filtering. Uses ATS date and postedAtKind provenance, never firstSeenAt."
          },
          "maxResults": {
            "title": "Maximum unique jobs",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum delivered results after filters, deduplication and monitoring.",
            "default": 1000
          },
          "enrich": {
            "title": "Extract skills and seniority",
            "type": "boolean",
            "description": "Deterministic keyword extraction; no paid LLM calls or invented salary values.",
            "default": false
          },
          "monitor": {
            "title": "Persist job history",
            "type": "boolean",
            "description": "Preserve first delivered observation across scheduled runs. Run only one instance of a monitor scope at a time.",
            "default": false
          },
          "onlyNewJobs": {
            "title": "Only unseen jobs",
            "type": "boolean",
            "description": "Requires monitor. First run returns a baseline; later runs suppress previously delivered jobs.",
            "default": false
          },
          "monitorId": {
            "title": "Monitor name",
            "pattern": "^[a-zA-Z0-9_-]{1,80}$",
            "type": "string",
            "description": "Optional namespace. Search filters also form part of the history scope."
          },
          "discovery": {
            "title": "Search provider",
            "enum": [
              "auto",
              "brave",
              "serpapi",
              "none"
            ],
            "type": "string",
            "description": "Optional discovery of additional hosted ATS boards through web search. Requires your own Brave Search or SerpAPI key below. Auto tries Brave first, then SerpAPI on failure or no supported hits. None scans only your career URLs and the starter catalog.",
            "default": "auto"
          },
          "braveSearchApiKey": {
            "title": "Brave Search API key",
            "type": "string",
            "description": "Optional. Your Brave Search API key, used only to discover additional hosted ATS boards."
          },
          "serpApiKey": {
            "title": "SerpAPI key",
            "type": "string",
            "description": "Optional. Your SerpAPI key, used only to discover additional hosted ATS boards."
          },
          "maxDiscoveryQueries": {
            "title": "Maximum discovery queries",
            "minimum": 1,
            "maximum": 40,
            "type": "integer",
            "description": "Logical queries. Auto failover may make up to two provider calls per query, plus HTTP retries.",
            "default": 8
          },
          "careerUrls": {
            "title": "Additional ATS career URLs",
            "type": "array",
            "description": "Optional hosted Greenhouse, Lever, Ashby or Workday board/job URLs. Custom company domains are not resolved in this MVP.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "useCatalog": {
            "title": "Use fallback company catalog",
            "type": "boolean",
            "description": "Include a small starter catalog of four employers (Stripe, CI&T, Ashby and NVIDIA). This is not whole-web coverage.",
            "default": true
          },
          "sources": {
            "title": "ATS sources",
            "type": "array",
            "description": "Enabled connectors.",
            "items": {
              "type": "string",
              "enum": [
                "greenhouse",
                "lever",
                "ashby",
                "workday"
              ]
            },
            "default": [
              "greenhouse",
              "lever",
              "ashby",
              "workday"
            ]
          },
          "maxBoards": {
            "title": "Maximum career boards",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "User URLs, discovered boards, then catalog. See the run report for omitted boards.",
            "default": 20
          },
          "maxJobsPerBoard": {
            "title": "Per-board processing limit",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Lever/Workday listing scan cap; Greenhouse/Ashby title-matched processing cap after the full feed download. Truncation is reported.",
            "default": 250
          },
          "concurrency": {
            "title": "Concurrent career boards",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "HTTP requests are also throttled by host.",
            "default": 3
          },
          "unknownDatePolicy": {
            "title": "Jobs with unknown dates",
            "enum": [
              "exclude",
              "include"
            ],
            "type": "string",
            "description": "Only applies when postedWithinDays is set. Exclude is the strict default.",
            "default": "exclude"
          },
          "deduplication": {
            "title": "Deduplication",
            "enum": [
              "strict",
              "crossSource"
            ],
            "type": "string",
            "description": "Strict: same ATS identity or application URL. CrossSource additionally requires exact normalized company, title, locations and description across different ATS sources.",
            "default": "strict"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}