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.

Next Steps

Jobs Reference

All parameters and response fields.

Incremental Sync

Fetch only new jobs on a schedule.