{
  "openapi": "3.0.1",
  "info": {
    "title": "Career Site Jobs Aggregator - ATS Salary Data",
    "description": "Open jobs from Greenhouse, Lever, Ashby, Workday, Workable, SmartRecruiters, Recruitee and Personio in one schema with normalized salaries.",
    "version": "0.2",
    "x-build-id": "UpRLcDgjd4C2C1mab"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/datagrit~career-site-jobs-aggregator/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-datagrit-career-site-jobs-aggregator",
        "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/datagrit~career-site-jobs-aggregator/runs": {
      "post": {
        "operationId": "runs-sync-datagrit-career-site-jobs-aggregator",
        "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/datagrit~career-site-jobs-aggregator/run-sync": {
      "post": {
        "operationId": "run-sync-datagrit-career-site-jobs-aggregator",
        "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": {
          "companies": {
            "title": "Companies (careers pages, job board URLs or slugs)",
            "type": "array",
            "description": "One entry per company, in any of these forms: a job board URL (boards.greenhouse.io/robinhood, jobs.lever.co/palantir, jobs.ashbyhq.com/ramp, apply.workable.com/huggingface, careers.smartrecruiters.com/BoschGroup, greatminds.recruitee.com, gokarla-gmbh.jobs.personio.de, nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite), a company careers page URL (the Actor reads the page once and uses the job board it links to most often), a bare slug such as robinhood (tried on Greenhouse, Lever, Ashby, Workable, Recruitee, Personio and SmartRecruiters in that order; the first board with open postings wins), or ats:slug such as lever:palantir to skip the guessing. Workday needs the full career site URL. Companies that are not found are listed in the run status; if none is found the run fails. With no company at all the Actor runs a small free example (Ramp on Ashby, up to 10 postings, not charged per result) and says so in the run status.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Job title keywords",
            "type": "array",
            "description": "Optional. Keep a posting when a word of its title starts with any of these terms (case-insensitive), so engineer also matches Engineering. Leave empty for all roles.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude title keywords",
            "type": "array",
            "description": "Optional. Drop a posting when a word of its title starts with any of these terms, for example intern or senior.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "departments": {
            "title": "Departments or teams",
            "type": "array",
            "description": "Optional. Keep only postings whose department or team contains a word starting with one of these terms, for example engineering or sales. Workday career sites do not publish a department, so their postings never match this filter.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Optional. Keep only postings where one of the listed locations contains a word starting with one of these terms, for example london, germany or new york. The check runs on the locations field of each result.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote roles only",
            "type": "boolean",
            "description": "Keep only postings with workplaceType remote. Hybrid roles are excluded. Lever, Ashby, SmartRecruiters and Recruitee publish the workplace type; for Greenhouse, Workable (postings not flagged remote), Personio and Workday it is remote when a location of the posting says Remote (Greenhouse: its main location).",
            "default": false
          },
          "employmentTypes": {
            "title": "Employment types",
            "type": "array",
            "description": "Optional. Keep only these normalized employment types: full_time, part_time, contract, temporary, internship, other. Greenhouse does not publish an employment type, so its postings never match this filter.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "onlyWithSalary": {
            "title": "Only postings with a salary",
            "type": "boolean",
            "description": "Skip postings without a salary range, either from the ATS pay fields or (when Read salary from description is on) from a pay range written in the job description.",
            "default": false
          },
          "salaryFromDescription": {
            "title": "Read salary from description",
            "type": "boolean",
            "description": "When the ATS has no pay field for a posting, look for an explicit pay range in the job description (for example 184,000 USD - 287,500 USD or $28.50 - $34.00 per hour). Only ranges with a currency and a clear period are used; single amounts, bonuses, stipends and funding figures are ignored. salarySource tells you where each salary came from.",
            "default": true
          },
          "minAnnualSalary": {
            "title": "Minimum annual salary",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only postings whose top salary, converted to a yearly amount (hourly x 2080, daily x 260, weekly x 52, monthly x 12), reaches this value. Amounts are never converted between currencies, so set Salary currencies together with this filter. 0 disables it. Postings without a yearly amount are skipped by this filter.",
            "default": 0
          },
          "salaryCurrencies": {
            "title": "Salary currencies",
            "type": "array",
            "description": "Optional. Keep only postings with a salary range in one of these currencies (three-letter codes such as USD, CAD, GBP or EUR). A posting with ranges in several currencies matches when any of them is listed, and its salary fields are then given in that currency.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "postedWithinDays": {
            "title": "Posted within days",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only postings published in the last N days, by the postedAt field. 0 disables the filter.",
            "default": 0
          },
          "onlyNewSinceLastRun": {
            "title": "Only postings new since my last run",
            "type": "boolean",
            "description": "Return only postings that earlier runs with the same companies and the same filters have not delivered to you. The Actor remembers the postings it actually returned, per job board and per filter combination, in a storage on your account; postings dropped by your filters or cut off by a result limit are not remembered and can still come later. Changing a filter starts a separate feed. The first run returns everything that matches.",
            "default": false
          },
          "includeDescription": {
            "title": "Include description text",
            "type": "boolean",
            "description": "Adds the plain-text job description, cut to 8000 characters. Off by default to keep the dataset small. SmartRecruiters postings have no description in the list the Actor reads, so it stays empty for them.",
            "default": false
          },
          "maxItemsPerCompany": {
            "title": "Maximum results per company",
            "minimum": 0,
            "type": "integer",
            "description": "Stop reading a company after this many results, so one large employer does not use up Maximum results. 0 means no per-company limit.",
            "default": 0
          },
          "maxItems": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many postings in total across all companies.",
            "default": 50
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional proxy. Leave disabled: the job board APIs the Actor reads are public and need none.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}