{
  "openapi": "3.0.1",
  "info": {
    "title": "ATS Jobs Scraper: Greenhouse, Lever, Ashby & More",
    "description": "Search jobs across 12,000+ verified career boards (Greenhouse, Lever, Ashby, Workable, Recruitee, Personio) or your own list. Seniority, country, salary and remote filters, new and closed job alerts, hiring velocity per company. $1.50/1K jobs.",
    "version": "0.5",
    "x-build-id": "vIdhOlitOEzBfrnfz"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/resonating_quoll~ats-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-resonating_quoll-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/resonating_quoll~ats-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-resonating_quoll-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/resonating_quoll~ats-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-resonating_quoll-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": {
          "companies": {
            "title": "Companies",
            "type": "array",
            "description": "One company per line, in any of these forms: a company name (\"Stripe\"), a career-board URL (\"https://jobs.lever.co/spotify\", \"job-boards.greenhouse.io/figma\", \"jobs.ashbyhq.com/ramp\", \"bunq.recruitee.com\", \"acme.jobs.personio.de\", \"apply.workable.com/acme\"), a careers-page URL or domain (\"https://www.notion.com/careers\", \"linear.app\"), a board slug (\"ramp\") or \"ats:slug\" (\"lever:spotify\"). Names and domains are matched against the built-in directory of 12,000+ verified company boards (12,033 at the last rebuild) first; careers pages are scanned for an embedded Greenhouse, Lever, Ashby, Recruitee, Personio or Workable board; unknown slugs are auto-detected. The old object format {\"ats\": \"greenhouse\", \"slug\": \"stripe\", \"name\": \"Stripe\"} still works through the API.",
            "items": {
              "type": "string"
            }
          },
          "presetLists": {
            "title": "Preset company lists",
            "type": "array",
            "description": "Add ready-made, verified lists of companies to your input: ai-ml (OpenAI, Anthropic, Cohere, Perplexity...), fintech (Stripe, Ramp, Plaid, Brex...), devtools (Vercel, Supabase, Datadog, Linear...), top-tech (Airbnb, Figma, Notion, Discord...), climate and health.",
            "items": {
              "type": "string",
              "enum": [
                "ai-ml",
                "fintech",
                "devtools",
                "top-tech",
                "climate",
                "health"
              ],
              "enumTitles": [
                "AI & machine learning (33 companies)",
                "Fintech & crypto (24)",
                "Developer tools & infrastructure (27)",
                "Top tech companies (26)",
                "Climate & energy (12)",
                "Health tech (10)"
              ]
            }
          },
          "searchAllCompanies": {
            "title": "Search every company in the directory",
            "type": "boolean",
            "description": "Search jobs across the whole built-in directory (12,000+ verified boards, ~10,300 with open jobs, on Greenhouse, Lever, Ashby, Recruitee, Personio and Workable) instead of only the companies you list. Combine with keywords, locations, remote only or posted since, and set Max results. A full sweep reads every board and takes about 5-10 minutes.",
            "default": false
          },
          "directoryAts": {
            "title": "Directory ATSs to search",
            "type": "array",
            "description": "Limit the directory search to these ATSs (empty = all).",
            "items": {
              "type": "string",
              "enum": [
                "greenhouse",
                "lever",
                "ashby",
                "recruitee",
                "personio",
                "workable"
              ],
              "enumTitles": [
                "Greenhouse",
                "Lever",
                "Ashby",
                "Recruitee",
                "Personio",
                "Workable"
              ]
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Keep only jobs whose title contains at least one of these words or phrases (case-insensitive). Leave empty to keep all.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop jobs whose title contains any of these words (case-insensitive), e.g. \"senior\", \"intern\", \"manager\".",
            "items": {
              "type": "string"
            }
          },
          "searchDescription": {
            "title": "Also match keywords in the description",
            "type": "boolean",
            "description": "If enabled, keywords are matched against the job description too, not just the title.",
            "default": false
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Keep only jobs whose location contains at least one of these strings (case-insensitive), e.g. \"New York\", \"London\", \"Germany\".",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote only",
            "type": "boolean",
            "description": "Keep only jobs that are remote (taken from the ATS workplace field when available, otherwise inferred from the location text).",
            "default": false
          },
          "postedSince": {
            "title": "Posted since",
            "type": "string",
            "description": "Keep only jobs posted (or first published) on or after this date. Accepts YYYY-MM-DD or a relative value such as \"7 days\" or \"2 weeks\"."
          },
          "seniority": {
            "title": "Seniority",
            "type": "array",
            "description": "Keep only these levels (from the job title, or the ATS's own level field). 'unknown' keeps jobs whose level can't be told.",
            "items": {
              "type": "string",
              "enum": [
                "intern",
                "junior",
                "mid",
                "senior",
                "staff",
                "principal",
                "lead",
                "manager",
                "head",
                "director",
                "vp",
                "executive",
                "unknown"
              ]
            }
          },
          "jobTypes": {
            "title": "Job type",
            "type": "array",
            "description": "Keep only these employment types (normalized across ATSs). 'unknown' keeps jobs that don't state one.",
            "items": {
              "type": "string",
              "enum": [
                "full_time",
                "part_time",
                "contract",
                "internship",
                "temporary",
                "unknown"
              ]
            }
          },
          "remoteTypes": {
            "title": "Workplace type",
            "type": "array",
            "description": "Keep only remote, hybrid or on-site jobs. More precise than 'Remote only', which also keeps hybrid roles that mention remote.",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "hybrid",
                "onsite",
                "unknown"
              ],
              "enumTitles": [
                "Remote",
                "Hybrid",
                "On-site",
                "Unknown"
              ]
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Keep jobs located in these countries. ISO codes or names, e.g. \"US\", \"GB\", \"Germany\". Uses the ATS's country field when it has one, else the location text (cities and US states are recognised).",
            "items": {
              "type": "string"
            }
          },
          "countriesIncludeRemoteUnknown": {
            "title": "Countries: also keep remote jobs with no country",
            "type": "boolean",
            "description": "With a country filter, also keep remote jobs whose location names no country (e.g. just \"Remote\").",
            "default": false
          },
          "requireSalary": {
            "title": "Only jobs with a salary",
            "type": "boolean",
            "description": "Keep only jobs that publish a pay range (structured or in the description).",
            "default": false
          },
          "minSalaryYearly": {
            "title": "Minimum yearly salary (salary floor)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep jobs whose top of range, annualized, is at least this amount in the listed currency. Jobs without a salary are dropped when set."
          },
          "onlyNew": {
            "title": "Only new jobs (monitoring mode)",
            "type": "boolean",
            "description": "Remember job IDs output by previous runs (in a named key-value store) and only output jobs not seen before. Ideal for scheduled runs. The first run outputs everything that matches; later runs skip older postings a cap left out (backlog), free.",
            "default": false
          },
          "stateKey": {
            "title": "Monitoring state name",
            "type": "string",
            "description": "Name used to store seen job IDs for 'Only new jobs'. Use a different name per watchlist so separate schedules don't interfere.",
            "default": "default"
          },
          "reportClosedJobs": {
            "title": "Report closed jobs",
            "type": "boolean",
            "description": "In monitoring mode, also output a free (not charged) record with event \"closed\" for each previously output job that is no longer listed on a board read in full this run.",
            "default": true
          },
          "includeDescription": {
            "title": "Include description text",
            "type": "boolean",
            "description": "Include the full job description (HTML stripped). Disable for smaller output.",
            "default": true
          },
          "includeDescriptionHtml": {
            "title": "Include description HTML",
            "type": "boolean",
            "description": "Also include the posting's original HTML in description_html (larger dataset).",
            "default": false
          },
          "dedupeByTitle": {
            "title": "Merge same title across locations",
            "type": "boolean",
            "description": "Jobs are always de-duplicated by URL and by company + title + location. Enable this to also merge postings with the same company + title in different locations into one record.",
            "default": false
          },
          "maxJobsPerCompany": {
            "title": "Max jobs per company",
            "minimum": 0,
            "type": "integer",
            "description": "Optional cap on the number of jobs output per company (0 = no limit). The form is prefilled with 5 so your first test run is quick and costs about 2 cents; set it to 0 to get every open job.",
            "default": 0
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many jobs in total (0 = no limit). Recommended when searching every company. You are never charged for more jobs than this.",
            "default": 0
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many of YOUR listed boards to fetch in parallel (directory-wide searches use a fixed, polite 16).",
            "default": 3
          },
          "velocityDays": {
            "title": "Hiring velocity window (days)",
            "minimum": 1,
            "maximum": 90,
            "type": "integer",
            "description": "Window for the HIRING_VELOCITY record: new jobs per company posted in the last N days.",
            "default": 7
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}