How to Filter Jobs by Skills, Location & Salary
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).
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 } }
);
import requests
import os
# Single skill
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params={'skills[]': 'python', 'limit': 20}
)
# Multiple skills (OR logic - matches jobs with ANY of these skills)
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params={'skills[]': ['python', 'django'], 'limit': 20}
)
# Single skill
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?skills%5B%5D=python&limit=20"
# Multiple skills (OR logic - matches jobs with ANY of these skills)
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?skills%5B%5D=python&skills%5B%5D=django&limit=20"
- Skills are matched case-insensitively.
React,react, andREACTall 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:
| Parameter | Description | Example |
|---|---|---|
location | Free-text search | location=San Francisco |
country | ISO 3166-1 code | country=US |
state | States or regions, by name or code | state=CA,NY,TX |
city | City names | city=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.
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 } }
);
# Jobs in California
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params={'country': 'US', 'state': 'CA', 'limit': 20}
)
# Jobs in specific cities
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params={'city': 'San Francisco,Austin,Seattle', 'limit': 20}
)
# Jobs in California
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?country=US&state=CA&limit=20"
# Jobs in specific cities
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?city=San%20Francisco,Austin,Seattle&limit=20"
Remote Work Filter
Filter by work arrangement:
| Value | Description |
|---|---|
remote | Fully remote positions |
hybrid | Mix of remote and on-site |
onsite | On-site only |
flexible | Employee 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 } }
);
# Remote only
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params={'remoteType[]': 'remote', 'limit': 20}
)
# Remote or hybrid
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params={'remoteType[]': ['remote', 'hybrid'], 'limit': 20}
)
# Remote only
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?remoteType%5B%5D=remote&limit=20"
# Remote or hybrid
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?remoteType%5B%5D=remote&remoteType%5B%5D=hybrid&limit=20"
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 } }
);
# Minimum $100k salary
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params={'minSalary': 100000, 'salaryCurrency': 'USD', 'limit': 20}
)
# Salary range $80k-$150k
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params={'minSalary': 80000, 'maxSalary': 150000, 'salaryCurrency': 'USD', 'limit': 20}
)
# Minimum $100k salary
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?minSalary=100000&salaryCurrency=USD&limit=20"
# Salary range $80k-$150k
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?minSalary=80000&maxSalary=150000&salaryCurrency=USD&limit=20"
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:
| Value | Description |
|---|---|
entry | Entry-level / Junior |
mid | Mid-level |
senior | Senior |
lead | Lead / Staff |
executive | Executive / 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 } }
);
# Senior positions only
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params={'experienceLevel[]': 'senior', 'limit': 20}
)
# Senior or Lead
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params={'experienceLevel[]': ['senior', 'lead'], 'limit': 20}
)
# Senior positions only
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?experienceLevel%5B%5D=senior&limit=20"
# Senior or Lead
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?experienceLevel%5B%5D=senior&experienceLevel%5B%5D=lead&limit=20"
Employment Type
Filter by job type:
| Value | Description |
|---|---|
full_time | Full-time permanent |
part_time | Part-time |
contract | Contract / Freelance |
internship | Internship |
temporary | Temporary 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 } }
);
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params={'employmentType[]': 'full_time', 'limit': 20}
)
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?employmentType%5B%5D=full_time&limit=20"
Industry Filter
Filter by industry category:
| Value | Description |
|---|---|
technology_software | Technology / Software |
healthcare_medical | Healthcare / Medical |
finance_banking | Finance / Banking |
education | Education |
retail_ecommerce | Retail / 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 } }
);
# Single industry
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params={'industry[]': 'technology_software', 'limit': 20}
)
# Multiple industries (OR logic - matches ANY industry)
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params={'industry[]': ['technology_software', 'finance_banking'], 'limit': 20}
)
# Single industry
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?industry%5B%5D=technology_software&limit=20"
# Multiple industries (OR logic - matches ANY industry)
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?industry%5B%5D=technology_software&industry%5B%5D=finance_banking&limit=20"
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 } }
);
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params={
'skills[]': ['react', 'typescript'],
'remoteType[]': 'remote',
'experienceLevel[]': ['senior', 'lead'],
'minSalary': 120000,
'limit': 50
}
)
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?skills%5B%5D=react&skills%5B%5D=typescript&remoteType%5B%5D=remote&experienceLevel%5B%5D=senior&experienceLevel%5B%5D=lead&minSalary=120000&limit=50"
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 } }
);
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params={
'country': 'US',
'state': 'CA',
'experienceLevel[]': 'entry',
'employmentType[]': 'full_time',
'limit': 50
}
)
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?country=US&state=CA&experienceLevel%5B%5D=entry&employmentType%5B%5D=full_time&limit=50"
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 } }
);
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params={
'employmentType[]': 'contract',
'minSalary': 150000,
'limit': 50
}
)
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?employmentType%5B%5D=contract&minSalary=150000&limit=50"
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 } }
);
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params={'hasVisaSponsorship': True, 'country': 'US', 'limit': 50}
)
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?hasVisaSponsorship=true&country=US&limit=50"
Combining with Text Search
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`);
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params={
'q': 'backend developer',
'skills[]': ['python', 'django'],
'limit': 20
}
)
jobs = response.json()['data']
print(f"Found {len(jobs)} Python backend developer jobs")
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?q=backend%20developer&skills%5B%5D=python&skills%5B%5D=django&limit=20"
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:
| sortBy | Description |
|---|---|
postedAt | Date posted (default) |
title | Alphabetical by title |
company | Alphabetical 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 } }
);
# Newest jobs first (default)
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params={'sortBy': 'postedAt', 'order': 'DESC', 'limit': 20}
)
# Oldest jobs first
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params={'sortBy': 'postedAt', 'order': 'ASC', 'limit': 20}
)
# Newest jobs first (default)
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?sortBy=postedAt&order=DESC&limit=20"
# Oldest jobs first
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?sortBy=postedAt&order=ASC&limit=20"