Skip to main content
POST
/
api
/
jobs
/
search
Search jobs via structured request body
curl --request POST \
  --url https://connect.jobo.world/api/jobs/search \
  --header 'Content-Type: application/json' \
  --header 'X-Api-Key: <api-key>' \
  --data '
{
  "queries": [
    "<string>"
  ],
  "search_description": true,
  "locations": [
    "<string>"
  ],
  "sources": [
    "<string>"
  ],
  "skills": {
    "include": [
      "<string>"
    ],
    "exclude": [
      "<string>"
    ]
  },
  "companies": {
    "include": [
      "<string>"
    ],
    "exclude": [
      "<string>"
    ]
  },
  "industries": {
    "include": [
      "<string>"
    ],
    "exclude": [
      "<string>"
    ]
  },
  "work_models": [],
  "employment_types": [
    "<string>"
  ],
  "experience_levels": [
    "<string>"
  ],
  "salary_usd": {
    "min": 123,
    "max": 123
  },
  "posted_after": "2023-11-07T05:31:56Z",
  "posted_before": "2023-11-07T05:31:56Z",
  "page": 1,
  "page_size": 25,
  "include_facets": [],
  "include_fields": []
}
'
{
  "jobs": [
    {
      "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "title": "<string>",
      "normalized_title": "<string>",
      "company": {
        "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "name": "<string>",
        "website": "<string>",
        "logo_url": "<string>",
        "summary": "<string>",
        "industries": [
          "<string>"
        ],
        "categories": [
          "<string>"
        ],
        "linkedin_url": "<string>",
        "crunchbase_url": "<string>",
        "details_url": "<string>"
      },
      "description": "<string>",
      "summary": "<string>",
      "listing_url": "<string>",
      "apply_url": "<string>",
      "locations": [
        {
          "location": "<string>",
          "city": "<string>",
          "region": "<string>",
          "country": "<string>",
          "latitude": 123,
          "longitude": 123
        }
      ],
      "compensation": {
        "min": 123,
        "max": 123,
        "currency": "<string>"
      },
      "source": "<string>",
      "created_at": "2023-11-07T05:31:56Z",
      "updated_at": "2023-11-07T05:31:56Z",
      "date_posted": "2023-11-07T05:31:56Z",
      "valid_through": "2023-11-07T05:31:56Z",
      "qualifications": {
        "must_have": {
          "education": [
            "<string>"
          ],
          "certifications": [
            "<string>"
          ],
          "skills": [
            {
              "name": "<string>",
              "type": "hard"
            }
          ]
        },
        "preferred": {
          "education": [
            "<string>"
          ],
          "certifications": [
            "<string>"
          ],
          "skills": [
            {
              "name": "<string>",
              "type": "hard"
            }
          ]
        }
      },
      "responsibilities": [
        "<string>"
      ],
      "benefits": [
        "<string>"
      ],
      "is_work_auth_required": true,
      "is_h1b_sponsor": true,
      "is_clearance_required": true
    }
  ],
  "total": 123,
  "page": 123,
  "page_size": 123,
  "total_pages": 123,
  "facets": {}
}

Authorizations

X-Api-Key
string
header
required

API key provided by Jobo

Body

application/json
queries
string[] | null

Free-text search queries; multiple entries are OR'd. Each entry matches broadly by default (title, company name, popular skills, summary) with typo tolerance. Wrap an entry in double quotes (e.g. ""Quantitative Developer"") to make it an exact, contiguous phrase match restricted to the job title only — use this when a query is a job-title filter and broad matches are noise. Prefix an entry with - to exclude it. Maximum 10 positive terms per request; more returns a 400 (negative - exclusions don't count toward the limit).

search_description
boolean
default:true

Controls which fields the queries match against. When true (default), queries match the job title, company, skills, AND the job description/summary — broad recall, best for keyword discovery (e.g. "python" finds a "Software Engineer" that lists Python as a skill). When false, queries match against job titles only — the job's own title plus a curated set of same-role alternative titles, so "Android Developer" also finds roles titled "Android Engineer" without pulling in jobs that merely mention the terms in their description or skills (e.g. an "IT Support Engineer" that lists Android as a skill no longer matches). Use false when you pass exact job titles and want relevance over keyword recall. Double-quoted entries are stricter still: an exact, contiguous phrase match against the literal job title only (alternative titles excluded) — the escape hatch when even title synonyms are unwanted.

locations
string[] | null

Location strings to filter by (geocoded automatically)

sources
string[] | null

Restrict to specific ATS provider IDs (e.g. greenhouse, lever, workday).

skills
object

Include/exclude skills filter

companies
object

Include/exclude companies filter

industries
object

Include/exclude company-industry filter (matched case-insensitively).

work_models
enum<string>[] | null

Filter by work model: remote, hybrid, onsite

Available options:
remote,
hybrid,
onsite
employment_types
string[] | null

Filter by employment type: full-time, part-time, contract, internship, freelance, temporary

experience_levels
string[] | null

Filter by experience level. Canonical values: intern, entry, mid, senior, lead, executive. Values are normalized through a synonym dictionary (junior → entry, sr/staff/principal → senior, manager → lead, director/vp/c-level → executive, etc.).

salary_usd
object

Salary range filter in USD (annual)

posted_after
string<date-time> | null

Only return jobs whose employer posting date is on or after this date

posted_before
string<date-time> | null

Only return jobs whose employer posting date is on or before this date

page
integer
default:1
page_size
integer
default:25
include_facets
enum<string>[] | null

Facets to compute and return. Omit (or null) for the default subset (work_model, experience_level, employment_type, sources). Pass an empty array to skip facets entirely. industries and skills are high-cardinality and only computed when explicitly requested. Unknown names are ignored.

Available options:
work_model,
experience_level,
employment_type,
sources,
industries,
skills
include_fields
enum<string>[] | null

Heavy, non-core fields to include. Omit (or null) for the full job — every field, the default. Pass a subset to keep only those non-core fields alongside the always-present core fields. Pass an empty array for core fields only. Unknown names are ignored; excluded non-core fields come back empty.

Available options:
description,
summary,
qualifications,
responsibilities,
benefits

Response

Paginated list of matching jobs with optional facets

jobs
object[]
total
integer<int64>
page
integer
page_size
integer
total_pages
integer
facets
object