Overview

Job API is a REST service that aggregates job postings from multiple boards in a single request. It wraps python-jobspy and exposes it as a clean JSON API deployable on Vercel.

Supported job boards: indeed, linkedin, naukri, remoteok, arbeitnow, remotive, jobicy.

Want to test the API interactively? Use the Playground — a built-in API client that lets you send requests and inspect responses in real time.

Quick Start

The simplest possible request — search for software engineer jobs on Indeed:

# Example curl "https://j0b-api.vercel.app/api/jobs?search_term=software+engineer&location=New+York&site_name=indeed&results_wanted=10"

Base URL

https://j0b-api.vercel.app

All endpoints are relative to the base URL. In local development the default is http://localhost:8000.

Endpoints

GET /api/jobs Scrape jobs via query string

Pass all parameters as URL query parameters. Ideal for browser fetches and simple integrations.

ParameterTypeRequiredDefaultDescription
search_termstringoptionalKeyword query. Supports -negative and "exact phrase".
site_namestringoptionalallComma-separated boards: indeed, linkedin, naukri, remoteok, arbeitnow, remotive, jobicy.
locationstringoptionalCity, state, country, or any location string.
country_indeedstringoptionalUSACountry filter for Indeed. E.g. UK, Canada.
results_wantedintegeroptional15Number of results per site (max ~1000).
hours_oldintegeroptionalOnly return jobs posted within the last N hours.
job_typestringoptionalfulltime | parttime | internship | contract
is_remotebooleanoptionalFilter for remote listings only.
distanceintegeroptional50Search radius in miles.
offsetintegeroptional0Skip the first N results (for pagination).
description_formatstringoptionalmarkdownmarkdown | html
easy_applybooleanoptionalReturn only jobs with in-board quick apply.
linkedin_fetch_descriptionbooleanoptionalfalseFetch full LinkedIn descriptions (significantly slower).
linkedin_company_idsstringoptionalComma-separated LinkedIn company IDs, e.g. 1441,2382.
enforce_annual_salarybooleanoptionalfalseNormalise all salary figures to annual amounts.
output_formatstringoptionaljsonjson | csv | excel
proxiesstringoptionalComma-separated proxy list user:pass@host:port.
POST /api/jobs Scrape jobs via JSON body

Accepts the same parameters as the GET endpoint but as a JSON body. Array fields like site_name and linkedin_company_ids can be passed as real JSON arrays.

curl -X POST "https://j0b-api.vercel.app/api/jobs" \ -H "Content-Type: application/json" \ -d '{ "site_name": ["indeed", "linkedin"], "search_term": "data scientist", "location": "San Francisco, CA", "results_wanted": 20, "hours_old": 48, "is_remote": true }'
GET /api/health Check API status

Returns a simple status object. Useful for uptime monitoring and deployment checks.

// Response { "status": "ok", "service": "Job API", "version": "2.0.0" }

Response Schema

All successful job requests return the following top-level structure:

FieldTypeDescription
jobsarrayArray of job posting objects.
countintegerTotal number of jobs returned.
sitesarrayThe job boards that were queried.
queryobjectEcho of the parameters used for the request.

Job Object

FieldTypeDescription
titlestringJob title.
companystringEmployer name.
sitestringSource board, e.g. indeed.
job_urlstringDirect link to the job posting.
locationobject{ city, state, country }
is_remotebooleanWhether the role is remote.
job_typestringfulltime, parttime, contract, or internship.
job_levelstringSeniority level (where available).
date_postedstringISO-8601 date, e.g. 2025-01-15.
salaryobject{ min_amount, max_amount, interval, currency }
descriptionstringFull job description in the requested format.
emailsarrayContact emails found in the posting.
skillsarraySkills extracted from the description.
company_urlstringURL to the company profile page.
company_industrystringIndustry category.

Code Examples

Remote jobs posted in the last 24h

curl "https://j0b-api.vercel.app/api/jobs?search_term=product+manager&is_remote=true&hours_old=24&results_wanted=25&site_name=linkedin,indeed"

Filter by specific LinkedIn companies

curl -X POST "https://j0b-api.vercel.app/api/jobs" \ -H "Content-Type: application/json" \ -d '{"site_name":["linkedin"],"search_term":"engineer","linkedin_company_ids":[1441,1035],"results_wanted":50}'