KitaLulus loker, CV and Misi Seru data API
KitaLulus: Find Job & CV Maker is the Android job app from Indonesian developer kitalulus, built for Indonesia's mass-market loker (vacancy) hunt and branded around Pejuang Kerja. A Google Play Best App winner with a 4.8 rating from about 175 thousand reviews and 10 million-plus installs, it lists openings from more than 100,000 registered companies across every Indonesian province — Aceh through Papua — and city filters such as Jakarta Selatan or Bandung, aimed at SMA/SMK, D3, S1, fresh-graduate and experienced seekers rather than LinkedIn-style senior networking. The Karier tab searches and filters lowongan by keyword, province, city, salary (gaji), education, experience, age, working days and hours and job type (intern, part-time, full-time, freelance); each posting claims a fraud-screened vacancy and can connect the applicant to HRD over WhatsApp, email or in-app chat after a screening questionnaire. Candidates sign in with Google, Apple or email, verify a WhatsApp number, and keep a shareable profile (gender, date of birth, domicile, education, experience, skills, expected monthly salary in IDR and a profile-strength meter). A free online CV maker stores ATS-friendly templates, an AI Review CV flow scores contact, summary, experience, education, skill and portfolio sections and spends KitaCoins for a full unlock, and KitaLulus Plus (Google Play / RevenueCat) removes watermarks, unlocks premium templates and the Kecocokan Profil match readout on a vacancy. Misi Seru is the side-gig board — take a time-boxed mission, submit proof, wait for verification and receive commission into a bank rekening in 7–14 working days — while Komunitas hosts career groups, polls and member activity. It competes in Indonesia with Jobstreet, Glints, Pintarnya, Kalibrr, Dealls, Indeed and LinkedIn.
Lowongan cards on the Karier tab are structured vacancy records: title, companyName, an IDR minSalary/maxSalary band, province and city, education, jobType and an isTrusted flag, with Detail Pekerjaan adding workingDay, workingHour, maxAge, skills and a Plus profileMatchScore. The signed-in profile carries fullName, a verified phone, expectedSalary and profileStrength; Review CV returns an AI score plus strengths/weaknesses per section; Riwayat Lamaran pages status and contactType; Misi Seru submissions expose commissionAmount and payoutStatus toward a bank rekening; KitaCoins and Plus add balance and expirationDate.
Labour-market dashboards slice advertised IDR bands by province, recruiting CRMs join CV scores onto SMA/SMK profiles, HR ops reconcile WhatsApp lamarans with interview scheduleAt, and finance matches mission commissions and Play receipts. openData Studio turns that hiring and gig-mission surface into callable open data.
Screenshots
API surface
Request/response examples are illustrative, reconstructed from the app's interface — not a live capture.
Search loker vacancies
GET
/v1/lowongan/searchopendataPages the Karier / Cari Lowongan feed: title, companyName, IDR minSalary/maxSalary, province, city, education, jobType and isTrusted, filtered by the home search and location pickers.
Auth: Optional Firebase ID token as Authorization: Bearer after Google / Apple / email sign-in. Anonymous browse of the Karier tab still works; signed-in search personalises Lowongan Pilihan and last-seen jobs.
- total
- page
- pageSize
- isLastPage
- jobs
- vacancyId
- slug
- title
- companyName
- companyId
- logoUrl
- minSalary
- maxSalary
- currency
- salaryPeriod
- province
- city
- education
- minExperienceYears
- jobType
- isTrusted
- publishedAt
GET /v1/lowongan/search?q=admin&province=DKI+Jakarta&city=Jakarta+Selatan&minSalary=4500000&education=SMA&jobType=FULL_TIME&page=1&pageSize=20 HTTP/1.1 Authorization: Bearer <firebase-id-token> Accept: application/json X-App-Version: 3.3.16{ "total": 1284, "page": 1, "pageSize": 20, "isLastPage": false, "jobs": [{ "vacancyId": "lk-87001234", "slug": "admin-kantor-jakarta-selatan", "title": "Admin Kantor", "companyName": "Example Retail Indo", "companyId": "co-4412", "logoUrl": "https://cdn.example.com/company/4412.png", "minSalary": 4500000, "maxSalary": 6500000, "currency": "IDR", "salaryPeriod": "MONTHLY", "province": "DKI Jakarta", "city": "Jakarta Selatan", "education": "SMA/SMK", "minExperienceYears": 0, "jobType": "FULL_TIME", "isTrusted": true, "publishedAt": "2026-09-24T02:15:00Z" }] }Fetch vacancy detail
GET
/v1/lowongan/{vacancyId}opendataHydrates Detail Pekerjaan before Lamar: description, IDR salary band, education, minExperienceYears, maxAge, workingDay/workingHour, skills, aboutCompany, similar vacancies and the Plus Kecocokan Profil profileMatchScore.
Auth: Optional Bearer Firebase ID token. Public postings load without a session; profileMatchScore (Kecocokan Profil) and already-applied state need a signed-in Plus or free-trial entitlement.
- vacancyId
- title
- description
- companyId
- companyName
- logoUrl
- aboutCompany
- minSalary
- maxSalary
- currency
- province
- city
- education
- minExperienceYears
- maxAge
- gender
- jobType
- workingDay
- workingHour
- skills
- isTrusted
- applicationStatus
- profileMatchScore
- similar
GET /v1/lowongan/lk-87001234 HTTP/1.1 Authorization: Bearer <firebase-id-token> Accept: application/json{ "vacancyId": "lk-87001234", "title": "Admin Kantor", "description": "Mengelola dokumen dan administrasi kantor di Jakarta Selatan.", "companyId": "co-4412", "companyName": "Example Retail Indo", "logoUrl": "https://cdn.example.com/company/4412.png", "aboutCompany": "Ritel omnichannel dengan 40 gerai.", "minSalary": 4500000, "maxSalary": 6500000, "currency": "IDR", "province": "DKI Jakarta", "city": "Jakarta Selatan", "education": "SMA/SMK", "minExperienceYears": 0, "maxAge": 30, "gender": "any", "jobType": "FULL_TIME", "workingDay": "Senin–Jumat", "workingHour": "09:00–18:00", "skills": ["Microsoft Office", "Komunikasi"], "isTrusted": true, "applicationStatus": null, "profileMatchScore": 78, "similar": [{ "vacancyId": "lk-87009901", "title": "Staff Administrasi" }] }Submit job application
POST
/v1/lamaranopendataWrites Lamar Pekerjaan: attaches the candidate's coverMessage and screeningAnswers, then returns contactType (whatsapp/email/in-app), hrdWhatsapp and screeningPassed used to open the HRD chat.
Auth: Bearer Firebase ID token required. WhatsApp number must be verified (label_badge_verify_phone_number) before Lamar Pekerjaan; screening answers ride in the same write.
- applicationId
- vacancyId
- title
- companyName
- contactType
- coverMessage
- useLatestCv
- screeningAnswers
- status
- hrdWhatsapp
- appliedAt
- screeningPassed
POST /v1/lamaran HTTP/1.1 Authorization: Bearer <firebase-id-token> Content-Type: application/json { "vacancyId": "lk-87001234", "contactType": "whatsapp", "coverMessage": "Halo, Tim Rekrutmen! Perkenalkan, saya Budi Santoso...", "useLatestCv": true, "screeningAnswers": [{ "questionId": "q-1", "answer": "Ya, saya dapat mulai minggu depan." }] }{ "applicationId": "app-7781", "vacancyId": "lk-87001234", "title": "Admin Kantor", "companyName": "Example Retail Indo", "contactType": "whatsapp", "status": "sent", "hrdWhatsapp": "62812XXXX443", "appliedAt": "2026-09-25T09:40:00Z", "screeningPassed": true }List application history
GET
/v1/lamaranopendataPages Riwayat Lamaran by HRD pipeline status (seen / processed / interviewed / accepted / rejected) and contactType, including recruiterNotes the candidate can open from Catatan Rekruter.
Auth: Bearer Firebase ID token required. Recruiter notes and archive actions use the same signed-in session.
- total
- page
- items
- applicationId
- vacancyId
- title
- companyName
- city
- contactType
- status
- appliedAt
- lastUpdatedAt
- recruiterNotes
- archived
GET /v1/lamaran?status=seen&contactType=whatsapp&page=1 HTTP/1.1 Authorization: Bearer <firebase-id-token> Accept: application/json{ "total": 18, "page": 1, "items": [{ "applicationId": "app-7781", "vacancyId": "lk-87001234", "title": "Admin Kantor", "companyName": "Example Retail Indo", "city": "Jakarta Selatan", "contactType": "whatsapp", "status": "seen", "appliedAt": "2026-09-25T09:40:00Z", "lastUpdatedAt": "2026-09-26T03:12:00Z", "recruiterNotes": [{ "author": "recruiter", "body": "Berkas sudah kami terima.", "createdAt": "2026-09-26T03:12:00Z" }], "archived": false }] }Fetch candidate profile
GET
/v1/profile/meosintReads Lengkapi Profilmu: identity, WhatsApp, domicile, education, experiences, skills, expectedSalary (IDR / month) and profileStrength used before apply and on the shareable profileUrl.
Auth: Bearer Firebase ID token required. The public share link uses a separate /profile/{userId} read; phone, email and expectedSalary stay on the signed-in card.
- userId
- fullName
- phone
- whatsappVerified
- gender
- birthday
- domicileProvince
- domicileCity
- educationLevel
- educationInstitution
- educationProgram
- expectedSalary
- currency
- skills
- experiences
- profileUrl
- profileStrength
- photoUrl
- cvId
GET /v1/profile/me HTTP/1.1 Authorization: Bearer <firebase-id-token> Accept: application/json{ "userId": "u-90210", "fullName": "Budi Santoso", "email": "[email protected]", "phone": "628111466278", "whatsappVerified": true, "gender": "male", "birthday": "1999-01-12", "domicileProvince": "DKI Jakarta", "domicileCity": "Jakarta Selatan", "educationLevel": "SMA/SMK", "educationInstitution": "SMK Negeri 1", "educationProgram": "Administrasi Perkantoran", "expectedSalary": 5000000, "currency": "IDR", "skills": ["Microsoft Office", "Komunikasi"], "experiences": [{ "companyName": "Toko Example", "role": "Admin", "startYear": 2022, "endYear": 2025 }], "profileUrl": "https://kitalulus.com/profile/budi-santoso", "profileStrength": 72, "photoUrl": "https://cdn.example.com/users/u-90210.jpg", "cvId": "cv-441" }Run AI CV review
POST
/v1/cv/reviewsopendataRuns Review CV: AI-scores the uploaded or built CV (score, strengths, weaknesses) across profile/profileSummary/experience/educations/skill/links, then returns generatedFileUrl after a KitaCoins unlock.
Auth: Bearer Firebase ID token required. A full unlock deducts KitaCoins (cta_cv_review_unpaid_open_with_coin); daily free quota resets at 00:01 WIB. Plus unlocks premium ATS templates without watermark.
- reviewId
- cvId
- status
- score
- strengths
- weaknesses
- sections
- profile
- profileSummary
- experience
- educations
- skill
- links
- generatedFileUrl
- createdAt
- coinsSpent
- dailyLimitReached
- templateId
- jobPosition
POST /v1/cv/reviews HTTP/1.1 Authorization: Bearer <firebase-id-token> Content-Type: application/json { "cvId": "cv-441", "jobPosition": "Admin Kantor", "templateId": "ats-clean-01", "unlockFull": true, "spendCoins": 5 }{ "reviewId": "rev-3301", "cvId": "cv-441", "status": "done", "score": 78, "strengths": ["Pengalaman administrasi 3 tahun", "Skill Microsoft Office"], "weaknesses": ["Ringkasan diri terlalu umum"], "sections": { "profile": {"status": "good"}, "profileSummary": {"status": "need_improvement"}, "experience": {"status": "need_improvement"}, "educations": {"status": "good"}, "skill": {"status": "need_improvement"}, "links": {"status": "need_improvement"} }, "generatedFileUrl": "https://cdn.example.com/cv/rev-3301.pdf", "createdAt": "2026-09-26T08:01:00Z", "coinsSpent": 5, "dailyLimitReached": false }List Misi Seru missions
GET
/v1/misi-seruopendataPages Misi Seru KitaLulus (Misi Tersedia): title, category, IDR commissionMax, periodStart/periodEnd, participantCount, remainingSlots and quotaState used by the mission home and filters.
Auth: Optional Bearer Firebase ID token. Signed-in users also receive the Misi Diambil tab; anonymous users still see Misi Tersedia.
- total
- page
- missions
- missionId
- title
- category
- commissionMax
- currency
- periodStart
- periodEnd
- durationLabel
- participantCount
- remainingSlots
- quotaState
- isFree
GET /v1/misi-seru?tab=available&category=survey&sort=commission_desc&page=1 HTTP/1.1 Authorization: Bearer <firebase-id-token> Accept: application/json{ "total": 42, "page": 1, "missions": [{ "missionId": "ms-2201", "title": "Survey gerai ritel Jakarta Selatan", "category": "survey", "commissionMax": 75000, "currency": "IDR", "periodStart": "2026-09-20", "periodEnd": "2026-10-05", "durationLabel": "2 hari", "participantCount": 128, "remainingSlots": 22, "quotaState": "available", "isFree": true }] }Submit Misi Seru proof
POST
/v1/misi-seru/{missionId}/submissionsopenfinanceWrites a Misi Seru submission (proofUrls, bank rekening) and returns status (on_verification / revision / success / rejected / timeout / expired) plus commissionAmount and payoutStatus for the 7–14 day bank transfer.
Auth: Bearer Firebase ID token required. Commission payouts go to the candidate's saved bank rekening after KitaLulus verification (7–14 working days).
- submissionId
- missionId
- status
- commissionAmount
- currency
- payoutStatus
- payoutEtaDays
- bankCode
- accountNumber
- accountName
- accountNumberMasked
- proofUrls
- submittedAt
- statusUpdatedAt
POST /v1/misi-seru/ms-2201/submissions HTTP/1.1 Authorization: Bearer <firebase-id-token> Content-Type: application/json { "proofUrls": ["https://cdn.example.com/misi/ms-2201/u-90210-1.jpg"], "notes": "Foto etalase dan struk kunjungan.", "bankCode": "BCA", "accountNumber": "1234567890", "accountName": "Budi Santoso" }{ "submissionId": "sub-9910", "missionId": "ms-2201", "status": "on_verification", "commissionAmount": 75000, "currency": "IDR", "payoutStatus": "pending", "payoutEtaDays": [7, 14], "bankCode": "BCA", "accountNumberMasked": "******7890", "submittedAt": "2026-09-27T11:04:00Z", "statusUpdatedAt": "2026-09-27T11:04:00Z" }Read KitaCoins wallet
GET
/v1/wallet/kitacoinsopenfinanceReads the KitaCoins balance used to unlock a full CV review (grantOnFirstReview, fullReviewCost, spend_cv_review ledger) after a Play / RevenueCat pack purchase.
Auth: Bearer Firebase ID token required. Play Billing / RevenueCat purchase tokens credit the same wallet; coins have no expiry (subtitle_kita_coins_note).
- userId
- balance
- currency
- expires
- grantOnFirstReview
- fullReviewCost
- transactions
- txId
- type
- amount
- reviewId
- createdAt
GET /v1/wallet/kitacoins HTTP/1.1 Authorization: Bearer <firebase-id-token> Accept: application/json{ "userId": "u-90210", "balance": 12, "currency": "KitaCoins", "expires": false, "grantOnFirstReview": 5, "fullReviewCost": 5, "transactions": [{ "txId": "kc-4401", "type": "purchase", "amount": 10, "createdAt": "2026-09-22T06:18:00Z" }, { "txId": "kc-4410", "type": "spend_cv_review", "amount": -5, "reviewId": "rev-3301", "createdAt": "2026-09-26T08:01:00Z" }] }Read Plus subscription
GET
/v1/plus/subscriptionopenfinanceReads KitaLulus Plus entitlements on Detail Status: packageName, status (active/expired), purchaseDate/expirationDate, and flags for premium templates, watermarkOff and unlimited Kecocokan Profil.
Auth: Bearer Firebase ID token required. Entitlements are verified server-side against the Play purchase token / RevenueCat customer info.
- userId
- packageName
- status
- purchaseDate
- expirationDate
- premiumTemplates
- watermarkOff
- unlimitedProfileMatch
- unlimitedJobDescriptionPick
- store
GET /v1/plus/subscription HTTP/1.1 Authorization: Bearer <firebase-id-token> Accept: application/json{ "userId": "u-90210", "packageName": "KitaLulus Plus 1 Bulan", "status": "active", "purchaseDate": "2026-09-01T04:00:00Z", "expirationDate": "2026-10-01T04:00:00Z", "premiumTemplates": true, "watermarkOff": true, "unlimitedProfileMatch": true, "unlimitedJobDescriptionPick": true, "store": "play" }Fetch community feed
GET
/v1/community/feedosintLoads Komunitas: the member's username, joined/private community cards and a post feed with voteCount used by Komunitas Populer and Untuk Kamu Pantau.
Auth: Bearer Firebase ID token required to join, post or vote. Public community cards on Komunitas Populer can load with a guest session.
- username
- communities
- communityId
- name
- isPrivate
- memberCount
- joined
- posts
- postId
- authorUsername
- body
- voteCount
- createdAt
GET /v1/community/feed?tab=my&page=1 HTTP/1.1 Authorization: Bearer <firebase-id-token> Accept: application/json{ "username": "budi.kerja", "communities": [{ "communityId": "cm-88", "name": "Admin Kantor Jakarta", "isPrivate": false, "memberCount": 12040, "joined": true }], "posts": [{ "postId": "p-501", "communityId": "cm-88", "authorUsername": "sari.hr", "body": "Lowongan admin baru di Senopati, buruan cek Karier.", "voteCount": 34, "createdAt": "2026-09-25T14:22:00Z" }] }List interview invitations
GET
/v1/interviewsopendataLists Jadwal Wawancara invitations: type (offline/online), scheduleAt, location or meetingUrl, recruiterMessage and the candidate's accept/decline response.
Auth: Bearer Firebase ID token required. Accept / decline writes reuse the same session and can open a WhatsApp thread with the recruiter.
- items
- interviewId
- applicationId
- vacancyId
- title
- companyName
- type
- scheduleAt
- location
- meetingUrl
- recruiterMessage
- response
GET /v1/interviews?status=pending HTTP/1.1 Authorization: Bearer <firebase-id-token> Accept: application/json{ "items": [{ "interviewId": "iv-1102", "applicationId": "app-7781", "vacancyId": "lk-87001234", "title": "Admin Kantor", "companyName": "Example Retail Indo", "type": "offline", "scheduleAt": "2026-09-30T03:00:00Z", "location": "Jl. Senopati No. 12, Jakarta Selatan", "meetingUrl": null, "recruiterMessage": "Silakan datang 15 menit lebih awal.", "response": "pending" }] }
Data categories
- job listings
- job details
- candidate profiles
- job applications
- CV reviews
- gig missions
- KitaCoins wallet
- Plus subscriptions
- community posts
- interview invitations
Where teams use this data
Indonesia provincial wage pulse
Nightly pulls of the Karier search for a province/city filter yield title, companyName, minSalary, maxSalary, education, jobType and isTrusted so a labour-market dashboard can track advertised IDR bands from Aceh to Papua without scraping HTML.
Candidate CV-quality enrichment
A recruiting CRM can join the profile resource (fullName, expectedSalary, educationLevel, skills, profileStrength) onto a CV-review record (score, strengths, weaknesses, section statuses) to pre-score SMA/SMK and diploma applicants before a human screen.
Lamaran and interview ops audit
HR ops bots page applications by status and contactType for appliedAt, recruiterNotes and archive state, then match interview invitations (type, scheduleAt, location, response) so dropped WhatsApp lamarans and unanswered offline interviews surface the same day.
Misi Seru and Plus ledger reconciliation
Finance bots read mission submissions for commissionAmount, payoutStatus and masked bank rekening, then match KitaCoins spend_cv_review rows and Plus purchaseDate/expirationDate against Play Billing / RevenueCat receipts.
Frequently asked questions
What data does the KitaLulus surface cover?
Indonesian loker search and vacancy detail (title, company, IDR salary band, education, job type), the signed-in candidate profile, AI CV review scores, the lamaran pipeline and interview invitations, Misi Seru commissions paid to a bank rekening, KitaCoins and Plus entitlements, and community posts.
How does KitaLulus authenticate these calls?
Candidates sign in with Google, Apple or email; the app then attaches a Firebase ID token as Authorization: Bearer. Public Karier browse still works without a session. Lamar Pekerjaan requires a verified WhatsApp number, and Plus / KitaCoins entitlements are checked against Play Billing and RevenueCat.
Does Misi Seru pay into an e-wallet?
No. Successful missions pay commissionAmount in IDR to the candidate's saved bank rekening (accountName / bankCode) after KitaLulus verification, with a stated 7–14 working-day payout window. KitaCoins is a separate in-app balance used to unlock a full CV review, not a cash-out wallet.
Is this a public developer API?
No. These are first-party endpoints reconstructed from the app's Karier, Review CV, Riwayat Lamaran, Misi Seru, Plus and Komunitas screens — the same calls the Android client makes after sign-in, not a documented third-party API.
Apps similar to KitaLulus: Find Job & CV Maker
- Jobstreet: Smart job matching — Jobstreet by SEEK is the long-running general job board in Indonesia, with search, apply and public-profile flows across Malaysia, Singapore, the Philippines and Indonesia.
- Glints: Jobs Search & Career — Glints TapJobs is a Singapore-founded career app for Indonesia's loker market with Easy Apply, recruiter chat and a VIP subscription.
- Pintarnya Job Search from Home — Pintarnya is an Indonesian job-seeker app for blue-collar and informal loker, with one-tap Lamar and a Cari Cuan wallet that cashes out to GoPay, OVO or DANA.
- Kalibrr — Kalibrr is a Filipino-founded job platform used in Indonesia and the Philippines, matching candidates to openings with an employer-facing ATS.
- Dealls — Dealls is an Indonesian job platform with free employer postings and a bundled ATS, used for startup and digital roles rather than mass SMA/SMK hiring.
- Indeed Job Search — Indeed aggregates openings from many sources and is used in Indonesia for high-volume operational and entry-level hiring alongside local boards.
Topics
- KitaLulus API
- KitaLulus loker
- KitaLulus CV review
- Misi Seru
- KitaCoins
- KitaLulus Plus
- Indonesia job search API
- Pejuang Kerja
- lowongan kerja Indonesia
- Kecocokan Profil
Need this app's data API integrated?
We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.
- NDA + SOW on every engagement
- Delivery in 3–7 days
- Payment only after acceptance
- Work scoped to authorized use