Lever Jobs | Normalized
Pricing
Pay per usage
Lever Jobs | Normalized
Unofficial independent Actor for bounded public Lever job searches. Returns strict normalized records with source links, descriptions, dates, locations, compensation when published, and application details.
Search Lever jobs with complete original descriptions, optional owner-funded AI enrichment, optional English display text, and advanced filters. This independent Actor is not affiliated with Lever.
Coverage
This Actor serves only the Lever company boards currently covered: DNB. Other companies' boards are outside current coverage, and the earlier arbitrary-board input is retired.
How it works
This Actor searches available Lever job postings with complete original descriptions.
Only postings with verified complete descriptions are available. Snippets, truncated bodies, and unverified historical records are withheld. If job data is unavailable or stale, the run fails instead of falling back to website scraping. Coverage can therefore be smaller than the current website listing.
When requested, AI enrichment fills supported unknown fields and records provenance in llm. It cannot overwrite known source facts. Jobs whose requested enrichment fails are withheld. Optional translation converts selected human-readable fields into English, while raw.description and raw.descriptionHtml preserve the original source content. Without enrichment, llm.status is not_requested.
First run
{"schemaVersion": "nomad-agent-inventory-search-v1","maxItems": 5,"postedWithin": "any","keyword": "","aiEnrichment": {"enabled": false, "accuracy": "silver"},"translateToEnglish": false,"dedupe": {"enabled": false, "key": ""}}
maxItems is an upper bound of 200; zero also means 200. Filtering, repeat suppression, and failed enrichment can produce fewer results. A keyword is a case-insensitive phrase matched against the title, employer, and complete original description.
postedWithin accepts any or a positive duration such as 7d. When Lever has no reliable original posting date, the reported date is the job's first observation. Later refreshes do not make the posting appear new.
Advanced filters
workArrangements accepts remote, hybrid, and onsite. For other normalized fields, use the shared nomad-agent-job-filter-v1 expression contract:
{"schemaVersion": "nomad-agent-job-filter-v1","expression": {"field": "data.compensation.minimum","operator": "gte","value": 50000}}
Place that object under the input's filters field. With AI disabled, filters evaluate source facts only; unknown values do not satisfy ordinary comparisons. With AI enabled, known source mismatches are removed before AI calls and unknown enrichable values are checked again after enrichment. Filters operate on normalized values before English display translation. Compare compensation only with the appropriate currency and period filters.
Output and repeat delivery
Every dataset item follows nomad-agent-job-v1, with six roots: schemaVersion, identity, data, llm, raw, and custom. Missing facts remain null; a known empty collection is []. Original identity and complete description evidence remain stable across enrichment and translation. The rich format is intended for v3 scoring and advanced filtering.
The default key-value store contains RUN-SUMMARY, including data freshness, candidates, withheld enrichment failures, delivery counts, and terminal status. OWNER-USAGE separates actual provider costs from unpriced token counts when enrichment runs. Diagnostic receipts are not inserted into the jobs dataset.
Repeat suppression is enabled by default. It uses a persistent ledger scoped to the Apify user, Actor, and search. Set dedupe.enabled to false for a stateless run. A nonempty dedupe.key deliberately shares delivery history within that user's scope. Ambiguous delivery or ledger failures fail the run rather than claiming successful delivery.
Owner-funded processing
AI enrichment and translation are independent opt-ins, both off by default. Enable aiEnrichment.enabled for extraction and translateToEnglish for English display text. You do not supply API keys. Only when enabled, the owner sends description text to OpenRouter for extraction or selected display text to DeepL for translation. The configured routes deny provider data collection but do not guarantee zero retention or EU-only processing. Sanitized extracted facts and translations may be cached by the owner. V3 callers can explicitly request the processing they need.
The existing Apify pricing configuration is preserved by this migration. This Actor is unmonetized; platform compute or storage charges can still apply. No new per-result, enrichment, or translation price is introduced.
Use nomad-agent-inventory-search-v1 for this job-search release. The previous release used different source-specific search inputs. Old inputs fail with migration guidance. Replace them with keyword or supported normalized filters. Original descriptions are always included.
The top-level accuracy field remains a compatibility override for aiEnrichment.accuracy; it never enables enrichment by itself.
Relative posting-age windows are limited to 36500 days. Use any for an unrestricted search. AI enrichment and translation remain independent opt-ins, both off by default.
Source-specific facts are the custom extension; its identifier is custom.schemaId.
Migrating from the previous release
identity.externalId is the source's own posting ID as represented in this output. It may be spelled differently from earlier previous releases. The stable posting key is the pair (identity.source, identity.externalId). Update any stored comparison keys when migrating; existing delivery history may permit a one-time repeat. Source URLs and original descriptions remain available.
The custom extension now carries source-supplied facts under a new custom.schemaId (earlier releases used nomad-lever-source-v1 with a different shape). Read custom.schemaId before interpreting custom.data. The other five roots keep the nomad-agent-job-v1 contract.
Fast setup and source code
Public repository · Agent setup skill.
Use the Actor’s current input form for filters, or start with its documented API example. Select latest for normalized-lever-jobs-scraper and record the immutable build ID and number returned by your run. Inspect the dataset and any run summary the Actor documents together; a successful status alone does not establish complete source coverage.
Restrictive filters or repeat-delivery suppression can produce zero results. Diagnostics and demo records are not source records. Optional AI or translation stays explicit where supported.
Job Atlas
Explore the Job Atlas job-data and matching Actors. Use latest and retain the immutable build ID returned by each run.
Product guide | Source and client examples | Setup skill | Setup guide