# Karir.com โ€” Zapi reference > Karir.com job board โ€” search with location, degree, industry, function, company and salary filters, plus its filter and location vocabularies. **Base URL:** `https://api.zpi.web.id` **Auth:** Send `x-api-key: YOUR_KEY` header on every request. Get a free key at https://zpi.web.id/dashboard/keys. **Response envelope:** `{ content, message, errors }` **Rate limit:** 60 req/min on free tier. **Related:** - Detail page: https://zpi.web.id/api/jobs/karir - Endpoint catalog: https://zpi.web.id/category/jobs - Concise index: https://zpi.web.id/llms.txt - Full reference: https://zpi.web.id/llms-full.txt --- ## Karir.com **Category:** jobs ยท **Slug:** `karir` **Detail page:** https://zpi.web.id/api/jobs/karir Karir.com job board โ€” search with location, degree, industry, function, company and salary filters, plus its filter and location vocabularies. **Tags:** karir, lowongan, indonesia ### Filters The id vocabulary Karir.com's search takes. Rung 1 (direct), 12-20ms each, fetched together. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/jobs:karir/filters` - **Cache TTL:** 600s **Parameters:** _No parameters._ **cURL:** ```bash curl "https://api.zpi.web.id/v1/jobs:karir/filters" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/jobs:karir/filters", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/jobs:karir/filters", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 302, "items": [ { "id": 0, "name": "Tidak disebutkan", "group": "industry", "param": "industryIds" }, { "id": 3, "name": "Rancang Bangun Pesawat", "group": "industry", "param": "industryIds" }, { "id": 4, "name": "Otomotif", "group": "industry", "param": "industryIds" }, { "id": 5, "name": "Kimia", "group": "industry", "param": "industryIds" }, { "id": 7, "name": "Konstruksi", "group": "industry", "param": "industryIds" }, { "id": 8, "name": "Konsultan", "group": "industry", "param": "industryIds" } ], "provider": "karir" } ``` --- ### Job Karir.com job detail. Rung 1 (direct), ~40ms. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/jobs:karir/job/:jobId` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `jobId` | number | path | yes | Job id, as `search` returns it in `jobId`. | | `language` | enum(id|en) | query | no | Language for the upstream's own labels. Default id. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/jobs:karir/job/:jobId?language=id" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/jobs:karir/job/:jobId?language=id", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/jobs:karir/job/:jobId?language=id", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "url": "https://www.karir.com/opportunities/1401487", "jobId": 1401487, "title": "Telemarketing Officer", "majors": [ "Manajemen Komunikasi", "Administrasi Keuangan dan Perbankan", "Administrasi Asuransi dan Aktuaria" ], "salary": { "max": 4500000, "min": 2500000, "shown": true, "currency": "IDR" }, "address": "GEDUNG PODIUM THAMRIN NINE (ACE SQUARE) LT6JLMH. THAMRIN, 10. KEBON MELATI TANAH ABANG KOTA ADM JAKARTA PUSAT, DKI JAKARTA", "company": { "id": 1326951, "logo": "https://www.karir.com/assets/images/company/no_image.png", "name": "PT Chubb Life Insurance Indonesia", "industry": "Asuransi", "description": "Sebagai perusahaan underwriting, kami menilai, memperhitungkan dan mengelola risiko dengan kedisplinan dan pengetahuan yang mendalam. Kami melayani dan membayar klaim secara adil. Perusahaan ini juga dikenal karena penawaran produk dan layanannya yang luas, kemampuan distribusi yang luas, kekuatan keuangan yang andal serta jaringan perusahaan yang terdapat di seluruh dunia.", "subscribers": 0, "confidential": true, "workingHoursEnd": "0000-01-01T17:00:00Z", "workingHoursStart": "0000-01-01T09:00:00Z" }, "function": "Penjualan dan Pemasaran", "location": { "city": "Jakarta Pusat" }, "postedAt": "2026-09-02T04:52:15.785698Z", "provider": "karir", "expiresAt": "2026-11-01T00:00:00Z", "functions": [ "Penjualan dan Pemasaran", "Telemarketing" ], "isExpired": false, "isUpdated": false, "updatedAt": "2026-09-02T04:52:15.964377Z", "hasQuizzes": false, "viewsCount": 13, "functionIds": [ 86, 67 ], "employmentType": "Tidak Disebutkan", "qualifications": "

", "workExperience": 1, "educationLevels": [ "D3" ], "experienceLevel": "Pemula / Staf", "workArrangement": "Tidak Disebutkan", "experienceLevels": [ "Pemula / Staf" ], "responsibilities": "

" } ``` --- ### Locations Every location id Karir.com's search accepts, grouped under its province. Rung 1 (direct), ~35ms for both lists. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/jobs:karir/locations` - **Cache TTL:** 600s **Parameters:** _No parameters._ **cURL:** ```bash curl "https://api.zpi.web.id/v1/jobs:karir/locations" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/jobs:karir/locations", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/jobs:karir/locations", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 1, "items": [ { "province": null, "locations": [ { "name": "Banda Aceh", "locationId": 10003 }, { "name": "Lhokseumawe", "locationId": 10004 }, { "name": "Sabang", "locationId": 10005 }, { "name": "Medan", "locationId": 10007 }, { "name": "Padangsidempuan", "locationId": 10008 }, { "name": "Binjai", "locationId": 10009 } ], "provinceId": null } ], "provider": "karir" } ``` --- ### Search Karir.com job search. Rung 1 (direct), 300ms-1.3s depending on `limit`. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/jobs:karir/search` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `query` | string | query | no | Free-text search across job titles and company names. | | `locationIds` | unknown | query | no | Location id, or a list of them, from the `locations` endpoint. | | `industryIds` | unknown | query | no | Industry id, or a list of them, from the `filters` endpoint. | | `jobFunctionIds` | unknown | query | no | Job-function id, or a list of them, from the `filters` endpoint. | | `degreeIds` | unknown | query | no | Education-level id, or a list of them, from the `filters` endpoint. | | `companyIds` | unknown | query | no | Company id, or a list of them, as `search` returns it in `company.id`. | | `level` | number | query | no | Job-level id, from the `filters` endpoint. | | `minSalary` | number | query | no | Lowest monthly salary in IDR. | | `maxSalary` | number | query | no | Highest monthly salary in IDR. | | `expectedSalary` | number | query | no | Salary the candidate is asking for, in IDR. | | `sort` | enum(newest|priority|popular|salary) | query | no | Result ordering. Default newest. | | `page` | number | query | no | Page number. Default 1. | | `limit` | number | query | no | Results per page. Default 20, max 50. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/jobs:karir/search?query=admin&locationIds=10027&industryIds=7&jobFunctionIds=46°reeIds=3&companyIds=1279528&level=1&minSalary=8000000&maxSalary=3000000&expectedSalary=10000000&sort=newest&page=1&limit=20" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/jobs:karir/search?query=admin&locationIds=10027&industryIds=7&jobFunctionIds=46°reeIds=3&companyIds=1279528&level=1&minSalary=8000000&maxSalary=3000000&expectedSalary=10000000&sort=newest&page=1&limit=20", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/jobs:karir/search?query=admin&locationIds=10027&industryIds=7&jobFunctionIds=46°reeIds=3&companyIds=1279528&level=1&minSalary=8000000&maxSalary=3000000&expectedSalary=10000000&sort=newest&page=1&limit=20", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "page": 1, "count": 3, "items": [ { "url": "https://www.karir.com/opportunities/1401319", "jobId": 1401319, "title": "Administrative Staff", "majors": [ "Semuanya" ], "maxAge": 27, "minAge": 22, "salary": { "shown": false }, "company": { "id": 27514, "logo": "https://karir-production.nos.jkt-1.neo.id/logos/49/678449/Toto.jpg", "name": "PT Surya Toto Indonesia Tbk", "industry": "Manufaktur" }, "function": "Administrasi", "isUrgent": false, "location": { "city": "Prov. DKI-Jakarta" }, "postedAt": "2026-09-02T03:10:00Z", "createdAt": "2026-07-10T10:55:55.884416Z", "functions": [ "Administrasi" ], "isUpdated": true, "updatedAt": "2026-09-02T03:30:42.919967Z", "industryId": 44, "workExperience": 2, "educationLevels": [ "S1" ], "experienceLevel": "Pemula / Staf", "experienceLevels": [ "Pemula / Staf" ], "workExperienceMonths": 24 }, { "url": "https://www.karir.com/opportunities/1401436", "jobId": 1401436, "title": "Administrasi & Keuangan Depo Container", "majors": [ "Administrasi Bisnis (Keuangan)", "Administrasi Keuangan dan Perbankan", "Manajemen" ], "maxAge": 30, "minAge": 23, "salary": { "max": 5000000, "min": 4500000, "shown": true, "currency": "IDR" }, "company": { "id": 110905, "logo": "https://karir-production.nos.jkt-1.neo.id/logos/95/1790895/download__1_.jpg", "name": "PT Inter Mitra Transindo", "industry": "Logistik / Transportasi" }, "function": "Akuntansi, Keuangan", "isUrgent": false, "location": { "city": "Jakarta Utara" }, "postedAt": "2026-09-01T02:50:00Z", "createdAt": "2026-08-14T07:09:42.19834Z", "functions": [ "Akuntansi, Keuangan", "Logistik", "Administrasi" ], "isUpdated": true, "updatedAt": "2026-09-01T19:02:22.436719Z", "industryId": 18, "workExperience": 1, "educationLevels": [ "S1", "D3" ], "experienceLevel": "Pemula / Staf", "experienceLevels": [ "Pemula / Staf", "Staf Senior", "Supervisor" ], "workExperienceMonths": 12 }, { "url": "https://www.karir.com/opportunities/1401467", "jobId": 1401467, "title": "Talent Acquisition Admin", "majors": [ "Manajemen", "Psikologi" ], "maxAge": 25, "minAge": 21, "salary": { "max": 5729000, "min": 5700000, "shown": true, "currency": "IDR" }, "company": { "id": 9363, "logo": "https://karir-production.nos.jkt-1.neo.id/logos/-3/-385739/Logo_Bina_Talenta.jpg", "name": "PT Bina Talenta", "industry": "Keuangan / Bank" }, "function": "Administrasi", "isUrgent": false, "location": { "city": "Prov. DKI-Jakarta" }, "postedAt": "2026-08-31T04:38:00Z", "createdAt": "2026-08-24T07:38:22.939177Z", "functions": [ "Administrasi" ], "isUpdated": true, "updatedAt": "2026-09-01T19:02:26.741324Z", "industryId": 11, "workExperience": 1, "educationLevels": [ "S1" ], "experienceLevel": "Pemula / Staf", "experienceLevels": [ "Pemula / Staf" ], "workExperienceMonths": 12 } ], "limit": 5, "query": "admin", "total": 3, "hasMore": false, "nextPage": null, "provider": "karir" } ``` --- _Generated: 2026-09-02T14:24:17.758Z_