Quick Start

Make your first Jobven API call in under 5 minutes. Step-by-step tutorial for fetching job listings.

This guide will walk you through making your first Jobven API call. By the end, you'll have successfully fetched job listings and understand the response format.

Want to see the response shape before you get a key? This is a live record from the API:

See real data

The newest job in the index, straight from the live API. No signup.

Prerequisites

Before starting, make sure you have:

  • ✅ A Jobven account
  • ✅ An API key from your dashboard
  • ✅ A tool to make HTTP requests (cURL, Postman, or your preferred language)

Step 1: Make Your First Request

Let's start with a simple request to list jobs. Replace your_api_key with your actual API key:

curl -X GET 'https://api.jobven.com/v1/public/jobs?limit=5' \
  -H 'X-API-Key: your_api_key'

Step 2: Understand the Response

A successful response looks like this:

{
  "data": [
    {
      "id": "abc123-def456-ghi789",
      "title": "Senior Software Engineer",
      "description": "We are looking for an experienced software engineer...",
      "summary": "Build scalable systems for a growing fintech company",
      "locations": [
        {
          "addressLocality": "San Francisco",
          "addressRegion": "California",
          "addressCountry": "US",
          "workLocation": "hybrid"
        }
      ],
      "remoteType": "hybrid",
      "skills": {
        "primary_skills": ["Python", "PostgreSQL", "AWS"],
        "secondary_skills": ["Docker", "Kubernetes"],
        "soft_skills": ["communication", "leadership"]
      },
      "salary": {
        "min": 150000,
        "max": 200000,
        "currency": "USD",
        "period": "annual"
      },
      "experienceLevel": "senior",
      "employmentType": "full_time",
      "companies": [
        {
          "name": "Example Corp",
          "website": "example.com"
        }
      ],
      "postedAt": 1705392000,
      "status": "active"
    }
  ],
  "meta": {
    "count": 5,
    "nextCursor": "eyJpZCI6ImFiYzEyMyIsInZhbHVlIjoxNzA1MzkyMDAwMDAwfQ==",
    "hasMore": true,
    "requestTimeMs": 45,
    "lastUpdatedAt": "2025-01-20T12:00:00Z"
  }
}

Response Structure

FieldDescription
dataArray of job objects matching your query
meta.totalExact number of jobs matching your filters. Only returned when you pass includeTotal=true
meta.countNumber of jobs in this response
meta.nextCursorCursor for fetching the next page
meta.hasMoreWhether more results exist
meta.requestTimeMsAPI response time in milliseconds
meta.lastUpdatedAtTimestamp of most recently updated job

Step 3: Add Filters

Now let's search for specific jobs. Here's how to find remote software engineering positions:

curl -X GET 'https://api.jobven.com/v1/public/jobs?q=software%20engineer&remoteType[]=remote&limit=10' \
  -H 'X-API-Key: your_api_key'

Common Filters

FilterExampleDescription
q?q=developerSearch in title, summary, description
skills[]?skills[]=python&skills[]=reactFilter by required skills
remoteType[]?remoteType[]=remoteOn-site, remote, hybrid, flexible
location?location=New YorkFilter by location name
country?country=USFilter by country code
experienceLevel?experienceLevel=seniorEntry, mid, senior, lead, executive
minSalary?minSalary=100000Minimum salary filter

See the Jobs Reference for all available filters.

Step 4: Get a Single Job

To fetch detailed information about a specific job, use its ID:

curl -X GET 'https://api.jobven.com/v1/public/jobs/abc123-def456-ghi789' \
  -H 'X-API-Key: your_api_key'

Step 5: Paginate Through Results

For large result sets, use cursor pagination to fetch all jobs:

async function getAllJobs(query) {
  const allJobs = [];
  let cursor = null;
  let hasMore = true;

  while (hasMore) {
    const params = new URLSearchParams({
      q: query,
      limit: 100,
      ...(cursor && { cursor })
    });

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

    const data = await response.json();
    allJobs.push(...data.data);

    cursor = data.meta.nextCursor;
    hasMore = data.meta.hasMore;

    console.log(`Fetched ${allJobs.length} jobs so far...`);
  }

  return allJobs;
}

// Usage
const jobs = await getAllJobs('developer');
console.log(`Total jobs fetched: ${jobs.length}`);
Tip: For daily updates, use the postedAfter parameter instead of fetching all jobs. This is much more efficient for keeping your data in sync.

Need Help?

If you run into issues: