How to Filter Jobs by Skills, Location & Salary

Find exactly the jobs you need with Jobven API filters. Filter by skills, location, salary, experience level, and remote work type.

The Jobven API supports powerful filtering to help you find exactly the jobs you need. Combining multiple filters narrows your results (AND between filter types).

Array Parameters: Filters that take several values take one value per parameter: skills[]=react&skills[]=node or skills=react&skills=node. One value can be sent as skills=react. Commas do not separate values, so skills=react,node is not two skills.

Filter Categories

Skills Filter

Find jobs requiring specific technologies or skills:

// Single skill
const params = new URLSearchParams({ limit: '20' });
params.append('skills[]', 'python');

const response = await fetch(
  `https://api.jobven.com/v1/public/jobs?${params}`,
  { headers: { 'X-API-Key': process.env.JOBVEN_API_KEY } }
);

// Multiple skills (OR logic - matches jobs with ANY of these skills)
const multiParams = new URLSearchParams({ limit: '20' });
multiParams.append('skills[]', 'python');
multiParams.append('skills[]', 'django');

const multiResponse = await fetch(
  `https://api.jobven.com/v1/public/jobs?${multiParams}`,
  { headers: { 'X-API-Key': process.env.JOBVEN_API_KEY } }
);
Tips:
  • Skills are matched case-insensitively. React, react, and REACT all work the same.
  • Keep skills to 2-4 for best relevance. More skills = broader results but less focused.
  • Multiple skills use OR logic — jobs matching any skill are returned.

Location Filters

Filter by geography using multiple parameters:

ParameterDescriptionExample
locationFree-text searchlocation=San Francisco
countryISO 3166-1 codecountry=US
stateStates or regions, by name or codestate=CA,NY,TX
cityCity namescity=Austin,Seattle

state and city ignore case and accents: montreal, Montréal and MONTREAL find the same jobs. A US state or Canadian province matches by its name or its code, so state=CA and state=California return the same results, as do state=QC and state=Québec. Elsewhere, use the region name as it appears in the job's addressRegion.

Tip: Use country=XX to find jobs with no location information at all — often "work from anywhere" remote positions. Jobs with a city but no identifiable country match no country filter, so omit country if you want those too. See Data Types for details.
// Jobs in California
const params = new URLSearchParams({
  country: 'US',
  state: 'CA',
  limit: '20'
});

const response = await fetch(
  `https://api.jobven.com/v1/public/jobs?${params}`,
  { headers: { 'X-API-Key': process.env.JOBVEN_API_KEY } }
);

// Jobs in specific cities
const cityParams = new URLSearchParams({
  city: 'San Francisco,Austin,Seattle',
  limit: '20'
});

const cityResponse = await fetch(
  `https://api.jobven.com/v1/public/jobs?${cityParams}`,
  { headers: { 'X-API-Key': process.env.JOBVEN_API_KEY } }
);

Remote Work Filter

Filter by work arrangement:

ValueDescription
remoteFully remote positions
hybridMix of remote and on-site
onsiteOn-site only
flexibleEmployee chooses
// Remote only
const params = new URLSearchParams({ limit: '20' });
params.append('remoteType[]', 'remote');

const response = await fetch(
  `https://api.jobven.com/v1/public/jobs?${params}`,
  { headers: { 'X-API-Key': process.env.JOBVEN_API_KEY } }
);

// Remote or hybrid
const flexParams = new URLSearchParams({ limit: '20' });
flexParams.append('remoteType[]', 'remote');
flexParams.append('remoteType[]', 'hybrid');

const flexResponse = await fetch(
  `https://api.jobven.com/v1/public/jobs?${flexParams}`,
  { headers: { 'X-API-Key': process.env.JOBVEN_API_KEY } }
);

Salary Filter

Filter by yearly pay. minSalary and maxSalary compare each job's salary.annualMin and salary.annualMax, so an hourly, weekly or monthly rate is compared per year (hourly ×2,080, daily ×260, weekly ×52, bi-weekly ×26, monthly ×12). Add salaryCurrency to compare amounts in one currency:

// Minimum $100k salary
const params = new URLSearchParams({
  minSalary: '100000',
  salaryCurrency: 'USD',
  limit: '20'
});

const response = await fetch(
  `https://api.jobven.com/v1/public/jobs?${params}`,
  { headers: { 'X-API-Key': process.env.JOBVEN_API_KEY } }
);

// Salary range $80k-$150k
const rangeParams = new URLSearchParams({
  minSalary: '80000',
  maxSalary: '150000',
  salaryCurrency: 'USD',
  limit: '20'
});

const rangeResponse = await fetch(
  `https://api.jobven.com/v1/public/jobs?${rangeParams}`,
  { headers: { 'X-API-Key': process.env.JOBVEN_API_KEY } }
);
Note: Amounts are in the currency each job states; no exchange rate is applied. Without salaryCurrency, minSalary=100000 also matches a job paying 100,000 in another currency. Jobs without a salary, or paid per a unit with no yearly equivalent (such as a visit), are excluded when using salary filters.

Experience Level

Filter by seniority:

ValueDescription
entryEntry-level / Junior
midMid-level
seniorSenior
leadLead / Staff
executiveExecutive / Director+
// Senior positions only
const params = new URLSearchParams({ limit: '20' });
params.append('experienceLevel[]', 'senior');

const response = await fetch(
  `https://api.jobven.com/v1/public/jobs?${params}`,
  { headers: { 'X-API-Key': process.env.JOBVEN_API_KEY } }
);

// Senior or Lead
const multiParams = new URLSearchParams({ limit: '20' });
multiParams.append('experienceLevel[]', 'senior');
multiParams.append('experienceLevel[]', 'lead');

const multiResponse = await fetch(
  `https://api.jobven.com/v1/public/jobs?${multiParams}`,
  { headers: { 'X-API-Key': process.env.JOBVEN_API_KEY } }
);

Employment Type

Filter by job type:

ValueDescription
full_timeFull-time permanent
part_timePart-time
contractContract / Freelance
internshipInternship
temporaryTemporary position
const params = new URLSearchParams({ limit: '20' });
params.append('employmentType[]', 'full_time');

const response = await fetch(
  `https://api.jobven.com/v1/public/jobs?${params}`,
  { headers: { 'X-API-Key': process.env.JOBVEN_API_KEY } }
);

Industry Filter

Filter by industry category:

ValueDescription
technology_softwareTechnology / Software
healthcare_medicalHealthcare / Medical
finance_bankingFinance / Banking
educationEducation
retail_ecommerceRetail / E-commerce
...See all 16 industries
// Single industry
const params = new URLSearchParams({ limit: '20' });
params.append('industry[]', 'technology_software');

const response = await fetch(
  `https://api.jobven.com/v1/public/jobs?${params}`,
  { headers: { 'X-API-Key': process.env.JOBVEN_API_KEY } }
);

// Multiple industries (OR logic - matches ANY industry)
const multiParams = new URLSearchParams({ limit: '20' });
multiParams.append('industry[]', 'technology_software');
multiParams.append('industry[]', 'finance_banking');

const multiResponse = await fetch(
  `https://api.jobven.com/v1/public/jobs?${multiParams}`,
  { headers: { 'X-API-Key': process.env.JOBVEN_API_KEY } }
);
Note: Industry values use underscores, not spaces. Use technology_software, not technology software.

Common Filter Recipes

Remote Senior React Developer

High-paying remote React positions:

const params = new URLSearchParams({
  minSalary: '120000',
  limit: '50'
});
params.append('skills[]', 'react');
params.append('skills[]', 'typescript');
params.append('remoteType[]', 'remote');
params.append('experienceLevel[]', 'senior');
params.append('experienceLevel[]', 'lead');

const response = await fetch(
  `https://api.jobven.com/v1/public/jobs?${params}`,
  { headers: { 'X-API-Key': process.env.JOBVEN_API_KEY } }
);

Entry-Level Jobs in California

Jobs for new graduates in California:

const params = new URLSearchParams({
  country: 'US',
  state: 'CA',
  limit: '50'
});
params.append('experienceLevel[]', 'entry');
params.append('employmentType[]', 'full_time');

const response = await fetch(
  `https://api.jobven.com/v1/public/jobs?${params}`,
  { headers: { 'X-API-Key': process.env.JOBVEN_API_KEY } }
);

High-Salary Contract Positions

Contract roles paying $150k+:

const params = new URLSearchParams({
  minSalary: '150000',
  limit: '50'
});
params.append('employmentType[]', 'contract');

const response = await fetch(
  `https://api.jobven.com/v1/public/jobs?${params}`,
  { headers: { 'X-API-Key': process.env.JOBVEN_API_KEY } }
);

Jobs with Visa Sponsorship

International candidates looking for sponsorship:

const params = new URLSearchParams({
  hasVisaSponsorship: 'true',
  country: 'US',
  limit: '50'
});

const response = await fetch(
  `https://api.jobven.com/v1/public/jobs?${params}`,
  { headers: { 'X-API-Key': process.env.JOBVEN_API_KEY } }
);

Add q to search job titles:

const params = new URLSearchParams({
  q: 'backend developer',
  limit: '20'
});
params.append('skills[]', 'python');
params.append('skills[]', 'django');

const response = await fetch(
  `https://api.jobven.com/v1/public/jobs?${params}`,
  { headers: { 'X-API-Key': process.env.JOBVEN_API_KEY } }
);

const { data: jobs } = await response.json();
console.log(`Found ${jobs.length} Python backend developer jobs`);

q matches whole words in the job title, in any order. Use "double quotes" for an exact phrase, OR for either word, and -word to exclude one. To search inside job descriptions, use descriptionQuery. See Searching for the full syntax.

Sorting Results

Control result ordering with sortBy and order:

sortByDescription
postedAtDate posted (default)
titleAlphabetical by title
companyAlphabetical by company
// Newest jobs first (default)
const newestParams = new URLSearchParams({
  sortBy: 'postedAt',
  order: 'DESC',
  limit: '20'
});

const newestResponse = await fetch(
  `https://api.jobven.com/v1/public/jobs?${newestParams}`,
  { headers: { 'X-API-Key': process.env.JOBVEN_API_KEY } }
);

// Oldest jobs first
const oldestParams = new URLSearchParams({
  sortBy: 'postedAt',
  order: 'ASC',
  limit: '20'
});

const oldestResponse = await fetch(
  `https://api.jobven.com/v1/public/jobs?${oldestParams}`,
  { headers: { 'X-API-Key': process.env.JOBVEN_API_KEY } }
);

Next Steps

Jobs Reference

Complete list of all filter parameters.

Fetch All Jobs

Retrieve thousands of jobs across multiple pages.