{
  "data": {
    "id": "Fyyah1xlgAHrHhYo1",
    "actId": "YMM8oKkDKWReRyR5Z",
    "userId": "NL4ThgItAwaoBlffQ",
    "startedAt": "2026-11-02T07:11:39.567Z",
    "finishedAt": "2026-11-02T07:11:43.229Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 3580,
      "runTimeSecs": 3.58,
      "computeUnits": 0.003977777777777778,
      "imageSizeBytes": 318968832
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "zifX0mkAFMHe8CatY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Lever Jobs Scraper Input\",\n  \"description\": \"Collect open postings from Lever job boards by company slug, board URL, API URL or posting URL. Global and EU boards are supported; all filters run on the complete board data.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"description\": \"Fetch every open posting from one or more boards, or fetch specific postings by ID or URL.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"getJobs\",\n        \"getJob\"\n      ],\n      \"enumTitles\": [\n        \"Get all postings from boards or URLs\",\n        \"Get specific postings by ID or URL\"\n      ],\n      \"default\": \"getJobs\",\n      \"prefill\": \"getJobs\"\n    },\n    \"companySlugs\": {\n      \"title\": \"Companies (mode=getJobs)\",\n      \"type\": \"array\",\n      \"description\": \"Company slugs, board URLs, API URLs or posting URLs. Examples: \\\"wealthfront\\\", \\\"https://jobs.lever.co/wealthfront\\\", \\\"https://jobs.eu.lever.co/olx\\\", \\\"https://api.lever.co/v0/postings/wealthfront\\\".\",\n      \"editor\": \"stringList\",\n      \"prefill\": [\n        \"wealthfront\"\n      ]\n    },\n    \"companySlug\": {\n      \"title\": \"Company (mode=getJob)\",\n      \"type\": \"string\",\n      \"description\": \"Company slug, board URL, API URL or posting URL used with postingIds (mode=getJob).\",\n      \"editor\": \"textfield\"\n    },\n    \"postingIds\": {\n      \"title\": \"Posting IDs (mode=getJob)\",\n      \"type\": \"array\",\n      \"description\": \"Posting UUIDs or posting/apply URLs (mode=getJob).\",\n      \"editor\": \"stringList\"\n    },\n    \"boardRegion\": {\n      \"title\": \"Lever region\",\n      \"type\": \"string\",\n      \"description\": \"Use auto to try the global board first and fall back to the EU board when global returns 404 or no postings.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"auto\",\n        \"global\",\n        \"eu\"\n      ],\n      \"enumTitles\": [\n        \"Auto-detect\",\n        \"Global (api.lever.co)\",\n        \"EU (api.eu.lever.co)\"\n      ],\n      \"default\": \"auto\",\n      \"prefill\": \"auto\"\n    },\n    \"team\": {\n      \"title\": \"Team\",\n      \"type\": \"string\",\n      \"description\": \"Keep postings whose team contains this text (case-insensitive).\",\n      \"editor\": \"textfield\"\n    },\n    \"department\": {\n      \"title\": \"Department\",\n      \"type\": \"string\",\n      \"description\": \"Keep postings whose department contains this text (case-insensitive).\",\n      \"editor\": \"textfield\"\n    },\n    \"location\": {\n      \"title\": \"Location\",\n      \"type\": \"string\",\n      \"description\": \"Keep postings whose primary location or any additional location contains this text (case-insensitive), e.g. \\\"London\\\" or \\\"Remote\\\".\",\n      \"editor\": \"textfield\"\n    },\n    \"commitment\": {\n      \"title\": \"Commitment\",\n      \"type\": \"string\",\n      \"description\": \"Keep postings whose commitment or normalized employment type matches this text, e.g. \\\"Full-time\\\", \\\"Contract\\\", \\\"Internship\\\".\",\n      \"editor\": \"textfield\"\n    },\n    \"workplaceType\": {\n      \"title\": \"Workplace type\",\n      \"type\": \"string\",\n      \"description\": \"Keep postings with this exact workplace arrangement.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"\",\n        \"remote\",\n        \"hybrid\",\n        \"onsite\",\n        \"unspecified\"\n      ],\n      \"enumTitles\": [\n        \"All workplaces\",\n        \"Remote\",\n        \"Hybrid\",\n        \"On-site\",\n        \"Unspecified\"\n      ],\n      \"default\": \"\",\n      \"prefill\": \"\"\n    },\n    \"remoteOnly\": {\n      \"title\": \"Remote only\",\n      \"type\": \"boolean\",\n      \"description\": \"Keep only postings marked remote or with a remote location.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"country\": {\n      \"title\": \"Country\",\n      \"type\": \"string\",\n      \"description\": \"Keep postings for one ISO 3166-1 alpha-2 country code, e.g. \\\"US\\\", \\\"DE\\\" or \\\"IN\\\".\",\n      \"editor\": \"textfield\"\n    },\n    \"titleKeywords\": {\n      \"title\": \"Title must include\",\n      \"type\": \"array\",\n      \"description\": \"Keep postings whose title contains every word in this list, in any order.\",\n      \"editor\": \"stringList\"\n    },\n    \"excludeTitleKeywords\": {\n      \"title\": \"Title must not include\",\n      \"type\": \"array\",\n      \"description\": \"Drop postings whose title contains any word in this list.\",\n      \"editor\": \"stringList\"\n    },\n    \"postedAfter\": {\n      \"title\": \"Posted after\",\n      \"type\": \"string\",\n      \"description\": \"Keep postings created on or after this date (YYYY-MM-DD).\",\n      \"editor\": \"textfield\"\n    },\n    \"hasSalaryOnly\": {\n      \"title\": \"Has salary only\",\n      \"type\": \"boolean\",\n      \"description\": \"Keep only postings with a structured salary range published by Lever.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"salaryMin\": {\n      \"title\": \"Minimum salary\",\n      \"type\": \"integer\",\n      \"description\": \"Keep postings whose structured salary range starts at or above this value (same currency and interval as the posting).\",\n      \"minimum\": 0,\n      \"maximum\": 100000000\n    },\n    \"maxItems\": {\n      \"title\": \"Max items\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum number of posting records to emit.\",\n      \"minimum\": 1,\n      \"maximum\": 10000,\n      \"default\": 500,\n      \"prefill\": 3\n    },\n    \"maxItemsPerCompany\": {\n      \"title\": \"Max items per company\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum records per company board; 0 means no per-company limit.\",\n      \"minimum\": 0,\n      \"maximum\": 10000,\n      \"default\": 0,\n      \"prefill\": 0\n    },\n    \"includeDescription\": {\n      \"title\": \"Include descriptions\",\n      \"type\": \"boolean\",\n      \"description\": \"Include full and section descriptions plus requirement lists.\",\n      \"default\": true,\n      \"prefill\": true\n    },\n    \"includeHtml\": {\n      \"title\": \"Include HTML\",\n      \"type\": \"boolean\",\n      \"description\": \"Add the original HTML for descriptions, additional text and list content.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"onlyNewSinceLastRun\": {\n      \"title\": \"Only new since last run\",\n      \"type\": \"boolean\",\n      \"description\": \"Emit only postings not seen by an earlier run with the same query shape. The first run returns everything.\",\n      \"default\": false,\n      \"prefill\": false\n    }\n  },\n  \"required\": [\n    \"mode\"\n  ]\n}",
    "readme": "# Lever Job Board Scraper — Global & EU Boards\n\nLever hosts the public job boards used by thousands of companies, from early-stage startups to public technology firms. This actor reads those boards directly and returns open roles with their full description, location list, workplace type, country, employment type, salary data when the employer publishes it, and direct apply link. It accepts bare company slugs as well as board, API and posting URLs, and finds EU-only boards automatically.\n\n## What this actor does\n\n- **Reads global and EU Lever boards** from a company slug, `jobs.lever.co` URL, `api.lever.co` URL or a single posting URL\n- **Auto-detects the EU instance** when the global board is missing or empty\n- **Filters every posting client-side** by team, department, location, commitment, workplace type, remote-only, country, title words, posting date and salary\n- **Returns the complete posting**, including all locations, workplace type, country, normalized employment type, salary range and readable salary text, description sections and requirement lists\n- **Supports monitoring** with an only-new-since-last-run option that skips postings seen by a previous run\n- **Never emits empty fields** — a field is present only when Lever published a real value\n\n## Output per posting\n\n- `id` — Lever posting UUID\n- `title` — job title\n- `companySlug` — board slug from Lever\n- `companyName` — display name derived from the slug (a readable guess; Lever's API does not publish the official company name)\n- `boardRegion` — `global` or `eu`\n- `boardUrl` — the company's Lever board URL for that region\n- `categories` — nested `commitment`, `location`, `team` and `department`\n- `commitment`, `department`, `team`, `location` — the same values as top-level fields\n- `locations[]` — every location on the posting; falls back to the primary location\n- `workplaceType` — `remote`, `hybrid`, `onsite` or `unspecified`\n- `isRemote` — true when the posting is remote or has a remote location\n- `country` — ISO 3166-1 alpha-2 country code\n- `employmentType` — normalized from the raw commitment: `full-time`, `part-time`, `contract`, `internship`, `temporary` or `other`\n- `salaryRange` — structured `min`, `max`, `currency` and `interval` when published\n- `salaryMin`, `salaryMax`, `salaryCurrency`, `salaryInterval`, `salaryText` — flattened salary values and a readable range such as `USD 75,000–85,000 per year`\n- `salaryDescriptionPlain` — salary text when the employer wrote one but did not publish a structured range\n- `descriptionPlain` — combined plain-text description\n- `openingPlain`, `descriptionBodyPlain`, `additionalPlain` — separate description sections\n- `additional` — closing or benefits text (same as `additionalPlain`)\n- `lists[]` — requirement/responsibility groups as `{text, content}`\n- `descriptionHtml`, `additionalHtml`, `lists[].contentHtml` — original HTML when `includeHtml` is enabled\n- `applyUrl`, `hostedUrl`, `sourceUrl` — application link and public posting links\n- `createdAt` — ISO 8601 UTC posting timestamp\n- `recordType: \"job\"`, `scrapedAt`\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `getJobs` | `getJobs` for whole boards, or `getJob` for specific postings |\n| `companySlugs` | array | – | Slugs, board URLs, API URLs or posting URLs (mode=`getJobs`) |\n| `companySlug` | string | – | Company slug, board URL or posting URL (mode=`getJob`) |\n| `postingIds` | array | – | Posting UUIDs or posting/apply URLs (mode=`getJob`) |\n| `boardRegion` | string | `auto` | `auto`, `global` or `eu`; auto falls back to EU on an empty or missing global board |\n| `team` | string | – | Team contains this text |\n| `department` | string | – | Department contains this text |\n| `location` | string | – | Any location on the posting contains this text |\n| `commitment` | string | – | Commitment text or normalized employment type matches |\n| `workplaceType` | string | – | `remote`, `hybrid`, `onsite` or `unspecified` |\n| `remoteOnly` | boolean | `false` | Keep remote postings only |\n| `country` | string | – | ISO alpha-2 code, e.g. `US` or `DE` |\n| `titleKeywords` | array | – | Every word must appear in the title |\n| `excludeTitleKeywords` | array | – | Drop titles containing any of these words |\n| `postedAfter` | string | – | Keep postings created on or after `YYYY-MM-DD` |\n| `hasSalaryOnly` | boolean | `false` | Keep postings with a structured salary range |\n| `salaryMin` | integer | – | Minimum structured salary value |\n| `maxItems` | integer | `500` | Global record cap (1–10,000) |\n| `maxItemsPerCompany` | integer | `0` | Per-board cap; `0` means no limit |\n| `includeDescription` | boolean | `true` | Include description text and lists |\n| `includeHtml` | boolean | `false` | Include original HTML fields |\n| `onlyNewSinceLastRun` | boolean | `false` | Emit only postings unseen by a previous matching run |\n\n## Examples\n\n### Every open role from several companies\n\n```json\n{\n  \"mode\": \"getJobs\",\n  \"companySlugs\": [\"wealthfront\", \"cologix\", \"runlaminar\"],\n  \"maxItems\": 500\n}\n```\n\n### Board and posting URLs, including an EU-only company\n\n```json\n{\n  \"mode\": \"getJobs\",\n  \"companySlugs\": [\n    \"https://jobs.lever.co/gohighlevel\",\n    \"https://jobs.eu.lever.co/olx\",\n    \"https://jobs.lever.co/wealthfront/78d6f6d5-2c6b-4f7f-9f0e-000000000000\"\n  ]\n}\n```\n\n### Remote engineering roles posted this year\n\n```json\n{\n  \"mode\": \"getJobs\",\n  \"companySlugs\": [\"agile-defense\", \"contentsquare\"],\n  \"team\": \"Engineering\",\n  \"remoteOnly\": true,\n  \"titleKeywords\": [\"engineer\"],\n  \"postedAfter\": \"2026-01-01\",\n  \"hasSalaryOnly\": true\n}\n```\n\n### Look up specific postings by URL\n\n```json\n{\n  \"mode\": \"getJob\",\n  \"companySlug\": \"wealthfront\",\n  \"postingIds\": [\n    \"https://jobs.lever.co/wealthfront/78d6f6d5-2c6b-4f7f-9f0e-000000000000\",\n    \"https://jobs.lever.co/wealthfront/78d6f6d5-2c6b-4f7f-9f0e-111111111111/apply\"\n  ]\n}\n```\n\n## Use cases\n\n- **Job aggregation** — feed a niche job board with complete postings from selected Lever employers\n- **Competitive hiring intelligence** — see which teams and locations a competitor is growing\n- **Recruiting outreach** — export remote engineering roles with published salary ranges\n- **Market research** — compare workplace arrangements, countries and salary ranges across companies\n- **Scheduled monitoring** — run daily with only-new mode to capture fresh postings for alerts\n\n## FAQ\n\n### Do I need a Lever account, API key or cookies?\n\nNo. Lever's public postings API is open, and this actor reads only public board data.\n\n### Do I need to configure a proxy?\n\nNo. The actor connects to Lever directly and needs no proxy setup.\n\n### How do I find a company's Lever slug?\n\nOpen the company's careers page. If it is hosted by Lever, the URL looks like `https://jobs.lever.co/company-slug`; the slug is the last path segment. The actor also accepts the whole URL.\n\n### Why do some postings have no salary fields?\n\nLever only returns salary data when the employer chooses to publish it, either as a structured range or as salary text. The actor never estimates or fabricates a range, so salary fields are simply absent on postings without published pay.\n\n### What is the difference between `commitment` and `employmentType`?\n\n`commitment` is the employer's raw text, which can vary (`Full-Time`, `Full time`, `EE Full-Time`, `Contract`). `employmentType` is a normalized value for filtering and analysis while the raw value is kept for traceability.\n\n### Why is `companyName` sometimes not the official brand name?\n\nLever's API does not return a display name, so the actor derives one from the company slug. Treat it as a readable label rather than an authoritative company name.\n\n### How does auto region detection work?\n\nThe actor queries the global Lever host first. If the board is missing there, or returns no postings but the company uses Lever's EU host, the actor retries on `api.eu.lever.co` and labels those records `boardRegion: \"eu\"`. An EU board URL goes straight to the EU host.\n\n### Can I search every Lever company at once?\n\nNo. Lever has no public cross-company search endpoint; boards are read per company. Add as many company slugs or URLs as you need to one run.\n\n### Does the actor report closed jobs?\n\nNo. Lever only exposes currently published postings, so a posting disappears when it is closed and there is no closed-job or update timestamp. Only-new monitoring reports postings that were not seen on an earlier run.\n\n### Is this actor affiliated with Lever?\n\nNo. It is an independent third-party actor that reads Lever's public job board data and is not endorsed by or affiliated with Lever Inc.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "lever-job-board-postings-by-company-slug",
      "title": "Lever Job Board Scraper — Global & EU Boards",
      "description": "Scrape open roles from Lever job boards by company slug or URL, global or EU. Get full descriptions, locations, workplace type, country, employment type, salary ranges, apply links and filters for team, location, commitment and remote work.",
      "version": "2.0",
      "buildTag": "latest",
      "dockerfile": "./Dockerfile",
      "readme": "# Lever Job Board Scraper — Global & EU Boards\n\nLever hosts the public job boards used by thousands of companies, from early-stage startups to public technology firms. This actor reads those boards directly and returns open roles with their full description, location list, workplace type, country, employment type, salary data when the employer publishes it, and direct apply link. It accepts bare company slugs as well as board, API and posting URLs, and finds EU-only boards automatically.\n\n## What this actor does\n\n- **Reads global and EU Lever boards** from a company slug, `jobs.lever.co` URL, `api.lever.co` URL or a single posting URL\n- **Auto-detects the EU instance** when the global board is missing or empty\n- **Filters every posting client-side** by team, department, location, commitment, workplace type, remote-only, country, title words, posting date and salary\n- **Returns the complete posting**, including all locations, workplace type, country, normalized employment type, salary range and readable salary text, description sections and requirement lists\n- **Supports monitoring** with an only-new-since-last-run option that skips postings seen by a previous run\n- **Never emits empty fields** — a field is present only when Lever published a real value\n\n## Output per posting\n\n- `id` — Lever posting UUID\n- `title` — job title\n- `companySlug` — board slug from Lever\n- `companyName` — display name derived from the slug (a readable guess; Lever's API does not publish the official company name)\n- `boardRegion` — `global` or `eu`\n- `boardUrl` — the company's Lever board URL for that region\n- `categories` — nested `commitment`, `location`, `team` and `department`\n- `commitment`, `department`, `team`, `location` — the same values as top-level fields\n- `locations[]` — every location on the posting; falls back to the primary location\n- `workplaceType` — `remote`, `hybrid`, `onsite` or `unspecified`\n- `isRemote` — true when the posting is remote or has a remote location\n- `country` — ISO 3166-1 alpha-2 country code\n- `employmentType` — normalized from the raw commitment: `full-time`, `part-time`, `contract`, `internship`, `temporary` or `other`\n- `salaryRange` — structured `min`, `max`, `currency` and `interval` when published\n- `salaryMin`, `salaryMax`, `salaryCurrency`, `salaryInterval`, `salaryText` — flattened salary values and a readable range such as `USD 75,000–85,000 per year`\n- `salaryDescriptionPlain` — salary text when the employer wrote one but did not publish a structured range\n- `descriptionPlain` — combined plain-text description\n- `openingPlain`, `descriptionBodyPlain`, `additionalPlain` — separate description sections\n- `additional` — closing or benefits text (same as `additionalPlain`)\n- `lists[]` — requirement/responsibility groups as `{text, content}`\n- `descriptionHtml`, `additionalHtml`, `lists[].contentHtml` — original HTML when `includeHtml` is enabled\n- `applyUrl`, `hostedUrl`, `sourceUrl` — application link and public posting links\n- `createdAt` — ISO 8601 UTC posting timestamp\n- `recordType: \"job\"`, `scrapedAt`\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `getJobs` | `getJobs` for whole boards, or `getJob` for specific postings |\n| `companySlugs` | array | – | Slugs, board URLs, API URLs or posting URLs (mode=`getJobs`) |\n| `companySlug` | string | – | Company slug, board URL or posting URL (mode=`getJob`) |\n| `postingIds` | array | – | Posting UUIDs or posting/apply URLs (mode=`getJob`) |\n| `boardRegion` | string | `auto` | `auto`, `global` or `eu`; auto falls back to EU on an empty or missing global board |\n| `team` | string | – | Team contains this text |\n| `department` | string | – | Department contains this text |\n| `location` | string | – | Any location on the posting contains this text |\n| `commitment` | string | – | Commitment text or normalized employment type matches |\n| `workplaceType` | string | – | `remote`, `hybrid`, `onsite` or `unspecified` |\n| `remoteOnly` | boolean | `false` | Keep remote postings only |\n| `country` | string | – | ISO alpha-2 code, e.g. `US` or `DE` |\n| `titleKeywords` | array | – | Every word must appear in the title |\n| `excludeTitleKeywords` | array | – | Drop titles containing any of these words |\n| `postedAfter` | string | – | Keep postings created on or after `YYYY-MM-DD` |\n| `hasSalaryOnly` | boolean | `false` | Keep postings with a structured salary range |\n| `salaryMin` | integer | – | Minimum structured salary value |\n| `maxItems` | integer | `500` | Global record cap (1–10,000) |\n| `maxItemsPerCompany` | integer | `0` | Per-board cap; `0` means no limit |\n| `includeDescription` | boolean | `true` | Include description text and lists |\n| `includeHtml` | boolean | `false` | Include original HTML fields |\n| `onlyNewSinceLastRun` | boolean | `false` | Emit only postings unseen by a previous matching run |\n\n## Examples\n\n### Every open role from several companies\n\n```json\n{\n  \"mode\": \"getJobs\",\n  \"companySlugs\": [\"wealthfront\", \"cologix\", \"runlaminar\"],\n  \"maxItems\": 500\n}\n```\n\n### Board and posting URLs, including an EU-only company\n\n```json\n{\n  \"mode\": \"getJobs\",\n  \"companySlugs\": [\n    \"https://jobs.lever.co/gohighlevel\",\n    \"https://jobs.eu.lever.co/olx\",\n    \"https://jobs.lever.co/wealthfront/78d6f6d5-2c6b-4f7f-9f0e-000000000000\"\n  ]\n}\n```\n\n### Remote engineering roles posted this year\n\n```json\n{\n  \"mode\": \"getJobs\",\n  \"companySlugs\": [\"agile-defense\", \"contentsquare\"],\n  \"team\": \"Engineering\",\n  \"remoteOnly\": true,\n  \"titleKeywords\": [\"engineer\"],\n  \"postedAfter\": \"2026-01-01\",\n  \"hasSalaryOnly\": true\n}\n```\n\n### Look up specific postings by URL\n\n```json\n{\n  \"mode\": \"getJob\",\n  \"companySlug\": \"wealthfront\",\n  \"postingIds\": [\n    \"https://jobs.lever.co/wealthfront/78d6f6d5-2c6b-4f7f-9f0e-000000000000\",\n    \"https://jobs.lever.co/wealthfront/78d6f6d5-2c6b-4f7f-9f0e-111111111111/apply\"\n  ]\n}\n```\n\n## Use cases\n\n- **Job aggregation** — feed a niche job board with complete postings from selected Lever employers\n- **Competitive hiring intelligence** — see which teams and locations a competitor is growing\n- **Recruiting outreach** — export remote engineering roles with published salary ranges\n- **Market research** — compare workplace arrangements, countries and salary ranges across companies\n- **Scheduled monitoring** — run daily with only-new mode to capture fresh postings for alerts\n\n## FAQ\n\n### Do I need a Lever account, API key or cookies?\n\nNo. Lever's public postings API is open, and this actor reads only public board data.\n\n### Do I need to configure a proxy?\n\nNo. The actor connects to Lever directly and needs no proxy setup.\n\n### How do I find a company's Lever slug?\n\nOpen the company's careers page. If it is hosted by Lever, the URL looks like `https://jobs.lever.co/company-slug`; the slug is the last path segment. The actor also accepts the whole URL.\n\n### Why do some postings have no salary fields?\n\nLever only returns salary data when the employer chooses to publish it, either as a structured range or as salary text. The actor never estimates or fabricates a range, so salary fields are simply absent on postings without published pay.\n\n### What is the difference between `commitment` and `employmentType`?\n\n`commitment` is the employer's raw text, which can vary (`Full-Time`, `Full time`, `EE Full-Time`, `Contract`). `employmentType` is a normalized value for filtering and analysis while the raw value is kept for traceability.\n\n### Why is `companyName` sometimes not the official brand name?\n\nLever's API does not return a display name, so the actor derives one from the company slug. Treat it as a readable label rather than an authoritative company name.\n\n### How does auto region detection work?\n\nThe actor queries the global Lever host first. If the board is missing there, or returns no postings but the company uses Lever's EU host, the actor retries on `api.eu.lever.co` and labels those records `boardRegion: \"eu\"`. An EU board URL goes straight to the EU host.\n\n### Can I search every Lever company at once?\n\nNo. Lever has no public cross-company search endpoint; boards are read per company. Add as many company slugs or URLs as you need to one run.\n\n### Does the actor report closed jobs?\n\nNo. Lever only exposes currently published postings, so a posting disappears when it is closed and there is no closed-job or update timestamp. Only-new monitoring reports postings that were not seen on an earlier run.\n\n### Is this actor affiliated with Lever?\n\nNo. It is an independent third-party actor that reads Lever's public job board data and is not endorsed by or affiliated with Lever Inc.\n",
      "input": {
        "title": "Lever Jobs Scraper Input",
        "description": "Collect open postings from Lever job boards by company slug, board URL, API URL or posting URL. Global and EU boards are supported; all filters run on the complete board data.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "description": "Fetch every open posting from one or more boards, or fetch specific postings by ID or URL.",
            "editor": "select",
            "enum": [
              "getJobs",
              "getJob"
            ],
            "enumTitles": [
              "Get all postings from boards or URLs",
              "Get specific postings by ID or URL"
            ],
            "default": "getJobs",
            "prefill": "getJobs"
          },
          "companySlugs": {
            "title": "Companies (mode=getJobs)",
            "type": "array",
            "description": "Company slugs, board URLs, API URLs or posting URLs. Examples: \"wealthfront\", \"https://jobs.lever.co/wealthfront\", \"https://jobs.eu.lever.co/olx\", \"https://api.lever.co/v0/postings/wealthfront\".",
            "editor": "stringList",
            "prefill": [
              "wealthfront"
            ]
          },
          "companySlug": {
            "title": "Company (mode=getJob)",
            "type": "string",
            "description": "Company slug, board URL, API URL or posting URL used with postingIds (mode=getJob).",
            "editor": "textfield"
          },
          "postingIds": {
            "title": "Posting IDs (mode=getJob)",
            "type": "array",
            "description": "Posting UUIDs or posting/apply URLs (mode=getJob).",
            "editor": "stringList"
          },
          "boardRegion": {
            "title": "Lever region",
            "type": "string",
            "description": "Use auto to try the global board first and fall back to the EU board when global returns 404 or no postings.",
            "editor": "select",
            "enum": [
              "auto",
              "global",
              "eu"
            ],
            "enumTitles": [
              "Auto-detect",
              "Global (api.lever.co)",
              "EU (api.eu.lever.co)"
            ],
            "default": "auto",
            "prefill": "auto"
          },
          "team": {
            "title": "Team",
            "type": "string",
            "description": "Keep postings whose team contains this text (case-insensitive).",
            "editor": "textfield"
          },
          "department": {
            "title": "Department",
            "type": "string",
            "description": "Keep postings whose department contains this text (case-insensitive).",
            "editor": "textfield"
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Keep postings whose primary location or any additional location contains this text (case-insensitive), e.g. \"London\" or \"Remote\".",
            "editor": "textfield"
          },
          "commitment": {
            "title": "Commitment",
            "type": "string",
            "description": "Keep postings whose commitment or normalized employment type matches this text, e.g. \"Full-time\", \"Contract\", \"Internship\".",
            "editor": "textfield"
          },
          "workplaceType": {
            "title": "Workplace type",
            "type": "string",
            "description": "Keep postings with this exact workplace arrangement.",
            "editor": "select",
            "enum": [
              "",
              "remote",
              "hybrid",
              "onsite",
              "unspecified"
            ],
            "enumTitles": [
              "All workplaces",
              "Remote",
              "Hybrid",
              "On-site",
              "Unspecified"
            ],
            "default": "",
            "prefill": ""
          },
          "remoteOnly": {
            "title": "Remote only",
            "type": "boolean",
            "description": "Keep only postings marked remote or with a remote location.",
            "default": false,
            "prefill": false
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Keep postings for one ISO 3166-1 alpha-2 country code, e.g. \"US\", \"DE\" or \"IN\".",
            "editor": "textfield"
          },
          "titleKeywords": {
            "title": "Title must include",
            "type": "array",
            "description": "Keep postings whose title contains every word in this list, in any order.",
            "editor": "stringList"
          },
          "excludeTitleKeywords": {
            "title": "Title must not include",
            "type": "array",
            "description": "Drop postings whose title contains any word in this list.",
            "editor": "stringList"
          },
          "postedAfter": {
            "title": "Posted after",
            "type": "string",
            "description": "Keep postings created on or after this date (YYYY-MM-DD).",
            "editor": "textfield"
          },
          "hasSalaryOnly": {
            "title": "Has salary only",
            "type": "boolean",
            "description": "Keep only postings with a structured salary range published by Lever.",
            "default": false,
            "prefill": false
          },
          "salaryMin": {
            "title": "Minimum salary",
            "type": "integer",
            "description": "Keep postings whose structured salary range starts at or above this value (same currency and interval as the posting).",
            "minimum": 0,
            "maximum": 100000000
          },
          "maxItems": {
            "title": "Max items",
            "type": "integer",
            "description": "Maximum number of posting records to emit.",
            "minimum": 1,
            "maximum": 10000,
            "default": 500,
            "prefill": 3
          },
          "maxItemsPerCompany": {
            "title": "Max items per company",
            "type": "integer",
            "description": "Maximum records per company board; 0 means no per-company limit.",
            "minimum": 0,
            "maximum": 10000,
            "default": 0,
            "prefill": 0
          },
          "includeDescription": {
            "title": "Include descriptions",
            "type": "boolean",
            "description": "Include full and section descriptions plus requirement lists.",
            "default": true,
            "prefill": true
          },
          "includeHtml": {
            "title": "Include HTML",
            "type": "boolean",
            "description": "Add the original HTML for descriptions, additional text and list content.",
            "default": false,
            "prefill": false
          },
          "onlyNewSinceLastRun": {
            "title": "Only new since last run",
            "type": "boolean",
            "description": "Emit only postings not seen by an earlier run with the same query shape. The first run returns everything.",
            "default": false,
            "prefill": false
          }
        },
        "required": [
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Lever Job Board Scraper Output",
        "description": "Open postings from global and EU Lever boards — title, company, locations, workplace type, country, employment type, salary, full descriptions and apply links.",
        "properties": {
          "jobs": {
            "type": "string",
            "title": "Lever job postings",
            "description": "Dataset containing all scraped Lever job postings.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Jobs",
              "transformation": {
                "fields": [
                  "title",
                  "companySlug",
                  "location",
                  "workplaceType",
                  "employmentType",
                  "salaryText",
                  "createdAt",
                  "hostedUrl"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            }
          }
        }
      },
      "environmentVariables": {},
      "defaultRunOptions": {
        "build": "latest",
        "timeoutSecs": 300,
        "memoryMbytes": 1024
      }
    },
    "buildNumber": "2.0.1",
    "imageDigest": "8172e53e54c2a0c94c25218feb0567391874c300b7c9acbf366bff526eed51ac",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "2.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.003977777777777778
    }
  }
}