Karirlink APIkarirlink.id ↗
Access entry-level and fresh graduate job listings from Karirlink.id. Filter by location, employment type, category, and more. Get full job details via API.
What is the Karirlink API?
The Karirlink.id API provides access to job listings from Indonesia's fresh graduate and entry-level job portal through 2 endpoints. The list_jobs endpoint returns up to 12 jobs per page with fields including title, company, location, salary range, employment type, and workplace type. The get_job_details endpoint returns full descriptions and requirements for a specific posting.
curl -X GET 'https://api.parse.bot/scraper/95441635-11f1-496b-b6c6-7a5f5ab9b755/list_jobs?page=1&query=manager&category=7&location=kota-jakarta-pusat&workplace_type=1&employment_type=1' \ -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 karirlink-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.karirlink_job_listings_api import Karirlink, JobCategory, EmploymentType, WorkplaceType
karirlink = Karirlink()
# List IT jobs that are full-time
for job_summary in karirlink.jobsummaries.list(
category=JobCategory.KOMPUTER_TI,
employment_type=EmploymentType.FULL_TIME,
):
print(job_summary.title, job_summary.company, job_summary.location, job_summary.salary_text)
# Get full details for each job
details = job_summary.details()
print(details.description, details.requirements)
List available job openings with pagination. Returns 12 jobs per page. Supports filtering by search query, location, employment type, workplace type, and job category. Results are ordered by most recently posted.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| query | string | Search keyword for job title or company name (e.g. 'manager', 'engineer'). Converted to slug format internally. |
| category | string | Job category filter by numeric ID. |
| location | string | Location filter as a slug (e.g. 'kota-jakarta-pusat', 'kab-bandung-barat'). Values available from the site's location dropdown. |
| workplace_type | string | Workplace type filter. |
| employment_type | string | Employment type filter. |
{
"type": "object",
"fields": {
"jobs": "array of job summary objects with id, title, company, location, employment_type, workplace_type, salary_text, salary_min, salary_max, started_at, ended_at, created_at, permalink",
"page": "integer - current page number",
"total_pages": "integer - total available pages",
"jobs_on_page": "integer - number of jobs returned on this page"
},
"sample": {
"data": {
"jobs": [
{
"id": 78108,
"title": "Accounting Staff",
"company": "PT DEWASUTRATEX",
"ended_at": "2026-08-09T15:57:06.000000Z",
"location": "Kota Cimahi, Jawa Barat",
"permalink": "accounting-staff-pt-dewasutratex-kota-cimahi-1781107026050",
"created_at": "2026-06-10T15:57:06.000000Z",
"salary_max": null,
"salary_min": 0,
"started_at": "2026-06-10T15:57:06.000000Z",
"salary_text": "Informasi Tidak Tersedia",
"workplace_type": "Onsite",
"employment_type": "Contract"
}
],
"page": 1,
"total_pages": 103,
"jobs_on_page": 12
},
"status": "success"
}
}About the Karirlink API
Listing and Filtering Jobs
The list_jobs endpoint returns paginated job listings from Karirlink.id, 12 results per page. Each job object in the jobs array includes id, title, company, location, employment_type, workplace_type, salary_text, salary_min, salary_max, and a permalink slug. The response also includes page, total_pages, and jobs_on_page for pagination control.
Filtering is available through several parameters: query accepts a keyword like 'engineer' or 'manager' to match job title or company name; location takes a slug value such as 'kota-jakarta-pusat'; category accepts a numeric ID (e.g. 1 for Akuntansi/Keuangan, 2 for Sumber Daya Manusia); employment_type maps to values 1–5 covering Full Time, Part Time, Kontrak, Magang/Internship, and Freelance; and workplace_type accepts 1 (Onsite), 2 (Remote), or 3 (Hybrid).
Job Details
The get_job_details endpoint takes a permalink slug from a list_jobs result and returns the full posting. Response fields include title, company, location, salary, employment_type, permalink, description, and requirements. This is where structured role responsibilities and candidate qualifications are exposed, making it suitable for displaying or analyzing full job postings.
Coverage Scope
Karirlink.id focuses specifically on the Indonesian job market, with an emphasis on fresh graduate and entry-level roles. Location slugs correspond to Indonesian cities and regencies. Category IDs map to Indonesian-language occupational sectors. Salary fields return both a human-readable salary_text string and numeric salary_min/salary_max values where disclosed.
The Karirlink API is a managed, monitored endpoint for karirlink.id — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when karirlink.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 karirlink.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 entry-level job listings for Indonesian fresh graduates into a curated job board
- Monitor salary ranges by category or location using salary_min and salary_max fields
- Build a remote/hybrid job feed for Indonesian candidates by filtering on workplace_type
- Track internship (Magang) postings by filtering employment_type to value 4
- Compare job availability across Indonesian cities using the location slug filter
- Enrich a recruiting CRM with full job descriptions and requirements via get_job_details
- Analyze which job categories have the most openings by iterating category filter values
| 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 Karirlink.id offer an official developer API?+
What does list_jobs return for salary data, and is it always present?+
salary_text (a human-readable string), salary_min, and salary_max. Salary disclosure is at the employer's discretion, so these fields may be empty or null for listings where the company has not stated a range.Does the API return company profile pages or recruiter contact details?+
How does pagination work in list_jobs?+
page (current page number), total_pages (total available pages), and jobs_on_page (count of results on the current page). Pass the page integer parameter to advance through results.Can I retrieve job listings by specific location values?+
location parameter accepts slug-formatted strings corresponding to Indonesian cities and regencies, such as 'kota-jakarta-pusat' or 'kab. simeulue'. The available location slugs mirror the location facets used on the Karirlink.id site. Slugs for less common areas may return zero results if no active listings exist.