{
  "openapi": "3.0.1",
  "info": {
    "title": "Career Site Job Scraper: Workday, Greenhouse, Lever & more",
    "description": "Collect job postings from company career sites on 19 applicant tracking systems: Workday, Greenhouse, Lever, Ashby, SmartRecruiters, Teamtailor, Workable, Personio, BambooHR and more, plus the Nordic Jobylon, Varbi, ReachMee and EasyCruit. Clean normalized data, salaries, new-job monitoring.",
    "version": "1.2",
    "x-build-id": "mAh59kFLJbacXhGD2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/vimplement~career-site-jobs/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-vimplement-career-site-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/vimplement~career-site-jobs/runs": {
      "post": {
        "operationId": "runs-sync-vimplement-career-site-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/vimplement~career-site-jobs/run-sync": {
      "post": {
        "operationId": "run-sync-vimplement-career-site-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": {
          "startUrls": {
            "title": "Job board or careers page URLs",
            "type": "array",
            "description": "One URL per company. Use a job-board URL on a supported ATS (e.g. https://boards.greenhouse.io/figma, https://jobs.lever.co/spotify, https://jobs.ashbyhq.com/linear, https://apply.workable.com/acme, https://acme.teamtailor.com, https://acme.jobs.personio.de, https://acme.recruitee.com, https://careers.smartrecruiters.com/AcmeCorp, https://acme.easycruit.com) or simply the company's own careers page or website - the Actor then finds the embedded job board automatically (1-2 page loads per website). Also supported: Workday (https://acme.wd5.myworkdayjobs.com/External), BambooHR (https://acme.bamboohr.com), Breezy HR (https://acme.breezy.hr), Pinpoint (https://acme.pinpointhq.com), Rippling (https://ats.rippling.com/acme), JazzHR (https://acme.applytojob.com), Gem (https://jobs.gem.com/acme) and the Nordic ATS Varbi (https://kth.varbi.com), Jobylon (https://emp.jobylon.com/companies/3142-lkab, a Jobylon job link, or the company's careers page) and ReachMee (the company's careers page, or https://web103.reachmee.com/ext/I011/853/main?site=6&validator=...).",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "companies": {
            "title": "Companies by ATS and board name",
            "type": "array",
            "description": "Alternative to URLs: choose the ATS and enter the company's board name - the part after the domain, e.g. 'figma' for boards.greenhouse.io/figma, 'linear' for jobs.ashbyhq.com/linear, 'acme' for acme.teamtailor.com. SmartRecruiters uses the case-sensitive company id (e.g. 'BoschGroup'). The optional name replaces the company name in the output. Workday uses 'tenant.wdN/site' (e.g. 'adobe.wd5/external_experienced' for https://adobe.wd5.myworkdayjobs.com/external_experienced) - or simply paste the career-site URL. Varbi uses the subdomain ('kth' for kth.varbi.com), Jobylon the company number ('3142' for emp.jobylon.com/companies/3142-lkab) and ReachMee 'installation-customer-site' ('I011-853-6' for web103.reachmee.com/ext/I011/853/main?site=6).",
            "items": {
              "type": "object",
              "properties": {
                "ats": {
                  "title": "ATS",
                  "type": "string",
                  "description": "Applicant tracking system that hosts the job board.",
                  "editor": "select",
                  "enum": [
                    "greenhouse",
                    "lever",
                    "ashby",
                    "smartrecruiters",
                    "recruitee",
                    "workable",
                    "personio",
                    "teamtailor",
                    "easycruit",
                    "jobylon",
                    "reachmee",
                    "varbi",
                    "workday",
                    "bamboohr",
                    "breezy",
                    "pinpoint",
                    "rippling",
                    "jazzhr",
                    "gem"
                  ],
                  "enumTitles": [
                    "Greenhouse",
                    "Lever",
                    "Ashby",
                    "SmartRecruiters",
                    "Recruitee",
                    "Workable",
                    "Personio",
                    "Teamtailor",
                    "EasyCruit",
                    "Jobylon",
                    "ReachMee",
                    "Varbi",
                    "Workday",
                    "BambooHR",
                    "Breezy HR",
                    "Pinpoint",
                    "Rippling",
                    "JazzHR",
                    "Gem"
                  ]
                },
                "slug": {
                  "title": "Board name / company id",
                  "type": "string",
                  "description": "For example 'figma' (Greenhouse), 'spotify' (Lever), 'BoschGroup' (SmartRecruiters), 'acme' / 'jobs.acme.com' (Teamtailor custom domain), 'kth' (Varbi), '3142' (Jobylon) or 'I011-853-6' (ReachMee).",
                  "editor": "textfield"
                },
                "name": {
                  "title": "Company name (optional)",
                  "type": "string",
                  "description": "Display name to use in the 'company' field (Lever and Ashby do not publish one).",
                  "editor": "textfield"
                }
              },
              "required": [
                "ats",
                "slug"
              ]
            }
          },
          "descriptionFormat": {
            "title": "Job description format",
            "enum": [
              "text",
              "html",
              "both",
              "none"
            ],
            "type": "string",
            "description": "Plain text is clean and readable (paragraphs and '- ' bullet points). HTML is sanitized (formatting tags only, no scripts or styles). 'None' skips descriptions: fastest, and for ATS that need one request per job (SmartRecruiters, EasyCruit, Workday, BambooHR, Pinpoint, Rippling, JazzHR, Varbi, Jobylon, ReachMee) it avoids those requests unless a filter needs a detail.",
            "default": "text"
          },
          "titleKeywords": {
            "title": "Title contains any of",
            "type": "array",
            "description": "Keep only jobs whose title contains at least one of these words or phrases (case-insensitive, accents ignored). Keywords of up to 3 characters such as 'AI', 'QA' or 'IT' match whole words only. Leave empty to keep all jobs.",
            "items": {
              "type": "string"
            }
          },
          "excludeTitleKeywords": {
            "title": "Title must not contain",
            "type": "array",
            "description": "Drop jobs whose title contains any of these words or phrases (same matching rules as above).",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Keep only jobs whose location matches one of these terms: a city, region or country as text (case-insensitive substring), e.g. 'Oslo', 'London', 'Remote'. Country names in English or the local language and ISO codes (e.g. 'Norway', 'Norge', 'NO', 'Sverige', 'UK') also match jobs in that country.",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Keep only jobs marked as fully remote (by the ATS, or 'Remote' in the location). Hybrid jobs are excluded.",
            "default": false
          },
          "postedWithinDays": {
            "title": "Posted within the last N days",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Keep only jobs published in the last N days (uses the posting date, or the last-updated date when the ATS has no posting date). Jobs without any date are dropped when this is set."
          },
          "maxJobsPerCompany": {
            "title": "Max jobs per company",
            "minimum": 1,
            "type": "integer",
            "description": "Save at most this many jobs per company (newest first, after filters). Leave empty for all jobs."
          },
          "onlyNewJobs": {
            "title": "Only new jobs since previous runs",
            "type": "boolean",
            "description": "Remember the jobs saved in earlier runs (in a named key-value store in your account) and save only jobs not seen before. The first run returns all current jobs. Only saved jobs are remembered, so changing filters can bring in older jobs that now match.",
            "default": false
          },
          "monitoringId": {
            "title": "Monitoring ID",
            "pattern": "^[A-Za-z0-9_-]{1,40}$",
            "type": "string",
            "description": "Name of the memory used by 'Only new jobs'. Use a different ID for each saved configuration or schedule (letters, digits, '-' and '_'). Change it to start over.",
            "default": "default"
          },
          "redactContacts": {
            "title": "Remove e-mails and phone numbers from descriptions",
            "type": "boolean",
            "description": "Replace e-mail addresses and phone numbers inside job descriptions with '[email redacted]' / '[phone redacted]'. Recruiter names, e-mails and phone fields from the ATS are never included in the output either way.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max parallel requests",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many requests may run at the same time (companies are processed in parallel). At most 3 requests run against the same host at once regardless of this value.",
            "default": 5
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}