Documentation

Field reference

Every job object — in items of a page, or returned alone by GET /v1/jobs/{job_id} — has exactly these 25 fields.

  • Every field is always present. A value we do not know is null — never a guess. Where the source itself published an empty value, a field can hold an empty string (or a list holding one), so treat "" the same as null.
  • Field names follow the fantastic.jobs vocabulary, so parsers written for that format read these records.
  • Fields ending in _derived are lists with one element, or null — except domain_derived, which is a plain string.
  • The ai_ prefix is only a name. The employment-type, work-arrangement and salary fields are taken from the posting, not generated by a model. Salaries are never converted or annualised.
  • Dates are ISO 8601 strings with a UTC offset, e.g. 2026-10-02T18:07:25.386000+00:00.
FieldTypeNull?MeaningExample
idintegernoJob id. Stable; use it for GET /v1/jobs/{job_id} and for de-duplication.536359
titlestringnoJob title as posted."Technical Recruiter"
organizationstringnoName of the hiring company."range"
urlstringnoLink to the original posting on the company's applicant tracking system."https://jobs.ashbyhq.com/range/25b4…"

Dates

FieldTypeNull?MeaningExample
date_postedstring (date-time)yesWhen the posting says it was published."2026-10-02T18:07:25.386000+00:00"
date_createdstring (date-time)yesWhen we first recorded the job. Can be earlier than date_posted if the employer re-dated the posting."2026-04-09T23:12:08.358703+00:00"
date_valid_throughstring (date-time)yesClosing date, if the posting gives one.null

Source

FieldTypeNull?MeaningExample
source_typestringnoAlways "ats": every job comes from an applicant tracking system."ats"
sourcestringyesShort name of the applicant tracking system the job was collected from."ashby"
source_domainstringyesHost the posting is served from, without www.. Only set when source is known."jobs.ashbyhq.com"
domain_derivedstringyesThe hiring company's own web domain, when known."example.com"

Location

FieldTypeNull?MeaningExample
locations_derivedarray of stringyesDisplay location City, State, Country; unknown parts are left out.["McLean, Virginia, United States"]
cities_derivedarray of stringyesCity.["McLean"]
regions_derivedarray of stringyesState or province.["Virginia"]
countries_derivedarray of stringyesCountry name (an ISO 3166-1 alpha-2 code when the name is not known).["United States"]
timezones_derivedarray of stringyesIANA time zone of the city.["America/New_York"]
lats_derivedarray of numberyesLatitude of the city.[38.93428]
lngs_derivedarray of numberyesLongitude of the city.[-77.17748]

Employment and work arrangement

FieldTypeNull?MeaningExample
employment_typearray of stringyesOne of FULL_TIME, PART_TIME, CONTRACTOR, INTERN, TEMPORARY, VOLUNTEER, OTHER.["FULL_TIME"]
ai_employment_typearray of stringyesSame value as employment_type (kept for fantastic.jobs compatibility).["FULL_TIME"]
ai_work_arrangementstringyesOn-site, Hybrid or Remote Solely. null when the posting does not state it clearly."Hybrid"

Salary (as posted)

FieldTypeNull?MeaningExample
ai_salary_currencystringyesCurrency as posted."USD"
ai_salary_min_valuenumberyesLower bound as posted.85000.0
ai_salary_max_valuenumberyesUpper bound as posted.110000.0
ai_salary_unit_textstringyesPeriod the values refer to: HOUR, WEEK, MONTH or YEAR. null when unknown or for other periods (for example daily)."YEAR"

Not served

Job descriptions are not part of the API. Other fields of the fantastic.jobs format (for example company logo, skills or experience level) are not served either.

The same definitions, as JSON Schema, are in the API Reference and the downloadable OpenAPI file.