Ashby Jobs | Normalized
Pricing
Pay per usage
Ashby Jobs | Normalized
Unofficial independent Actor for bounded public Ashby job searches. Returns strict normalized records with source links, descriptions, dates, locations, compensation when published, and application details.
Search public Ashby job listings and export consistent, automation-ready records. This is an unofficial independent Actor. It is not affiliated with, endorsed by, or operated by Ashby, and its icon does not use third-party branding.
What you get
Each dataset item follows nomad-agent-job-v1 and keeps the original posting identity and canonical URL. When the source publishes them, the Actor captures the full description, posting and deadline dates, location, work arrangement, salary, availability, and application link. Missing source facts stay null; they are not guessed.
The run is deliberately bounded. It uses only the board identifiers, search phrase, or listing URLs you provide and never discovers employers or performs a global crawl. A blocked source, incomplete detail page, verified empty search, deadline, and successful run remain distinct in the RUN-SUMMARY record.
First run
The Store input is prefilled with this stateless five-item example:
{"schemaVersion": "nomad-agent-job-search-input-v1","maxItems": 5,"dedupe": {"enabled": false,"key": ""},"ashby": {"schemaVersion": "nomad-ashby-search-v1","boards": ["ashby"]}}
From this Actor directory, the same input can be run with:
apify run --purge --input '{"schemaVersion":"nomad-agent-job-search-input-v1","maxItems":5,"dedupe":{"enabled":false,"key":""},"ashby":{"schemaVersion":"nomad-ashby-search-v1","boards":["ashby"]}}'
Output
Results are written to the default dataset. The default key-value store contains RUN-SUMMARY, including terminal status, source counts, delivery count, result-limit status, retry guidance, and bounded error codes.
An abridged dataset item looks like this:
{"schemaVersion": "nomad-agent-job-v1","identity": {"source": "ashby", "externalId": "source-specific-id", "url": "https://source.example/jobs/123"},"data": {"title": "Software Engineer","company": {"name": "Example employer"},"locations": [{"raw": "Remote"}],"application": {"url": "https://source.example/jobs/123", "postedAt": "2026-09-14T09:00:00+00:00"},"compensation": {"currency": "EUR", "minimum": 70000, "maximum": 90000}},"custom": {"schemaId": "nomad-ashby-source-v1"},"llm": null,"raw": {"description": "Source-published description evidence"}}
The Store sample output is selected from the successful first-run dataset and therefore contains the complete schema-valid record rather than this shortened illustration.
Repeat-delivery suppression
The Store's first run sets dedupe.enabled to false, so it is stateless and immediately reusable. When enabled, the Actor uses an atomic persistent ledger with short delivery claims and confirmed tombstones. The scope includes the Apify user ID, Actor, and canonical search, so tenants never share history. A non-empty dedupe.key lets one tenant deliberately share history across related searches. Confirmed deliveries are retained for 365 days; known dataset failures release their claims, while ambiguous delivery or ledger outcomes fail the run instead of claiming clean success.
Limits and pricing
maxItems is capped at 200; zero also means 200. Public requests and detail work have finite request and time budgets. The initial Store model is pay per platform usage: there are no hidden per-result or pay-per-event charges in the Actor code.
Source sites can change without notice. Check RUN-SUMMARY and the original application URL before using a record in production.