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.
Identity and link
Field
Type
Null?
Meaning
Example
id
integer
no
Job id. Stable; use it for GET /v1/jobs/{job_id} and for de-duplication.
536359
title
string
no
Job title as posted.
"Technical Recruiter"
organization
string
no
Name of the hiring company.
"range"
url
string
no
Link to the original posting on the company's applicant tracking system.
"https://jobs.ashbyhq.com/range/25b4…"
Dates
Field
Type
Null?
Meaning
Example
date_posted
string (date-time)
yes
When the posting says it was published.
"2026-10-02T18:07:25.386000+00:00"
date_created
string (date-time)
yes
When 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_through
string (date-time)
yes
Closing date, if the posting gives one.
null
Source
Field
Type
Null?
Meaning
Example
source_type
string
no
Always "ats": every job comes from an applicant tracking system.
"ats"
source
string
yes
Short name of the applicant tracking system the job was collected from.
"ashby"
source_domain
string
yes
Host the posting is served from, without www.. Only set when source is known.
"jobs.ashbyhq.com"
domain_derived
string
yes
The hiring company's own web domain, when known.
"example.com"
Location
Field
Type
Null?
Meaning
Example
locations_derived
array of string
yes
Display location City, State, Country; unknown parts are left out.
["McLean, Virginia, United States"]
cities_derived
array of string
yes
City.
["McLean"]
regions_derived
array of string
yes
State or province.
["Virginia"]
countries_derived
array of string
yes
Country name (an ISO 3166-1 alpha-2 code when the name is not known).
["United States"]
timezones_derived
array of string
yes
IANA time zone of the city.
["America/New_York"]
lats_derived
array of number
yes
Latitude of the city.
[38.93428]
lngs_derived
array of number
yes
Longitude of the city.
[-77.17748]
Employment and work arrangement
Field
Type
Null?
Meaning
Example
employment_type
array of string
yes
One of FULL_TIME, PART_TIME, CONTRACTOR, INTERN, TEMPORARY, VOLUNTEER, OTHER.
["FULL_TIME"]
ai_employment_type
array of string
yes
Same value as employment_type (kept for fantastic.jobs compatibility).
["FULL_TIME"]
ai_work_arrangement
string
yes
On-site, Hybrid or Remote Solely. null when the posting does not state it clearly.
"Hybrid"
Salary (as posted)
Field
Type
Null?
Meaning
Example
ai_salary_currency
string
yes
Currency as posted.
"USD"
ai_salary_min_value
number
yes
Lower bound as posted.
85000.0
ai_salary_max_value
number
yes
Upper bound as posted.
110000.0
ai_salary_unit_text
string
yes
Period 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.