Pintarnya Job Search from Home Data API
Pintarnya Job Search from Home (com.pintarnyakerja) organizes its Indonesian loker search, candidate identity and Cari Cuan wallet around a small data API gated by a Bearer token from WhatsApp OTP sign-in. Job search is GET /v1/jobs/search (job_title, min_salary, max_salary, city_name, is_verified); a single posting loads from GET /v1/jobs/{job_id}. The same signed-in surface serves GET /v1/profile/identity for eKTP KYC (nik, ktp_photo, selfie_ktp_photo), GET /v1/profile for the candidate card, GET /v1/applications for lamaran status, and GET /v1/wallet/balance for the Cari Cuan payout balance.
Pintarnya Job Search from Home (package com.pintarnyakerja) is PT Pintarnya Solusi Teknologi's Android app for Indonesian blue-collar and informal-work listings (loker), one-tap apply, Auto Lamar, an ATS-style CV, and the Cari Cuan side-gig wallet. Behind a Bearer-token session from WhatsApp OTP sign-in, the app reads a job and candidate data API: a paginated job-search feed (job_title, company_name, min_salary, max_salary, type_of_employment, education_level, city_name), a job-detail lookup, the candidate's eKTP identity (nik, ktp_photo, selfie_ktp_photo, kyc_status), a profile card (full_name, whatsapp_number, date_of_birth, cv_url), application status tracking, and the Cari Cuan wallet balance for cashout to GoPay / OVO / DANA or BCA / BRI / BNI.
Screenshots
API surface
Search job listings
GET
/v1/jobs/searchopendataReturns a paginated Cari Loker listing page (job_title, company_name, min_salary/max_salary, type_of_employment, education_level, city_name, is_verified) used by the home job-search screen.
Auth: Bearer token from the WhatsApp OTP sign-in flow, plus X-Platform / X-Device-ID / X-App-ID / X-Session-ID device headers. Anonymous browse still works with device headers only.
- jobs
- job_id
- job_slug
- job_title
- description
- company_id
- company_name
- logo_url
- min_salary
- max_salary
- city_id
- city_name
- province_id
- province_name
- type_of_employment
- type_of_work
- education_level
- job_role
- job_role_id
- job_category_id
- is_verified
- published_at
- latitude
- longitude
- distance
- filter_profile
- page
- page_size
- total
- total_page
Illustrative example reconstructed from the app's interface — not a live capture.
GET /v1/jobs/search?search=cook&sort=-recommend&type_of_employment=2&type_of_work=2&education_level=5&city_id=3171&filter_profile=true&page=1&page_size=20&latitude=-6.2088&longitude=106.8456 HTTP/1.1 Authorization: Bearer <token> X-Platform: android X-Device-ID: <device_id> X-App-ID: com.pintarnyakerja X-Session-ID: <session_id> Accept: application/json{ "success": true, "data": { "jobs": [ { "job_id": "87001234", "job_slug": "cook-jakarta-selatan", "job_title": "Cook", "description": "Masak menu harian di kitchen restoran.", "company_id": "c-4412", "company_name": "Example Kuliner", "logo_url": "https://cdn.example.com/images/company/4412.png", "min_salary": 4500000, "max_salary": 6500000, "city_id": 3171, "city_name": "Jakarta Selatan", "province_id": 31, "province_name": "DKI Jakarta", "type_of_employment": 2, "type_of_work": 2, "education_level": 5, "job_role": "Cook", "job_role_id": 882, "job_category_id": 14, "is_verified": true, "published_at": "2026-09-24T02:15:00Z", "latitude": -6.2615, "longitude": 106.8106, "distance": 3.2 } ], "meta": { "page": 1, "page_size": 20, "total": 1284, "total_page": 65 } } }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the app's job-search and listing flowmatches the listing-card fields rendered on the home screen
Fetch job details
GET
/v1/jobs/{job_id}opendataHydrates a single lowongan card (salary band, education_level, type_of_shift, job_role_group_name, company logo_url) for the job-detail screen before Lamar / Auto Lamar.
Auth: Bearer token from OTP sign-in. Public postings load with device headers; personalised blocks (already-applied, one-tap-apply eligibility) need a signed-in token.
- job_id
- job_slug
- job_title
- description
- company_id
- company_name
- logo_url
- min_salary
- max_salary
- city_name
- province_name
- type_of_employment
- type_of_work
- type_of_shift
- education_level
- min_education_level
- job_role
- job_role_id
- job_role_group_id
- job_role_group_name
- job_category_id
- is_verified
- published_at
- latitude
- longitude
- job_application_status
Illustrative example reconstructed from the app's interface — not a live capture.
GET /v1/jobs/87001234 HTTP/1.1 Authorization: Bearer <token> X-Platform: android X-Device-ID: <device_id> Accept: application/json{ "success": true, "data": { "job_id": "87001234", "job_slug": "cook-jakarta-selatan", "job_title": "Cook", "description": "Masak menu harian di kitchen restoran.", "company_id": "c-4412", "company_name": "Example Kuliner", "logo_url": "https://cdn.example.com/images/company/4412.png", "min_salary": 4500000, "max_salary": 6500000, "city_name": "Jakarta Selatan", "province_name": "DKI Jakarta", "type_of_employment": 2, "type_of_work": 2, "type_of_shift": 1, "education_level": 5, "min_education_level": 4, "job_role": "Cook", "job_role_id": 882, "job_role_group_id": 22, "job_role_group_name": "F&B", "job_category_id": 14, "is_verified": true, "published_at": "2026-09-24T02:15:00Z", "latitude": -6.2615, "longitude": 106.8106, "job_application_status": null, "similar": [ { "job_id": "87009901", "job_title": "Kitchen Staff" } ] } }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the app's job-detail screenmatches the posting fields shown ahead of the apply action
Candidate eKTP identities
GET
/v1/profile/identityosintReturns the signed-in jobseeker's eKTP KYC bundle (nik, full_name, date_of_birth, ktp_photo, selfie_ktp_photo, kyc_status) used by identity screens and Cari Cuan verification.
Auth: Bearer token required. The Cari Cuan side-gig wallet's identity check reuses the same signed-in session.
- user_id
- full_name
- nik
- date_of_birth
- gender
- kyc_status
- identity
- ktp_photo
- selfie_ktp_photo
- photoSelfie
- eKTP
Illustrative example reconstructed from the app's interface — not a live capture.
GET /v1/profile/identity HTTP/1.1 Authorization: Bearer <token> X-Platform: android X-Device-ID: <device_id> Accept: application/json{ "success": true, "data": { "user_id": "u-90210", "full_name": "Budi Santoso", "nik": "3174051201990003", "date_of_birth": "1999-01-12", "gender": "male", "kyc_status": "verified", "identity": "eKTP", "ktp_photo": "https://cdn.example.com/kyc/u-90210/ktp.jpg", "selfie_ktp_photo": "https://cdn.example.com/kyc/u-90210/selfie.jpg", "photoSelfie": "https://cdn.example.com/kyc/u-90210/selfie.jpg" } }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the app's identity-verification flowmatches the eKTP fields shown across the profile and wallet screens
Candidate basic information
GET
/v1/profileosintReads the candidate profile card behind Lengkapi Data Diri: full_name, WhatsApp number, date_of_birth, education_attainment, cv_url and job_preference used before apply and Auto Lamar.
Auth: Bearer token from OTP sign-in. Updating the same card uses a write call against the same resource.
- user_id
- full_name
- whatsapp_number
- phoneNumber
- date_of_birth
- gender
- address
- city_id
- city_name
- province_id
- province_name
- education_level
- education_attainment
- profile_picture
- cv_id
- cv_url
- job_preference
Illustrative example reconstructed from the app's interface — not a live capture.
GET /v1/profile HTTP/1.1 Authorization: Bearer <token> X-Platform: android Accept: application/json{ "success": true, "data": { "user_id": "u-90210", "full_name": "Budi Santoso", "email": "[email protected]", "whatsapp_number": "6281210225029", "phoneNumber": "6281210225029", "date_of_birth": "1999-01-12", "gender": "male", "address": "Jl. Example No. 12", "city_id": 3171, "city_name": "Jakarta Selatan", "province_id": 31, "province_name": "DKI Jakarta", "education_level": 5, "education_attainment": "SMA", "profile_picture": "https://cdn.example.com/users/u-90210.jpg", "cv_id": "cv-441", "cv_url": "https://cdn.example.com/cv/u-90210.pdf", "job_preference": { "job_role_id": 882, "city_id": 3171, "min_salary": 4500000 } } }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the app's profile-completion screenmatches the candidate fields collected before applying
List job applications
GET
/v1/applicationsopendataPages the Lamaran tab by status (sent / seen / interview / rejected), including is_auto_apply and interview_schedule so the candidate can track HRD progress.
Auth: Bearer token required. Submitting an application writes to the same applications resource; Auto Lamar reads its own preferences.
- items
- job_id
- job_title
- company_name
- city_name
- job_application
- job_application_status
- is_auto_apply
- applied_at
- interview_schedule
- interview_type
- interview_pic
- status
- page
- total
Illustrative example reconstructed from the app's interface — not a live capture.
GET /v1/applications?status=sent&page=1 HTTP/1.1 Authorization: Bearer <token> X-Platform: android Accept: application/json{ "success": true, "data": { "items": [ { "job_id": "87001234", "job_title": "Cook", "company_name": "Example Kuliner", "city_name": "Jakarta Selatan", "job_application": "app-7781", "job_application_status": "seen", "is_auto_apply": false, "applied_at": "2026-09-25T09:40:00Z", "interview_schedule": null, "interview_type": null, "interview_pic": null } ], "meta": { "page": 1, "page_size": 20, "total": 18 } } }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the application's status-tracking tabmatches the application cards and interview fields shown to the candidate
Cari Cuan e-wallet balance
GET
/v1/wallet/balanceopenfinanceReads the Cari Cuan e-wallet (ewallet_balance, min_cashout, cashout_status) that pays mission rewards out to GoPay / OVO / DANA or BCA / BRI / BNI.
Auth: Bearer token required. Cashout runs an inquiry then a payout call after the wallet's identity check.
- ewallet_balance
- balance
- min_cashout
- min_instant_cashout
- max_instant_cashout
- cashout_status
- transaction_id
- nominal
- amount
- bank_code
- bank_name
- account_name
- account_number
- transaction_created_at
- gopay
- ovo
- dana
Illustrative example reconstructed from the app's interface — not a live capture.
GET /v1/wallet/balance HTTP/1.1 Authorization: Bearer <token> X-Platform: android Accept: application/json{ "success": true, "data": { "ewallet_balance": 185000, "balance": 185000, "min_cashout": 20000, "min_instant_cashout": 50000, "max_instant_cashout": 2000000, "cashout_status": "idle", "transactions": [ { "transaction_id": "tx-3301", "nominal": 50000, "amount": 50000, "bank_code": "GOPAY", "bank_name": "GoPay", "account_name": "Budi Santoso", "account_number": "081210225029", "cashout_status": "success", "transaction_created_at": "2026-09-20T11:02:00Z" } ] } }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the app's side-gig wallet screenmatches the balance and payout fields shown before cashout
Data categories
- job listings
- job details
- candidate profiles
- eKTP identities
- job applications
- e-wallet balances
Where teams use this data
Indonesia blue-collar wage pulse
Nightly pulls of the job-search feed for a Jakarta city filter, sliced by employment type and education level, yield job_title, company_name, min_salary, max_salary and is_verified so a labour-market dashboard can track advertised IDR bands without scraping HTML.
Candidate KYC / identity enrichment
A recruiting CRM can join the identity resource (nik, full_name, date_of_birth, kyc_status, ktp_photo) onto the candidate profile resource (whatsapp_number, cv_url, education_attainment) to pre-fill eKTP-backed candidate records.
Application-pipeline audit
HR ops bots page the applications resource by status for job_application_status, applied_at, is_auto_apply and interview_schedule, then reconcile against an ATS so dropped lamaran and scheduled interviews surface the same day.
Cari Cuan payout reconciliation
Finance bots read the wallet resource for ewallet_balance and cashout_status, then match transaction_id / nominal / bank_code / account_number from the cashout flow against GoPay, OVO, DANA or bank ledgers.
Frequently asked questions
Where does the Pintarnya app load job listings from?
Search results come from a paginated job-search endpoint (GET /v1/jobs/search). Query params include search, sort, employment and work type, education level, city, page and page size, plus latitude and longitude. Each hit carries job_id, job_title, company_name, min_salary, max_salary, city_name and is_verified.
What identity fields does Pintarnya store for a jobseeker?
The identity endpoint returns nik, full_name, date_of_birth, gender, kyc_status, ktp_photo and selfie_ktp_photo (eKTP). The profile endpoint adds whatsapp_number, email, address, education_attainment, profile_picture and cv_url, and the Cari Cuan wallet reuses the same verified session.
How are Pintarnya applications tracked?
The applications endpoint pages the Lamaran tab by status with job_application_status, applied_at, is_auto_apply, interview_schedule and interview_pic, so a candidate can follow HRD progress from sent to seen, interview or rejected. One-tap apply writes to the same resource.
Does Pintarnya expose a wallet or payout API?
Yes. The Cari Cuan wallet endpoint returns ewallet_balance, min_cashout and cashout_status for mission rewards. Cashout runs an inquiry then a payout call with bank_code, account_name and account_number, paying out to GoPay, OVO or DANA, or to BCA, BRI and BNI bank accounts.
Topics
- Pintarnya API
- Pintarnya job listings
- loker Indonesia API
- eKTP nik kyc
- Cari Cuan e-wallet
- job application status
- Pintarnya candidate profile
- openData Studio
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.