{
  "openapi": "3.0.1",
  "info": {
    "title": "ATS Jobs Hiring Signals: Greenhouse, Lever & Ashby API",
    "description": "ATS jobs from Greenhouse, Lever and Ashby public APIs: salaries, remote flag, hiring signals and new-job alerts as clean JSON. No login.",
    "version": "1.0",
    "x-build-id": "VDRdIvoTMYtoDvMuf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/optimistprime~ats-jobs-hiring-signals/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-optimistprime-ats-jobs-hiring-signals",
        "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/optimistprime~ats-jobs-hiring-signals/runs": {
      "post": {
        "operationId": "runs-sync-optimistprime-ats-jobs-hiring-signals",
        "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/optimistprime~ats-jobs-hiring-signals/run-sync": {
      "post": {
        "operationId": "run-sync-optimistprime-ats-jobs-hiring-signals",
        "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": [
          "companies"
        ],
        "properties": {
          "companies": {
            "title": "Companies",
            "minItems": 1,
            "maxItems": 1000,
            "type": "array",
            "description": "Companies to fetch jobs for. Each entry can be an ATS board URL (e.g. https://boards.greenhouse.io/stripe, https://jobs.lever.co/palantir, https://jobs.ashbyhq.com/ramp), an ATS API URL, or a bare board slug (e.g. 'stripe'). Bare slugs are auto-detected across Greenhouse, Lever and Ashby. Max 1000 entries.",
            "items": {
              "type": "string"
            }
          },
          "ats": {
            "title": "ATS to try for bare slugs",
            "type": "array",
            "description": "Which ATS platforms to try when an entry is a bare slug. URLs always use the ATS they point to.",
            "items": {
              "type": "string",
              "enum": [
                "greenhouse",
                "lever",
                "ashby"
              ],
              "enumTitles": [
                "Greenhouse",
                "Lever",
                "Ashby"
              ]
            },
            "default": [
              "greenhouse",
              "lever",
              "ashby"
            ]
          },
          "outputMode": {
            "title": "Output",
            "enum": [
              "jobs",
              "jobs_and_summary",
              "summary_only"
            ],
            "type": "string",
            "description": "'jobs' = one row per job. 'jobs_and_summary' = job rows plus one hiring-signal summary row per company. 'summary_only' = only one summary row per company (cheapest way to check who is hiring).",
            "default": "jobs"
          },
          "keywords": {
            "title": "Title keywords (any match)",
            "type": "array",
            "description": "Keep only jobs whose title contains at least one of these (case-insensitive). Empty = all jobs.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keywordScope": {
            "title": "Match keywords in",
            "enum": [
              "title",
              "title_and_description"
            ],
            "type": "string",
            "description": "Where 'keywords' are matched: 'title' (default) or 'title_and_description' (title or full job description). Works with any descriptionFormat, including 'none'; no extra cost. excludeKeywords always match the title only.",
            "default": "title"
          },
          "excludeKeywords": {
            "title": "Exclude title keywords",
            "type": "array",
            "description": "Drop jobs whose title contains any of these (case-insensitive).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "locationContains": {
            "title": "Location contains (any match)",
            "type": "array",
            "description": "Keep only jobs where any location string contains one of these (case-insensitive), e.g. 'Remote', 'New York', 'Germany'.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "departments": {
            "title": "Departments / teams (any match)",
            "type": "array",
            "description": "Keep only jobs whose department or team contains at least one of these (case-insensitive), e.g. 'Engineering', 'Sales'. Jobs with no department/team are dropped when set. Empty = all jobs.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "employmentTypes": {
            "title": "Employment types",
            "type": "array",
            "description": "Keep only these normalized employment types: full_time, part_time, contract, intern, temporary, other. Jobs whose ATS publishes no employment type (common on Greenhouse) are kept too unless you turn off 'Include unknown employment type'. Listing 'unknown' always keeps them. Empty = all jobs.",
            "items": {
              "type": "string",
              "enum": [
                "full_time",
                "part_time",
                "contract",
                "intern",
                "temporary",
                "other",
                "unknown"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Intern",
                "Temporary",
                "Other",
                "Unknown (not published)"
              ]
            },
            "default": []
          },
          "includeUnknownEmploymentType": {
            "title": "Include unknown employment type",
            "type": "boolean",
            "description": "Only used when employmentTypes is set. true (default) also keeps jobs whose ATS publishes no employment type (employmentType null, e.g. most Greenhouse boards). false drops them, unless 'unknown' is listed in employmentTypes.",
            "default": true
          },
          "remoteOnly": {
            "title": "Remote only",
            "type": "boolean",
            "description": "Keep only jobs whose workplaceType is 'remote'. Greenhouse has no workplace field, so there a job counts as remote only when every location in its location name says remote (e.g. 'US-Remote').",
            "default": false
          },
          "remoteMatch": {
            "title": "Remote match",
            "enum": [
              "strict",
              "eligible"
            ],
            "type": "string",
            "description": "Only used when Remote only is on. 'strict' (default, unchanged behaviour) keeps jobs whose workplaceType is 'remote'. 'eligible' keeps jobs whose remoteEligible flag is true: the workplace field says remote OR any listed location mentions remote (e.g. Greenhouse 'SF, NYC, Seattle, Remote').",
            "default": "strict"
          },
          "postedWithinDays": {
            "title": "Posted within N days",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Keep only jobs first published within the last N days. 0 = no limit. Jobs without a publish date are kept only when this is 0.",
            "default": 0
          },
          "descriptionFormat": {
            "title": "Job description format",
            "enum": [
              "none",
              "text",
              "markdown",
              "html"
            ],
            "type": "string",
            "description": "'none' (smallest, best for AI agents/lead lists), 'text', 'markdown', or 'html'.",
            "default": "text"
          },
          "maxDescriptionChars": {
            "title": "Max description length",
            "minimum": 0,
            "maximum": 200000,
            "type": "integer",
            "description": "Truncate the description to this many characters (0 = no truncation). Truncated rows get descriptionTruncated=true.",
            "default": 0
          },
          "maxJobsPerCompany": {
            "title": "Max jobs per company",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Cap job rows per company (after filters). 0 = no cap.",
            "default": 0
          },
          "maxTotalJobs": {
            "title": "Max jobs total",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Global cap on job rows for the whole run. 0 = no cap. Use this to control cost. Prefilled 11 so a first try costs under $0.02; set 0 for every job.",
            "default": 0
          },
          "onlyNewJobs": {
            "title": "Monitor mode: only new jobs",
            "type": "boolean",
            "description": "Output (and charge for) only jobs not seen in previous runs with the same monitorId. Also emits 'job_removed' rows for jobs that disappeared since the last run.",
            "default": false
          },
          "monitorId": {
            "title": "Monitor ID",
            "pattern": "^[a-zA-Z0-9-]{1,40}$",
            "type": "string",
            "description": "Name for the monitor state (letters, digits, '-'). Runs with the same monitorId share 'seen jobs' history. Default: 'default'.",
            "default": "default"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Not needed for these official APIs. Leave off unless you hit rate limits.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}