Search and sync millions of job listings.
Query job postings with flexible filters, run advanced multi-criteria searches, and sync large datasets using cursor-based feed endpoints—all from one unified API.
Four endpoints. Complete coverage.
From simple keyword searches to high-volume data ingestion—each endpoint is optimized for a specific integration pattern.
/api/jobsSearch Jobs.
Query millions of job postings with flexible filtering. Supports full-text search, geographic filtering, ATS source selection, and date-based queries.
/api/jobs/searchAdvanced Search.
Execute complex queries with multiple search terms, location filters, and source filtering. OR logic between arrays for flexible matching.
/api/feed/jobsJobs Feed.
Stream active job postings in high-volume batches with cursor-based pagination. Optimized for data ingestion and sync pipelines.
/api/feed/jobs/expiredExpired Jobs.
Retrieve IDs of removed or expired job postings. Use this endpoint to maintain data synchronization in your system.
Query jobs with precision.
Full-text search across titles, companies, and descriptions. Filter by location, ATS source, employment type, experience level, and more.
GET /api/jobs
qstringFull-text search across job titles, company names, and descriptions. Supports Boolean operators and quoted phrases.
locationstringFilter by location. Accepts city names, states, countries, or "remote" for remote-only jobs.
sourcesstringComma-separated list of ATS platform IDs to include (e.g., "greenhouse,lever").
remotebooleanRemote work filter: true (remote only), false (on-site only), or null (all jobs).
posted_afterdatetimeISO 8601 UTC timestamp. Only jobs posted after this date are returned.
employment_typestringFilter by type: full-time, part-time, contract, contract-to-hire, internship, or freelance.
experience_levelstringFilter by level: entry, mid, senior, lead, principal, or executive.
pageintegerPage number for pagination (1-indexed). Default: 1.
page_sizeintegerNumber of results per page (1-100). Default: 25.
curl "https://connect.jobo.world/api/jobs?q=software+engineer&location=San+Francisco&remote=true&page_size=10" -H "X-Api-Key: YOUR_API_KEY"{
"jobs": [
{
"id": "550e8400-e29b-41d4-a716-...",
"title": "Senior Software Engineer, Platform",
"description": "Build and scale distributed systems powering core product infrastructure...",
"company": {
"name": "Acme Corporation",
"logo_url": "https://cdn.jobo.world/..."
},
"locations": [{ "city": "San Francisco", "country": "US" }],
"employment_type": "Full-time",
"workplace_type": "Hybrid",
"experience_level": "Senior",
"compensation": {
"min": 180000, "max": 250000,
"currency": "USD", "period": "yearly"
},
"is_remote": true,
"source": "greenhouse",
"listing_url": "https://boards.greenhouse.io/acme/jobs/123",
"apply_url": "https://boards.greenhouse.io/acme/jobs/123#app",
"date_posted": "2025-02-10T08:00:00Z"
}
],
"total": 1847,
"page": 1,
"total_pages": 74
}Run complex, multi-criteria queries.
Pass multiple search terms, locations, and source filters in a single POST request. OR logic between arrays for flexible matching.
POST /api/jobs/search
queriesstring[]Array of search queries. Jobs matching ANY query are returned (OR logic).
locationsstring[]Array of location strings. Jobs in ANY location are returned.
sourcesstring[]Filter by ATS source IDs. Only jobs from these sources are returned.
is_remotebooleanRemote work filter: true (remote only), false (on-site only), null (all).
employment_typestring[]Filter by employment types. Jobs matching ANY type are returned.
experience_levelstring[]Filter by experience levels. Jobs matching ANY level are returned.
pageintegerPage number (1-indexed). Default: 1.
page_sizeintegerResults per page (1-100). Default: 25.
curl -X POST https://connect.jobo.world/api/jobs/search -H "Content-Type: application/json" -H "X-Api-Key: YOUR_API_KEY" -d '{
"queries": ["software engineer", "backend developer"],
"locations": ["San Francisco", "New York"],
"sources": ["greenhouse", "lever"],
"is_remote": true,
"page_size": 10
}'Sync millions of jobs to your stack.
High-volume cursor-based pagination for data ingestion pipelines. Process up to 1,000 jobs per batch with optional location and source filters.
POST /api/feed/jobs
batch_sizeintegerNumber of jobs per batch (1-1,000). Larger batches improve throughput. Default: 1,000.
cursorstringPagination cursor from previous response. Use null for initial request.
is_remotebooleanRemote work filter: true (remote only), false (on-site only), null (all).
posted_afterdatetimeISO 8601 UTC timestamp. Only jobs posted after this date are returned.
sourcesstring[]Filter by ATS source IDs.
locationsobject[]Array of location filters with country_code, optional region and city.
curl -X POST https://connect.jobo.world/api/feed/jobs -H "Content-Type: application/json" -H "X-Api-Key: YOUR_API_KEY" -d '{"batch_size": 1000, "is_remote": true}'{
"jobs": [ ... ],
"next_cursor": "eyJjcmVhdGVkX2F0Ijo...",
"has_more": true
}GET /api/feed/jobs/expired
Retrieve IDs of removed or expired jobs for data synchronization. Maximum 7-day lookback with cursor-based pagination.
curl "https://connect.jobo.world/api/feed/jobs/expired?expired_since=2025-02-09T00:00:00Z&batch_size=5000" -H "X-Api-Key: YOUR_API_KEY"What's in every response.
19 structured fields per job—compensation, locations with coordinates, employment metadata, and AI-extracted tags.
iduuidUnique identifier for this job posting.
titlestringJob title as listed by the employer.
company{ id, name, logo_url }Employer information including unique ID, display name, and logo.
descriptionstring (HTML)Full job description in HTML format with responsibilities, requirements, and benefits.
listing_urlstringDirect URL to the original job posting on the source site.
apply_urlstringDeep link to the application form for direct candidate redirection.
locationsobject[]Array of locations with city, region, country, ISO code, latitude, and longitude.
compensationobject | nullSalary range: min, max, currency (ISO 4217), period, raw_text, and is_estimated flag.
employment_typestring | nullFull-time, Part-time, Contract, Contract-to-hire, Internship, or Freelance.
workplace_typestring | nullRemote, Hybrid, or On-site work arrangement.
experience_levelstring | nullEntry, Mid, Senior, Lead, Principal, Executive, or Not Applicable.
sourcestringATS platform identifier (e.g., "greenhouse", "lever", "workday").
is_remotebooleanTrue if the job explicitly offers remote work.
date_posteddatetime | nullOriginal posting date from the source ATS.
created_atdatetimeTimestamp when the job was first indexed by Jobo.
updated_atdatetimeLast time the job record was refreshed.
tagsstring[] | nullNormalized skill and role tags extracted from the description.
departmentstring | nullHiring department (e.g., "Engineering", "Sales").
Connected to Everything.
44+ applicant tracking systems. One unified API. Jobo sits at the center of the recruiting ecosystem—pulling, normalizing, and delivering job data from every major platform.

Get started.
Create an account and start accessing job data in minutes—free tier included, no commitment required.
See what you'll pay.
Integrated per-request pricing with no hidden fees or monthly minimums.
Pricing details