Python
Fetch, filter, and paginate Jobven API job data in Python using the requests library.
Python examples using the requests library. Install it with pip install requests and set your API key first — see Authentication.
export JOBVEN_API_KEY="your_api_key"
Fetch Jobs
Basic request to list job postings:
import os
import requests
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params={'limit': 10}
)
response.raise_for_status()
data = response.json()
print(f"Found {len(data['data'])} jobs on this page")
Filter Jobs
Search for remote React developer positions with a salary floor. Array filters use bracket notation (skills[]):
import os
import requests
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params={
'q': 'react developer',
'skills[]': ['react', 'typescript'],
'remoteType[]': ['remote'],
'minSalary': 100000,
'limit': 20
}
)
data = response.json()
for job in data['data']:
company = job['companies'][0]['name'] if job['companies'] else 'Unknown'
print(f"{job['title']} - {company}")
For every available filter, see the Filter Jobs guide.
Paginate Results
Fetch all matching jobs using cursor pagination:
import os
import requests
def fetch_all_jobs(filters=None):
jobs = []
cursor = None
has_more = True
filters = filters or {}
while has_more:
params = {**filters, 'limit': 100}
if cursor:
params['cursor'] = cursor
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params=params
)
response.raise_for_status()
data = response.json()
jobs.extend(data['data'])
cursor = data['meta'].get('nextCursor')
has_more = data['meta'].get('hasMore', False)
print(f"Progress: {len(jobs)} jobs fetched")
return jobs
# Usage
all_remote_jobs = fetch_all_jobs({'remoteType[]': ['remote']})
Get a Single Job
Fetch a specific job by ID:
import os
import requests
job_id = 'abc123-def456-ghi789'
response = requests.get(
f'https://api.jobven.com/v1/public/jobs/{job_id}',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']}
)
if response.status_code == 404:
print('Job not found')
else:
job = response.json()
print(job['title'])
Error Handling
Handle authentication and rate limit errors gracefully. There is no Retry-After header — burst-limit 429 responses include a retryAfter value (seconds) in the body:
import os
import time
import requests
def fetch_jobs(params):
response = requests.get(
'https://api.jobven.com/v1/public/jobs',
headers={'X-API-Key': os.environ['JOBVEN_API_KEY']},
params=params
)
if response.status_code == 401:
raise Exception('Invalid API key')
if response.status_code == 429:
body = response.json()
# Quota exhausted - retrying won't help until reset
if body.get('error') == 'Quota Exceeded':
raise Exception('Monthly quota exhausted')
# Burst limit - wait and retry
time.sleep(body.get('retryAfter', 1))
return fetch_jobs(params)
response.raise_for_status()
return response.json()
See Handle Rate Limits for the full retry strategy.