Klob APIklob.id ↗
Access job openings from Klob.id via 2 endpoints. Filter by keyword, location, job level, and work model. Get full job details including salary and HTML descriptions.
What is the Klob API?
The Klob.id API exposes 2 endpoints that return job vacancy data from Indonesia's Klob.id career platform. The list_jobs endpoint delivers paginated job summaries filterable by keyword, location ID, work model, and job level, while get_job_details returns the full vacancy record — including salary range, open/close dates, HTML job description, and structured location and work model objects — for any individual posting.
curl -X GET 'https://api.parse.bot/scraper/ac240c41-2fa3-44dc-83fd-16dc3b881aa5/list_jobs?page=0&size=5' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace klob-id-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.klob_job_listings_api import Klob, JobSummary, Job, WorkModel, JobLevel
klob = Klob()
# List remote senior-level jobs
for job_summary in klob.jobs.list(work_model=WorkModel.FULL_REMOTE, job_level=JobLevel.SENIOR, limit=5):
print(job_summary.position_name, job_summary.corporate_name, job_summary.open_date)
if job_summary.location:
print(job_summary.location.city, job_summary.location.province)
# Navigate to full details
detail = job_summary.details()
print(detail.position_name_en, detail.number_of_vacancies, detail.status)
List all available job openings on Klob.id with optional filtering by keyword, location, work model, and job level. Returns paginated results sorted by recency. Each job includes brief descriptions, salary info, location details, work model, and employment status.
| Param | Type | Description |
|---|---|---|
| page | integer | Zero-based page number for pagination. |
| size | integer | Number of results per page. |
| keyword | string | Search keyword to filter jobs by position name. |
| location | string | Location ID to filter jobs (e.g. 'dki04' for Kota Administrasi Jakarta Selatan). Values available from the upstream dropdown. |
| job_level | string | Job level filter. |
| work_model | string | Work model filter. |
{
"type": "object",
"fields": {
"jobs": "array of job summary objects containing position name, corporate info, employment status, work model, job level, location, salary, dates, descriptions, and badge flags",
"page": "integer, current zero-based page number",
"size": "integer, number of results per page",
"total_pages": "integer, total number of pages available",
"is_last_page": "boolean, whether this is the last page",
"total_elements": "integer, total number of matching jobs"
},
"sample": {
"data": {
"jobs": [
{
"disabled": false,
"location": {
"id": "CRP000526_OFLCRP000001",
"city": "Kota Administrasi Jakarta Selatan",
"country": null,
"province": "JAKARTA RAYA",
"postalCode": "12950",
"description": "Head Office",
"gpsLocation": "",
"urlOfficeImage": null,
"longDescription": "Kantor Taman E3.3 Unit B 3-3A"
},
"badge_new": false,
"job_level": null,
"open_date": "2026-02-19",
"salary_to": null,
"badge_star": false,
"close_date": "2026-12-31",
"work_model": {
"id": "wt002",
"text": "Hybrid"
},
"posted_date": "19/02/2026",
"promote_job": false,
"salary_from": null,
"show_salary": false,
"corporate_id": "CRP000526",
"is_anonymous": false,
"position_name": "[TALENT POOL] Fasilitator Bahasa dan Soft skills",
"corporate_logo": "https://files.klob.id/public/mco01/ks3xsuly/Logo_DayaLima_Resources.png",
"corporate_name": "DayaLima Recruitment",
"descriptions_en": "<html>...</html>",
"descriptions_id": "<html>...</html>",
"salary_currency": {
"id": "IDR",
"text": "Indonesia Rupiah",
"displayName": "Rp."
},
"job_vacancy_code": "KVCCRP006172",
"position_name_en": "[TALENT POOL] Fasilitator Bahasa dan Soft skills",
"employment_status": "Karyawan Kontrak",
"corporate_verified": "verified",
"employment_status_en": "Contract"
}
],
"page": 0,
"size": 3,
"total_pages": 10,
"is_last_page": false,
"total_elements": 30
},
"status": "success"
}
}About the Klob API
Job Listings with Filters
The list_jobs endpoint returns an array of job summary objects alongside pagination metadata: page, size, total_pages, is_last_page, and total_elements. You can narrow results using the keyword parameter for position-name search, location for a location ID such as dki04 (Kota Administrasi Jakarta Selatan), job_level for seniority codes from 1 (Unskilled) through 6 (Executive), and work_model for arrangement codes including wt001 (On Site), wt002 (Hybrid), wt003 (Full Remote), and wt004 (Scholarship). Pagination uses a zero-based page index with configurable size.
Job Detail Records
The get_job_details endpoint accepts a job_code string — such as kvccrp006897, taken from a list_jobs result — and returns the full vacancy record. Response fields include description (full HTML job description), salary_from and salary_to (both nullable numbers), open_date, close_date, posted_date, a location object with city, province, and description, a job_level object with id, text, and longDescription, a work_model object with id and text, and a top-level status string.
Coverage and Data Shape
All job data is scoped to listings published on Klob.id, which focuses on the Indonesian job market. Location filtering relies on Klob.id's internal location ID scheme; the dki04 example maps to South Jakarta. Salary fields return null when the posting does not disclose compensation. The HTML in the description field may include formatting tags and should be sanitized before rendering in untrusted contexts.
The Klob API is a managed, monitored endpoint for klob.id — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when klob.id changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official klob.id API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate Indonesian job listings into a localized job board filtered by city and work model
- Monitor new vacancies on Klob.id by polling
list_jobssorted by recency and checkingposted_date - Build a salary benchmarking dataset using
salary_fromandsalary_tofields across job levels - Filter remote and hybrid roles in Indonesia using
work_modelcodeswt002andwt003 - Populate a career app with full job descriptions and qualifications via
get_job_details - Track open and closing dates for Indonesian job postings using
open_dateandclose_datefields
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Klob.id offer an official developer API?+
What does `get_job_details` return that `list_jobs` does not?+
get_job_details returns fields not present in the listing summary: the full HTML description, salary_from and salary_to as numeric values (or null when undisclosed), open_date, close_date, and expanded job_level data including longDescription. The listing endpoint returns only the summary fields needed for browsing and pagination.How does location filtering work, and where do location IDs come from?+
location parameter accepts Klob.id location ID strings such as dki04 for Kota Administrasi Jakarta Selatan. These IDs follow Klob.id's internal taxonomy. The API description notes that location values are available from the platform; you need to know or look up the ID for a target area before filtering.Does the API return company profiles or recruiter contact details?+
Are salary fields always populated?+
salary_from and salary_to in get_job_details are nullable and return null when the job posting does not disclose compensation. Any application consuming these fields should handle null values explicitly.