When a company posts a job, it almost always does it inside an applicant tracking system. The system publishes a careers page, syndicates to boards, and receives applications. For anyone collecting job data, the ATS is the layer that matters, because it is the closest thing to a source of truth.
Why the ATS layer is better than boards
- Timing. A posting exists there first, before any board ingests it.
- Fidelity. The description is unedited and untruncated.
- Identity. Requisition ids make deduplication tractable.
- Expiry. When the requisition closes, the listing usually disappears immediately, rather than lingering on a board.
The practical consequence
A dataset assembled from boards and one assembled from careers systems differ systematically, not randomly. The board dataset is later, more duplicated, and lags on expiry. The careers-system dataset is fresher and cleaner but misses employers who post only to boards — which is a real and sizeable group at the smaller end.
Neither is complete. Anyone claiming complete coverage of a national job market is describing an ambition.
What varies between systems
| Aspect | Variation you will hit |
|---|---|
| Structure | Some expose clean JSON; others render everything server-side |
| Salary | Some have a dedicated field; most leave it in the description |
| Location | Ranges from structured city/country to a free-text blob |
| Expiry | Some remove closed roles immediately; some leave them visible |
| Identity | Requisition ids may be stable, may be per-board, may be absent |
What this means for the fields you get
The completeness of any field in a job dataset is not a property of the provider — it is a property of the mix of systems underneath. A provider whose coverage skews to systems with structured salary fields will report a higher disclosure rate than one whose coverage skews elsewhere, without either being wrong.
Which is another reason to ask a provider not just what they have, but where it came from.