API Lowongan Kerja Terbuka untuk Umum, Tapi Jarang Dimanfaatkan
Empat sistem pelacakan pelamar (ATS) terbesar di dunia menyediakan API JSON publik tanpa kunci autentikasi untuk mengakses seluruh lowongan kerja perusahaan teknologi. Data yang sama dengan halaman karier resmi, tanpa perlu parsing HTML atau headless browser.
Ironinya, sebagian besar pengembang, aggregator pekerjaan, bahkan tim rekrutmen itu sendiri, masih meng scrape halaman web biasa alih-alih menggunakan endpoint yang jauh lebih efisien ini.
Empat Endpoint Utama yang Bisa Diakses Siapa Saja
Platform ATS dominan di industri teknologi masing-masing menyediakan API terbuka dengan struktur berbeda. Berikut empat penyedia utama beserta perusahaan yang menggunakannya:
- Greenhouse — digunakan oleh Stripe, Figma, dan Airbnb. Endpoint:
GET https://boards-api.greenhouse.io/v1/boards/{board}/jobs?content=false. Satu request ke board Stripe mengembalikan 490 lowongan aktif sekaligus. - Lever — populer di kalangan startup tahap awal. Endpoint:
GET https://api.lever.co/v0/postings/{company}?mode=json. Tanpa autentikasi, langsung mengembalikan seluruh posting pekerjaan. - Ashby — dipilih oleh Ramp, Plaid, dan banyak startup baru. Endpoint:
GET https://api.ashbyhq.com/posting-api/job-board/{org}. - SmartRecruiters — dipakai oleh perusahaan enterprise seperti Visa. Endpoint:
GET https://api.smartrecruiters.com/v1/companies/{company}/postings?limit=100&offset=0dengan pagination berbasis offset.
Tidak perlu API key, tidak perlu login, dan tidak ada masalah rate limit selama penggunaan wajar. Ini bukan sandbox atau trial terbatas — ini data produksi lengkap yang memang dirancang untuk publik.
Quirk Teknis yang Perlu Diperhatikan
Meskipun terdengar sederhana, setiap API memiliki peculiarities yang bisa menjebak pengembang yang tidak membaca dokumentasi dengan saksama.
Greenhouse menyimpan informasi departemen secara terpisah. Endpoint jobs mengembalikan judul, lokasi, dan tanggal, tapi tanpa departemen. Pengembang perlu memanggil endpoint /v1/boards/{board}/departments secara terpisah untuk membangun mapping jobId ke departemen. Data departemen datang dengan jobs tersarang per departemen.
Lever memiliki perilaku ambigu saat menghadapi nama perusahaan yang tidak dikenal. Baik perusahaan yang tidak ada maupun perusahaan dengan nol lowongan sama-sama mengembalikan array kosong. Tidak ada mekanisme “not found” yang jelas. Jika melakukan probing nama perusahaan, anggap array kosong sebagai miss dan lanjutkan ke provider lain.
Ashby mengembalikan deskripsi lengkap secara default, termasuk HTML mentah. Pengembang perlu melakukan stripping data yang tidak diperlukan sebelum menyimpan ke database dan memfilter berdasarkan field isListed untuk menghindari posting yang sudah di-takedown.
Masalah Board Token Bukan Nama Perusahaan
Salah satu jebakan paling umum adalah asumsi bahwa board token identik dengan nama perusahaan. Biasanya slug seperti stripe memang berfungsi untuk Stripe, tetapi variasi brand, singkatan, dan rename sering memecah pendekatan ini.
Strategi terbaik adalah mencoba beberapa varian slug — acme-corp, acmecorp, acme — di keempat provider dan mengambil response pertama yang berhasil. Pendekatan ini juga menjadi mekanisme bertahan saat perusahaan melakukan migrasi platform. Contoh nyata: Plaid berpindah dari Lever ke Ashby secara diam-diam, dan probing keduanya tetap menemukan data lowongan tanpa interruption.
Normalisasi Data Lintas Provider
Setiap API menggunakan skema penamaan berbeda untuk field yang sama. Untuk membangun pipeline data yang konsisten, normalisasi ke satu shape baris menjadi langkah kritis sejak awal.
Field title pada Greenhouse disebut text di Lever, title di Ashby, dan name di SmartRecruiters. Field departemen berada di path berbeda: categories.department untuk Lever, department.label untuk SmartRecruiters, atau memerlukan lookup terpisah untuk Greenhouse. Lokasi juga terfragmentasi — Lever menggabungkan city dan region, sementara SmartRecruiters memisahkan location.city dan location.region.
Field remote memerlukan inferensi berbeda per provider. Greenhouse mengharuskan inferensi dari nama lokasi, Lever menggunakan workplaceType, Ashby menyediakan flag isRemote langsung, dan SmartRecruiters menaruh informasi ini di location.remote.
Timestamp posting juga tidak konsisten. Greenhouse memakai first_published_date, Lever menggunakan createdAt dalam milidetik, Ashby menyediakan publishedAt, dan SmartRecruiters menggunakan releasedDate. Tanpa normalisasi eksplisit, membandingkan tanggal posting lintas platform menjadi sumber bug yang umum.
Biaya Operasional yang Hampir Nol
Menjalankan pipeline data dari keempat provider ini memakan biaya komputasi kurang dari satu sen untuk 5 perusahaan dengan total 163 baris data lowongan. Tidak ada browser yang dibutuhkan — seluruh proses bisa berjalan sebagai HTTP request sederhana.
Menjalankan polling harian dan melakukan diff terhadap data kemarin memungkinkan deteksi lowongan baru pada jam pertama setelah posting. Untuk use case sinyal penjualan, data ini sangat berharga: perusahaan yang merekrut tiga SDR sekaligus kemungkinan besar sedang bersiap mengakuisisi tooling sales baru.
Potensi yang Belum Tereksplorasi
Dengan normalisasi yang tepat, kombinasi keyword filter, location filter, dan remote flag membuka berbagai kemungkinan. Personal job alert bisa dibangun dalam hitungan jam. Niche job board vertikal bisa menarik data real-time tanpa infrastruktur scraping yang rumit. Hiring tracker untuk sales intelligence menjadi feasible tanpa tim engineering besar.
Fakta bahwa API ini tersedia tanpa hambatan autentikasi namun tetap jarang dimanfaatkan menunjukkan gap pengetahuan yang signifikan di komunitas pengembang. Banyak yang masih menghabiskan waktu dan resource untuk headless browser scraping padahal data yang sama tersedia dalam format JSON terstruktur.




