Skip to main content
Every endpoint that returns jobs — search, feed, and single-job lookup — returns this same shape. id is a stable UUID and the correct primary key for upserts.

HTML in Descriptions

The description field contains sanitized HTML (not plain text). Common tags include <p>, <ul>, <li>, <strong>, <em>, <br>, and <h3>. All potentially dangerous tags (e.g., <script>, <iframe>) are stripped during ingestion. If you’re rendering descriptions in a web UI, use an HTML sanitizer like DOMPurify as an additional safety layer.

Enums

What you receive is not what you send. These three fields come back as human-readable display values (Full-time, On-site, Entry Level), but the employment_type, work_model, and experience_level filters only accept the lowercase canonical keys. Passing a response value back in as a filter matches nothing — and returns 200 with total: 0 rather than an error.Facet buckets return the canonical keys, so a facets key can be fed straight back in as a filter value.
Note that the filter for workplace is called work_model (or work_models on the typed search), while the field on the job is called workplace_type. There is no is_remote parameter or field. A job whose value for one of these fields is null is excluded from any filter on that field.

Employment Type

Workplace Type

Experience Level

Source

source is the provider_id of the ATS or job board the posting came from — one of 106 platforms. Unlike the enums above, this value is identical on input and output: pass it straight back in the sources filter, and it is what facets.sources buckets are keyed on. See Sources for the complete list. Platforms are added regularly, so treat the value as an opaque identifier and the set as open — do not hard-code it as a closed enum.

Nested Objects

Company

Location

Compensation

Qualifications

The qualifications object contains two buckets — must_have and preferred — each with:

Skill Type

Complete Example

A fully populated Job object showing all fields:
Nullable fields — Fields marked as nullable in the schema above will be null (not absent) when no data is available. Your application should always handle null values gracefully. Array fields (locations, responsibilities, benefits) will be empty arrays [] rather than null when no data is present.