Overview
The Jobo API exposes two endpoints for searching jobs, each accepting filters in a different format:- GET
/api/jobs— filters via query parameters - POST
/api/jobs/search— filters via typed JSON body fields
Field Reference
| Field | GET Query Param | POST Body Field | Type (GET / POST) | Accepted Values |
|---|---|---|---|---|
| Text search | q | queries | string / string[] | Free text, Boolean operators (AND, OR, NOT), quoted phrases |
| Location | location | locations | string / string[] | City names, regions, countries, "remote" |
| Skills | skills | skills | string / InclusionExclusionFilter | Comma-separated (GET) or include/exclude arrays (POST) |
| Companies | — | companies | — / InclusionExclusionFilter | Include/exclude arrays (POST only) |
| Work Model | work_model | work_models | string / string[] | remote, hybrid, onsite |
| Employment Type | employment_type | employment_types | string / string[] | full-time, part-time, contract, internship, temporary |
| Experience Level | experience_level | experience_levels | string / string[] | entry level, mid level, senior level, lead/staff, principal, director, vp, executive |
| Salary (min) | min_salary_usd | salary_usd.min | int / int | Annual USD amount |
| Salary (max) | max_salary_usd | salary_usd.max | int / int | Annual USD amount |
| Posted After | posted_after | posted_after | datetime | ISO 8601 datetime string |
| Sources | sources | — | string | Comma-separated ATS IDs (GET only) |
| Page | page | page | int | Default 1 |
| Page Size | page_size | page_size | int | Default 25, max 100 |
Filter Patterns (POST)
InclusionExclusionFilter
Theskills and companies fields in the POST body accept an object with include and exclude arrays. Items within include are combined with OR logic; items in exclude are removed from results.
RangeFilter (salary_usd)
The salary_usd field in the POST body accepts min and/or max boundaries (annual USD).
Accepted Values
work_model / work_models
| Filter Value | Stored Value | Description |
|---|---|---|
remote | Remote | Fully remote position |
hybrid | Hybrid | Mix of remote and in-office |
onsite | Onsite | Fully in-office |
employment_type / employment_types
| Filter Value | Stored Value | Description |
|---|---|---|
full-time | Full-time | Standard full-time employment |
part-time | Part-time | Part-time position |
contract | Contract | Contract or freelance engagement |
internship | Internship | Internship |
temporary | Temporary | Temporary position |
experience_level / experience_levels
| Filter Value | Stored Value | Description |
|---|---|---|
entry level | Entry Level | Entry-level / junior |
mid level | Mid Level | Mid-level / intermediate |
senior level | Senior Level | Senior |
lead/staff | Lead/Staff | Lead or staff engineer |
principal | Principal | Principal |
director | Director | Director level |
vp | VP | Vice president |
executive | Executive | C-level / executive |
sources (ATS Platforms)
Pass one or more of the following ATS identifiers as a comma-separated string in the GET sources param:
greenhouse, lever, workday, ashby, bamboohr, icims, smartrecruiters, teamtailor, workable, rippling, personio, taleo, successfactors, paylocity, dayforce, phenompeople, jobvite, eightfold, jazzhr, breezy, recruitee, applicantpro, comeet, pinpoint, freshteam, gem, polymer, kula, homerun, careerplug, joincom, recooty, trakstar, hirehive, hiringthing, zohorecruit, gohire, jobscore, csod, adpmyjobs, adpworkforcenow, paycom, ultipro, isolved, oraclecloud, talnet, careerpuck
Examples
GET Request
POST Request
Facets (Response)
Search responses include afacets object containing aggregated counts for key dimensions. The server determines which facets to return. Common facet keys:
| Facet Key | Description |
|---|---|
experience_level | Distribution of experience levels across matching jobs |
work_model | Distribution of work models |
employment_type | Distribution of employment types |
source | Distribution of ATS sources |

