curl -G "https://connect.jobo.world/api/companies/b5e6f7a8-1234-5678-9abc-def012345678/jobs" \
-H "X-Api-Key: $JOBO_API_KEY" \
--data-urlencode "page_size=50"import os
from jobo_enterprise import JoboClient
with JoboClient(api_key=os.environ["JOBO_API_KEY"]) as client:
jobs = client.companies.get_jobs(
"b5e6f7a8-1234-5678-9abc-def012345678",
page_size=50,
)
print(f"{jobs.total} open roles")
const options = {method: 'GET', headers: {'X-Api-Key': '<api-key>'}};
fetch('https://connect.jobo.world/api/companies/{id}/jobs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://connect.jobo.world/api/companies/{id}/jobs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Api-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://connect.jobo.world/api/companies/{id}/jobs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://connect.jobo.world/api/companies/{id}/jobs")
.header("X-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://connect.jobo.world/api/companies/{id}/jobs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"jobs": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"normalized_title": "<string>",
"occupation": {
"id": "esco:8d3e8aaa-791b-4c75-a465-f3f827028f50",
"name": "Registered Nurse",
"category": "Healthcare",
"subcategory": "Nursing",
"isco_code": "2221",
"onet_soc_codes": [
"29-1141.00"
]
},
"company": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"website": "<string>",
"logo_url": "<string>",
"summary": "<string>",
"industries": [
"<string>"
],
"categories": [
"<string>"
],
"linkedin_url": "<string>",
"crunchbase_url": "<string>",
"details_url": "<string>"
},
"description": "<string>",
"language": "en",
"summary": "<string>",
"listing_url": "<string>",
"apply_url": "<string>",
"locations": [
{
"location": "<string>",
"city": "<string>",
"region": "<string>",
"country": "<string>",
"latitude": 123,
"longitude": 123
}
],
"compensation": {
"min": 123,
"max": 123,
"currency": "<string>",
"period": "hourly"
},
"employment_type": "Full-time",
"workplace_type": "Remote",
"experience_level": "Intern",
"source": "greenhouse",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"date_posted": "2023-11-07T05:31:56Z",
"valid_through": "2023-11-07T05:31:56Z",
"qualifications": {
"must_have": {
"education": [
"<string>"
],
"certifications": [
"<string>"
],
"skills": [
{
"name": "<string>",
"type": "hard"
}
]
},
"preferred": {
"education": [
"<string>"
],
"certifications": [
"<string>"
],
"skills": [
{
"name": "<string>",
"type": "hard"
}
]
}
},
"responsibilities": [
"<string>"
],
"benefits": [
"<string>"
],
"is_work_auth_required": true,
"is_h1b_sponsor": true,
"is_clearance_required": true,
"external_id": "000123"
}
],
"total": 123,
"page": 123,
"page_size": 123,
"total_pages": 123,
"facets": {},
"warnings": [
{
"code": "companies_unmatched",
"field": "companies.include",
"message": "<string>"
}
],
"filters": {
"companies": {
"matched": [
{
"query": "<string>",
"companies": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"provider_id": "workday",
"website": "<string>",
"is_enabled": true
}
]
}
],
"unmatched": [
"<string>"
],
"exclude_unmatched": [
"<string>"
]
}
}
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"docs_url": "https://jobo.world/docs/guides/sync-a-database",
"api_version": "2026-08-31"
}{
"error": "Invalid or expired API key",
"api_version": "2026-08-31"
}{
"error": "Insufficient credits",
"detail": "This request needs 75 credits ($0.075). Your wallet balance is 12 credits ($0.012). Top up your wallet to continue.",
"group": "JobSearch",
"credits_required": 123,
"credits_balance": 123,
"cost_per_request_usd": 0.075,
"quota_remaining": 123
}{
"error": "Rate limit exceeded",
"detail": "Per-minute JobSearch request limit of 180 exceeded. Try again shortly.",
"retry_after_seconds": 1,
"code": "rate_limit_exceeded",
"group": "JobSearch",
"api_version": "2026-08-31"
}{
"message": "An error occurred",
"detail": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"docs_url": "https://jobo.world/docs/guides/sync-a-database",
"api_version": "2026-08-31"
}List a company's jobs
Return one company’s live jobs, newest first, paged with page and page_size. Use posted_after to fetch only jobs posted since your last sync. An unknown company ID returns 200 with an empty jobs array, not 404.
Billed as Search: delivered jobs use your included jobs first, then the pay-as-you-go rate; the Unlimited plan does not cover them. An empty page is free. See Billing.
curl -G "https://connect.jobo.world/api/companies/b5e6f7a8-1234-5678-9abc-def012345678/jobs" \
-H "X-Api-Key: $JOBO_API_KEY" \
--data-urlencode "page_size=50"import os
from jobo_enterprise import JoboClient
with JoboClient(api_key=os.environ["JOBO_API_KEY"]) as client:
jobs = client.companies.get_jobs(
"b5e6f7a8-1234-5678-9abc-def012345678",
page_size=50,
)
print(f"{jobs.total} open roles")
const options = {method: 'GET', headers: {'X-Api-Key': '<api-key>'}};
fetch('https://connect.jobo.world/api/companies/{id}/jobs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://connect.jobo.world/api/companies/{id}/jobs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Api-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://connect.jobo.world/api/companies/{id}/jobs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://connect.jobo.world/api/companies/{id}/jobs")
.header("X-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://connect.jobo.world/api/companies/{id}/jobs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"jobs": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"normalized_title": "<string>",
"occupation": {
"id": "esco:8d3e8aaa-791b-4c75-a465-f3f827028f50",
"name": "Registered Nurse",
"category": "Healthcare",
"subcategory": "Nursing",
"isco_code": "2221",
"onet_soc_codes": [
"29-1141.00"
]
},
"company": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"website": "<string>",
"logo_url": "<string>",
"summary": "<string>",
"industries": [
"<string>"
],
"categories": [
"<string>"
],
"linkedin_url": "<string>",
"crunchbase_url": "<string>",
"details_url": "<string>"
},
"description": "<string>",
"language": "en",
"summary": "<string>",
"listing_url": "<string>",
"apply_url": "<string>",
"locations": [
{
"location": "<string>",
"city": "<string>",
"region": "<string>",
"country": "<string>",
"latitude": 123,
"longitude": 123
}
],
"compensation": {
"min": 123,
"max": 123,
"currency": "<string>",
"period": "hourly"
},
"employment_type": "Full-time",
"workplace_type": "Remote",
"experience_level": "Intern",
"source": "greenhouse",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"date_posted": "2023-11-07T05:31:56Z",
"valid_through": "2023-11-07T05:31:56Z",
"qualifications": {
"must_have": {
"education": [
"<string>"
],
"certifications": [
"<string>"
],
"skills": [
{
"name": "<string>",
"type": "hard"
}
]
},
"preferred": {
"education": [
"<string>"
],
"certifications": [
"<string>"
],
"skills": [
{
"name": "<string>",
"type": "hard"
}
]
}
},
"responsibilities": [
"<string>"
],
"benefits": [
"<string>"
],
"is_work_auth_required": true,
"is_h1b_sponsor": true,
"is_clearance_required": true,
"external_id": "000123"
}
],
"total": 123,
"page": 123,
"page_size": 123,
"total_pages": 123,
"facets": {},
"warnings": [
{
"code": "companies_unmatched",
"field": "companies.include",
"message": "<string>"
}
],
"filters": {
"companies": {
"matched": [
{
"query": "<string>",
"companies": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"provider_id": "workday",
"website": "<string>",
"is_enabled": true
}
]
}
],
"unmatched": [
"<string>"
],
"exclude_unmatched": [
"<string>"
]
}
}
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"docs_url": "https://jobo.world/docs/guides/sync-a-database",
"api_version": "2026-08-31"
}{
"error": "Invalid or expired API key",
"api_version": "2026-08-31"
}{
"error": "Insufficient credits",
"detail": "This request needs 75 credits ($0.075). Your wallet balance is 12 credits ($0.012). Top up your wallet to continue.",
"group": "JobSearch",
"credits_required": 123,
"credits_balance": 123,
"cost_per_request_usd": 0.075,
"quota_remaining": 123
}{
"error": "Rate limit exceeded",
"detail": "Per-minute JobSearch request limit of 180 exceeded. Try again shortly.",
"retry_after_seconds": 1,
"code": "rate_limit_exceeded",
"group": "JobSearch",
"api_version": "2026-08-31"
}{
"message": "An error occurred",
"detail": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"docs_url": "https://jobo.world/docs/guides/sync-a-database",
"api_version": "2026-08-31"
}Authorizations
Path Parameters
Jobo company ID, as returned in company.id on each job.
Query Parameters
Only return jobs whose employer posting date is on or after this date
Page number (1-indexed)
x >= 1Number of results per page (max 100)
1 <= x <= 100Format of each job's description. markdown (default) returns it as stored. html renders it to HTML on the fly: raw HTML in the source is escaped and only http(s), mailto and relative URLs are kept.
markdown, html Response
Paginated list of jobs scoped to this company
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Non-fatal problems with the request. Omitted when there is nothing to report. The same codes are sent, comma-separated, in the X-Jobo-Warnings response header, so a client can branch without parsing the body.
Show child attributes
Show child attributes
How the server interpreted the filters that needed resolving. Present only when a companies filter was supplied.
Show child attributes
Show child attributes

