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 accept multiple values require bracket notation:
skills[]=react&skills[]=node — not skills=react,node or skills=["react"].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"
Tips:
- 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 | State/region codes | state=CA,NY,TX |
city | City names | city=Austin,Seattle |
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 } }
);
# 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 compensation range:
// Minimum $100k salary
const params = new URLSearchParams({
minSalary: '100000',
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',
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, '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, 'limit': 20}
)
# Minimum $100k salary
curl -H "X-API-Key: $JOBVEN_API_KEY" \
"https://api.jobven.com/v1/public/jobs?minSalary=100000&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&limit=20"
Note: Salary values are in the job's listed currency (usually USD). Jobs without salary data 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"
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 } }
);
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 parameter to search titles, summaries, and descriptions:
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"
The q parameter searches across:
- Job title
- Job summary
- Full description
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"