Job fields
The job object returned by the feeds. Every value comes from the employer's own posting or from our collection (ids, times, normalized locations). Nothing is estimated: a fact the employer didn't publish is null.
Fields
| Field | Type | Description |
|---|---|---|
| id | integer | Job id. Stable; match it against /v1/expired-ats. |
| title | string | Job title as published. |
| organization | string | Hiring employer. |
| date_posted | string | When the employer says the job was posted (UTC). Null when the source does not say. |
| date_created | string | When we first collected the job (UTC). Use it for incremental syncs. |
| date_valid_through | string | Closing date published by the employer. |
| locations | array | Each location as a schema.org Place with a PostalAddress (addressLocality, addressRegion code, addressCountry, postalCode) and coordinates when known. |
| locations_alt | array | Location labels, e.g. Toronto, ON. |
| locations_derived | array | Normalized City, Region, Country strings, e.g. Toronto, Ontario, Canada. This is what location searches. |
| location_type | string | TELECOMMUTE when the employer marks the job remote. |
| salary | object | Employer-published pay as a schema.org MonetaryAmount: currency and a QuantitativeValue with minValue/maxValue (or value) and unitText (HOUR, DAY, WEEK, MONTH, YEAR). Never estimated. |
| employment_type | array | Employment types the employer states. |
| url | string | The original job posting. |
| source | string | Source system, e.g. workday, greenhouse, icims, careerpage (an employer's own career site). |
| source_type | string | ats or career_site. |
| source_domain | string | Host of the posting URL. |
| source_slug | string | The employer's board on the source system, e.g. acme or acme.wd3.myworkdayjobs.com/External. |
| description_text | string | Plain-text description (with description_format=text). |
| description_html | string | Original HTML description (with description_format=html). Not sanitized. |
| cities_derived | array | |
| regions_derived | array | Province, territory or state names. |
| countries_derived | array | |
| lats_derived | array | |
| lngs_derived | array | |
| country | string | Country view: CA or US. |
| apply_url | string | Separate application link, when the employer publishes one. |
| work_arrangement | string | Employer-stated arrangement. |
| source_fields | object | With include_source_fields=true: {version, fields: {name: {value, source_path}}}, values exactly as the employer published them. |
Always null for now
These keys are present so that code written against other job feeds keeps working, but we don't fill them yet: organization_url, organization_logo, location_requirements, domain_derived, counties_derived, timezones_derived.
We also don't return AI-derived fields (ai_*) or third-party company profiles (org_*); filters on them are rejected with 400 rather than ignored. Many of those facts are available from the employer itself through include_source_fields=true: department, pay tiers, required experience, education and skills, exactly as published, with the path where each was found.
Locations in detail
locationsholds one schema.orgPlaceper location with aPostalAddress:addressLocality(city),addressRegion(province or state code),addressCountry(CAorUS) andpostalCodewhen published, plus coordinates when known.locations_derived,cities_derived,regions_derivedandcountries_derivedare the same places as full names, ready for display and search.lats_derived/lngs_derivedlist coordinates for the locations that have them (city centres unless the employer gave an address).
Pay
salary is filled only when the employer published pay, and keeps its period: an hourly wage stays hourly (unitText: "HOUR"). A single amount is value; a range is minValue/maxValue.