Data Types

Complete reference for all enum values, object structures, and special values used in the Jobven API.

This page documents all enum values, object structures, and special values used in the Jobven API.

Industries

Filter and classify jobs by industry category. Use the Value column in API queries.

ValueDisplay Name
technology_softwareTechnology / Software
healthcare_medicalHealthcare / Medical
finance_bankingFinance / Banking
educationEducation
retail_ecommerceRetail / E-commerce
manufacturingManufacturing
consulting_professionalConsulting / Professional Services
marketing_advertisingMarketing / Advertising
government_publicGovernment / Public Sector
energy_utilitiesEnergy / Utilities
transportation_logisticsTransportation / Logistics
real_estate_constructionReal Estate / Construction
hospitality_foodHospitality / Food Service
media_entertainmentMedia / Entertainment
nonprofit_ngoNon-profit / NGO
otherOther
Industry values use underscores, not spaces. Use technology_software, not technology software.

Remote Types

Work arrangement classification for job positions.

ValueDescription
onsiteWork performed entirely at employer's physical location
remoteFully remote position, work from anywhere
hybridMix of remote and on-site work (e.g., 2-3 days in office)
flexibleEmployee chooses their work arrangement

Experience Levels

Seniority classification for job positions.

ValueDescriptionTypical Years
entryEntry-level / Junior0-2 years
midMid-level2-5 years
seniorSenior5-8 years
leadLead / Staff / Principal8-12 years
executiveExecutive / Director / VP+12+ years
Year ranges are approximate guidelines. Actual requirements vary by company and role.

Employment Types

Classification of employment arrangement.

ValueDescription
full_timeFull-time permanent position (typically 40 hours/week)
part_timePart-time position (fewer than 40 hours/week)
contractFixed-term contract or freelance engagement
internshipInternship program (paid or unpaid)
seasonalSeasonal or holiday-specific work
volunteerVolunteer position
temporaryTemporary position with defined end date
per_diemDay-rate or as-needed basis
otherOther employment arrangement

Job Status

Status values differ between query parameters and response fields.

Query Parameter Values

Use these when filtering jobs with the status query parameter:

ValueDescription
activeCurrently accepting applications (default)
closedNo longer accepting applications

Response Field Values

Jobs in responses may have these status values:

ValueDescription
activeCurrently accepting applications
closedManually closed by employer
expiredAutomatically expired past expiresAt date

Education Levels

Required or preferred education qualifications.

ValueDescription
high_schoolHigh school diploma or equivalent
associate_degreeAssociate's degree (2-year)
bachelor_degreeBachelor's degree (4-year)
master_degreeMaster's degree
doctorate_degreeDoctorate / PhD
professional_certificateProfessional certification
vocational_trainingVocational or trade school
not_specifiedNo specific requirement stated

Salary Object

Compensation information when available.

{
  "min": 120000,
  "max": 180000,
  "currency": "USD",
  "period": "year"
}
FieldTypeDescription
minnumberMinimum salary value
maxnumberMaximum salary value
currencystringCurrency code (see below)
periodstringPay period (see below)

Currency Codes

ISO 4217 currency codes supported:

CodeCurrency
CADCanadian Dollar
USDUS Dollar
EUREuro
GBPBritish Pound
AUDAustralian Dollar
SGDSingapore Dollar
JPYJapanese Yen
INRIndian Rupee
CNYChinese Yuan
CHFSwiss Franc
AEDUAE Dirham
ZARSouth African Rand
MXNMexican Peso
BRLBrazilian Real

Salary Periods

ValueDescription
hourHourly rate
dayDaily rate
weekWeekly rate
bi-weeklyBi-weekly (every two weeks)
monthMonthly rate
yearAnnual salary

Skills Object

AI-enriched skill categorization for job requirements.

{
  "primary_skills": ["React", "TypeScript", "Node.js"],
  "secondary_skills": ["Docker", "AWS", "PostgreSQL"],
  "soft_skills": ["Communication", "Leadership", "Problem-solving"]
}
FieldTypeDescription
primary_skillsstringCore technical skills required for the role
secondary_skillsstringNice-to-have or supplementary technical skills
soft_skillsstringNon-technical skills (communication, teamwork, etc.)
Note: Skills are AI-enriched from job descriptions. Values are freeform text (not enum values) and may vary in formatting. All arrays are optional and may be empty or null.

Skills Filtering

When filtering jobs by skills, the API matches against all skill categories:

GET /v1/public/jobs?skills[]=react&skills[]=typescript

This returns jobs where React OR TypeScript appears in any skill category (primary, secondary, or soft skills).


Benefits

Benefits are returned as a string array of lowercase, underscore-separated tokens extracted from job descriptions. The vocabulary is open rather than a fixed enum, so treat unfamiliar tokens as valid, but in practice virtually every value follows the token form — match on exact strings, not on prose.

["health_insurance", "dental_insurance", "paid_time_off_vacation_personal_days", "remote_work_hybrid_work_options", "pensions_401k"]

The most common tokens are:

TokenCategory
paid_time_off_vacation_personal_daysTime off
professional_developmentDevelopment
health_insuranceHealth & wellness
flexible_work_hoursWork flexibility
employee_discountsPerks
remote_work_hybrid_work_optionsWork flexibility
dental_insuranceHealth & wellness
pensions_401kRetirement
Benefits are AI-extracted and vary in format. Not all jobs include benefit information.

Location Object

Geographic location information for job positions.

{
  "streetAddress": "123 Main St",
  "addressLocality": "San Francisco",
  "addressRegion": "California",
  "postalCode": "94105",
  "addressCountry": "US",
  "workLocation": "hybrid"
}
FieldTypeDescription
streetAddressstringStreet address (often null for privacy)
addressLocalitystringCity name
addressRegionstringState, province, or region
postalCodestringPostal or ZIP code
addressCountrystringCountry code (ISO 3166-1 alpha-2). May be absent — see Special Value: XX
workLocationstringWork arrangement at this location (onsite, remote, hybrid, flexible)

workLocation vs remoteType

  • workLocation (in location object): Work arrangement for a specific office location
  • remoteType (top-level job field): Overall remote policy for the job

A job may have multiple locations with different workLocation values. The top-level remoteType represents the general policy.


Country Codes

ISO 3166-1 alpha-2 country codes are used for location filtering.

Common Country Codes

CodeCountry
USUnited States
CACanada
GBUnited Kingdom
AUAustralia
DEGermany
FRFrance
NLNetherlands
IEIreland
SGSingapore
INIndia

Special Value: XX

The code XX means the job carries no location information at all — no city, no region, no street address. These are typically "work from anywhere" postings with no geographic restriction.

GET /v1/public/jobs?country=XX&remoteType[]=remote

XX does not by itself mean the job is remote. Check workLocation (or the top-level remoteType) for that.

When addressCountry is absent

A location can have a city but no addressCountry. That means the job has a known location whose country we could not identify with confidence. Usually the posting names a place that exists in several countries, or a small town we cannot place from the listing alone. We leave the country absent rather than guess, because a wrong country is harder to work around than a missing one.

{
  "addressLocality": "Springfield",
  "workLocation": "onsite"
}

These jobs match no country filter, including country=XX. If you need them, request without a country filter and read addressLocality yourself.

Tip: To find all remote jobs regardless of country, use remoteType[]=remote without a country filter. Use country=XX specifically for jobs with no location information at all.

Supported Countries

All 249 ISO 3166-1 alpha-2 country codes are accepted, plus the special value XX.


Language Codes

ISO 639-1 two-letter language codes for job language requirements.

Common Language Codes

CodeLanguage
enEnglish
frFrench
esSpanish
deGerman
zhChinese (Mandarin)
jaJapanese
koKorean
ptPortuguese
itItalian
nlDutch

All Supported Languages

The API supports 40 language codes: en, fr, es, de, zh, ja, ko, pt, it, ru, ar, hi, nl, sv, no, da, fi, pl, tr, he, id, th, vi, cs, el, hu, ro, uk, bg, hr, fa, ms, tl, bn, ta, te, ur, gu, kn, ml


Travel Percentage

The travelPercentage field indicates required travel as a percentage (0-100).

ValueMeaning
0No travel required
10-25Occasional travel
25-50Regular travel
50-75Frequent travel
75-100Extensive travel

Timestamps

postedAt and expiresAt are Unix timestamps in seconds, returned as JSON numbers. The postedAfter and postedBefore filters take the same unit.

JavaScript's Date constructor expects milliseconds, so multiply by 1000:

const posted = new Date(job.postedAt * 1000)

Python's datetime.fromtimestamp takes seconds, so no conversion is needed:

from datetime import datetime, timezone
posted = datetime.fromtimestamp(job["postedAt"], tz=timezone.utc)

A value of null means the date is unknown — expiresAt is null for most jobs, since few postings publish a closing date.


Handling Null and Optional Fields

Most response fields are optional and may be null or undefined. Only these fields are guaranteed:

Always Present

  • id - Job UUID
  • title - Job title
  • description - Job description (HTML)
  • status - Job status
  • companies - Array with at least one company

Often Null

All other fields may be null depending on available data:

  • summary, locations, remoteType
  • skills, salary, benefits
  • experienceLevel, employmentType
  • educationRequirement, industry
  • minYearsExperience, travelPercentage
  • hasVisaSponsorship, hasRelocation, requiresTravel
  • inLanguage, postedAt, expiresAt, applyUrl

Safe Access Pattern

Always check for null values before accessing nested properties:

// JavaScript/TypeScript
const salary = job.salary?.min
  ? `$${job.salary.min.toLocaleString()}+`
  : 'Not specified';

const skills = job.skills?.primary_skills?.join(', ') || 'Not listed';

const location = job.locations?.[0]?.addressLocality || 'Location not specified';
# Python
salary = f"${job['salary']['min']:,}+" if job.get('salary', {}).get('min') else 'Not specified'

skills = ', '.join(job.get('skills', {}).get('primary_skills', [])) or 'Not listed'

locations = job.get('locations', [])
location = locations[0].get('addressLocality', 'Location not specified') if locations else 'Location not specified'

Next Steps

Jobs Reference

Complete Jobs endpoint documentation with all parameters.

Filter Guide

Learn to combine filters for powerful job searches.