Jobstreet: Smart job matching Data API
Jobstreet: Smart job matching talks to SEEK over a token-authenticated JSON API. Job search is POST /v1/search/jobs (title, advertiser, salary displayValue, workArrangements). The companion calls load a single posting via POST /v1/jobs/details, the signed-in candidate profile via POST /v1/candidates/profile (emailAddress, firstName, lastName, resumes), the applied-jobs pipeline via POST /v1/candidates/applications, application submission via POST /v1/applications/submit (applicationId) and the public people search via POST /v1/profiles/search (slug, workHistories, digitalIdentity).
Jobstreet: Smart job matching (package com.jobstreet.jobstreet, versionName 15.32.0) is SEEK's Android client for Jobstreet in Indonesia, Malaysia, the Philippines and Singapore. Behind its screens sits a token-authenticated JSON data API. The job-search call returns listings with title, advertiser name, salary displayValue, workTypes and workArrangements; the job-details call hydrates a posting plus company reviewsSummary and applicant insights; the signed-in profile call returns candidate PII (emailAddress, firstName, lastName, phoneNumber), career history, resumes and salaryPreferences2; the applied-jobs call tracks application pipeline events; the apply call posts a jobId with resume and questionnaireAnswers and returns an applicationId; and the public-profile search looks up people by slug, firstName, lastName and workHistories. Signed-in calls send an Auth0 Bearer token from the Jobstreet account sign-in; search also carries searchContext.sessionId and solVisitorId.
Screenshots
API surface
Search jobs (JobSearchV7)
POST
/v1/search/jobsopendataReturns a JobSearchV7 listing page (title, advertiser, location, salary displayValue, workTypes, workArrangements) used by the Jobstreet search-results screen.
Auth: Optional Auth0 Bearer access token from the Jobstreet account sign-in (Authorization: Bearer). Anonymous search still sends searchContext.sessionId and solVisitorId.
- jobSearchV7
- id
- title
- abstract
- advertiser
- location
- displayName
- workTypes
- salary
- hideSalary
- currency
- displayValue
- companyLogoURL
- listedAt
- dateTimeUtc
- workArrangements
- resultCount
- searchToken
- sessionId
- solVisitorId
Illustrative example reconstructed from the app's interface — not a live capture.
POST /v1/search/jobs HTTP/1.1 Authorization: Bearer <access-token> Content-Type: application/json { "operationName": "JobSearchV7", "variables": { "params": { "searchIntent": null, "encodedUrl": "/jobs?keywords=software+engineer&where=Jakarta", "searchContext": { "brand": "jobstreet", "channel": "ANDROID", "userId": null, "solVisitorId": "<visitor-uuid>", "intent": null, "source": "SEARCH" }, "responseConfig": null, "searchToken": null, "sessionId": "<jobseeker-session-id>" }, "locale": "en-ID", "timezone": "Asia/Jakarta", "subTypes": ["FEATURED"] } }{ "data": { "jobSearchV7": { "results": { "jobs": [{ "id": "87001234", "title": "Software Engineer", "abstract": "Build marketplace services in Jakarta.", "advertiser": {"name": "Example Corp"}, "location": {"displayName": {"text": "Jakarta"}}, "cjs": { "workTypes": [{"name": "Full time"}], "salary": {"hideSalary": false, "currency": "IDR", "displayValue": "IDR 15,000,000 - 20,000,000"}, "product": {"branding": {"companyLogoURL": "https://cdn.example.com/logo.png"}, "bullets": ["Hybrid"]} }, "listedAt": {"label": "2d ago", "dateTimeUtc": "2026-09-24T02:15:00Z"}, "workArrangements": [{"id": "hybrid", "label": {"text": "Hybrid"}}] }], "pagination": {"resultCount": 1284} }, "context": {"searchToken": "<search-token>"}, "metadata": {"sol": "<sol-blob>"} } } }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the app's job search results flowfield set mirrors the listing cards shown for a keyword and location search
Fetch job details
POST
/v1/jobs/detailsopendataHydrates a single Jobstreet posting (content, salary, advertiser, classifications) plus company reviewsSummary and applicant-count insights for the job-details screen.
Auth: Optional Auth0 Bearer access token from the Jobstreet account sign-in. Personalised blocks (appliedDateTime, candidateJobMatch, matchedSkills) require a signed-in viewer; visitorId is always sent.
- jobDetails
- jobId
- title
- status
- isExpired
- isLinkOut
- content
- salary
- currencyLabel
- workTypes
- advertiser
- location
- classifications
- companyProfile
- reviewsSummary
- overallRating
- ApplicantCount
- count
- workArrangements
- candidateJobMatch
Illustrative example reconstructed from the app's interface — not a live capture.
POST /v1/jobs/details HTTP/1.1 Authorization: Bearer <access-token> Content-Type: application/json { "operationName": "JobDetails", "variables": { "jobId": "87001234", "tracking": {}, "zone": "asia-4", "locale": "en-ID", "languageCode": "en", "timezone": "Asia/Jakarta", "countryCode": "ID", "visitorId": "<visitor-uuid>", "channel": "JOB_DETAILS", "jobMatchAnalysisIsOn": true, "isContactsMaskingOn": false, "agentOnJdvInlineIsOn": false } }{ "data": { "jobDetails": { "job": { "id": "87001234", "title": "Software Engineer", "status": "Active", "isExpired": false, "isLinkOut": false, "isVerified": true, "content": "<p>Build marketplace services.</p>", "listedAt": {"label": "2d ago", "dateTimeUtc": "2026-09-24T02:15:00Z"}, "salary": {"label": "IDR 15,000,000 - 20,000,000", "currencyLabel": "IDR"}, "workTypes": {"label": "Full time"}, "advertiser": {"id": "adv-9001", "name": "Example Corp", "isVerified": true}, "location": {"label": "Jakarta, Indonesia"}, "classifications": {"label": "Information & Communication Technology"} }, "companyProfile": { "id": "org-441", "name": "Example Corp", "reviewsSummary": {"overallRating": {"value": 3.8, "numberOfReviews": {"value": 214}}} }, "insights": {"__typename": "ApplicantCount", "count": 42, "countLabel": "42 applicants"}, "workArrangements": {"label": "Hybrid", "arrangements": [{"type": "hybrid", "label": "Hybrid"}]} } } }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the app's job details screenfield set mirrors the posting body, company review summary and applicant-count panel
Fetch signed-in candidate profile
POST
/v1/candidates/profileosintLoads the signed-in candidate record used by the Jobstreet profile tab: identity fields, career history, resumes, salaryPreferences2, rightsToWork and publicProfile.slug.
Auth: Auth0 Bearer access token from the Jobstreet account sign-in (Authorization: Bearer). The Profile query is rooted at viewer (Candidate).
- emailAddress
- firstName
- lastName
- phoneNumber
- countryCallingCode
- currentLocation2
- personalStatement
- confirmedRoles
- qualifications
- skills2
- resumes
- fileMetadata
- salaryPreferences2
- rightsToWork
- publicProfile
- slug
- searchImpressionCount
- viewCount
Illustrative example reconstructed from the app's interface — not a live capture.
POST /v1/candidates/profile HTTP/1.1 Authorization: Bearer <access-token> Content-Type: application/json { "operationName": "Profile", "variables": { "locale": "en-ID", "countryCode": "ID", "languageCode": "en", "zone": "asia-4", "platform": "ANDROID", "source": "PROFILE", "timezone": "Asia/Jakarta" } }{ "data": { "viewer": { "emailAddress": "[email protected]", "personalDetails": { "firstName": "Ada", "lastName": "Setiawan", "phoneNumber": "81234567890", "countryCallingCode": {"id": "ID", "countryCallingCode": "+62", "description": "Indonesia"} }, "currentLocation2": {"id": "3000", "description": "Jakarta", "countryCode": "ID", "kind": "City"}, "careerObjectives": {"personalStatement": "Backend engineer seeking hybrid roles."}, "confirmedRoles": [{ "id": "role-1", "title": {"text": "Software Engineer"}, "company": {"text": "Example Corp"}, "from": {"month": 3, "year": 2021}, "to": null }], "skills2": [{"keyword": {"text": "Kotlin", "ontologyId": "sk-kotlin"}}], "resumes": [{ "id": "resume-9", "isDefault": true, "fileMetadata": {"name": "ada-cv.pdf", "size": 184320, "virusScanStatus": "Clean", "uri": "https://cdn.example.com/ada-cv.pdf"} }], "salaryPreferences2": [{"amount": 18000000, "salaryType": "Monthly", "currencyCode": "IDR"}], "publicProfile": {"slug": "ada-setiawan", "url": "https://profiles.example.com/ada-setiawan"}, "profileInsights2": {"searchImpressionCount": 128, "viewCount": 17} } } }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the app's signed-in profile tabfield set mirrors the identity, career history, resume and salary preference sections
List applied jobs
POST
/v1/candidates/applicationsosintPages the candidate's applied-jobs list with pipeline events (status, timestamp) and the related job title, advertiser and salary labels.
Auth: Auth0 Bearer access token from the Jobstreet account sign-in. Rooted at viewer.appliedJobs.
- appliedJobs
- applicationRequestId
- isExternal
- isActive
- isPreferredApplicationEligible
- priorityApplyState
- events
- status
- timestamp
- job
- title
- advertiser
- salary
- currencyLabel
Illustrative example reconstructed from the app's interface — not a live capture.
POST /v1/candidates/applications HTTP/1.1 Authorization: Bearer <access-token> Content-Type: application/json { "operationName": "GetAppliedJobs", "variables": { "first": 20, "timezone": "Asia/Jakarta", "locale": "en-ID", "zone": "asia-4", "sortBy": "RECENT", "jobId": "87001234", "source": "APPLIED_JOBS", "selectedAnswerUris": [], "languageCode": "en" } }{ "data": { "viewer": { "id": "cand-1001", "appliedJobs": { "edges": [{ "node": { "id": "app-7788", "isExternal": false, "isActive": true, "isPreferredApplicationEligible": true, "applicationRequestId": "req-334", "priorityApplyState": {"state": "NotPrioritized"}, "events": [{ "status": "Submitted", "timestamp": {"dateTimeUtc": "2026-09-20T09:01:00Z", "shortAbsoluteLabel": "20 Sep"} }], "job": { "id": "87001234", "title": "Software Engineer", "location": {"label": "Jakarta"}, "advertiser": {"id": "adv-9001", "name": "Example Corp"}, "salary": {"label": "IDR 15,000,000 - 20,000,000", "currencyLabel": "IDR"} } } }] } } } }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the app's applied jobs trackerfield set mirrors the per-application pipeline events and related posting summary
Submit job application
POST
/v1/applications/submitopendataSubmits a Jobstreet application (jobId, personalDetails, resume, optional coverLetter and questionnaireAnswers) and returns applicationId or locale-specific errors.
Auth: Auth0 Bearer access token from the Jobstreet account sign-in. Mutation submitApplication requires a signed-in candidate.
- submitApplication
- jobId
- correlationId
- personalDetails
- profilePrivacyLevel
- mostRecentRole
- questionnaireAnswers
- resume
- coverLetter
- selectionCriteria
- applicationId
- errors
Illustrative example reconstructed from the app's interface — not a live capture.
POST /v1/applications/submit HTTP/1.1 Authorization: Bearer <access-token> Content-Type: application/json { "operationName": "ApplySubmitApplication", "variables": { "input": { "jobId": "87001234", "correlationId": "<uuid>", "personalDetails": {"firstName": "Ada", "lastName": "Setiawan", "phoneNumber": "81234567890"}, "profilePrivacyLevel": "Standard", "mostRecentRole": {"title": "Software Engineer", "company": "Example Corp"}, "questionnaireAnswers": [], "resume": {"id": "resume-9"}, "coverLetter": null, "selectionCriteria": null, "zone": "asia-4", "referenceCheck": null, "priorityApply": null }, "locale": "en-ID" } }{ "data": { "submitApplication": { "__typename": "SubmitApplicationSuccess", "applicationId": "app-7788" } } }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the app's apply flowfield set mirrors the application form: personal details, resume, cover letter and questionnaire answers
Search public profiles
POST
/v1/profiles/searchosintLooks up Jobstreet public people profiles by searchQuery, market, roleTitles and locations, returning slug, name, homeLocation, workHistories and digitalIdentity verification flags.
Auth: Optional Auth0 Bearer access token from the Jobstreet account sign-in. UnrestrictedPublicProfileSearchResult adds verifiedName and isOwnedByLoggedInUser when the viewer is signed in.
- publicProfileSearch
- searchQuery
- market
- roleTitles
- companies
- locations
- exactMatches
- partialMatches
- slug
- firstName
- lastName
- homeLocation
- workHistories
- companyName
- roleTitle
- hasVerifiedCredentials
- digitalIdentity
- verifiedName
- isVerified
- profileAvatarUrls
Illustrative example reconstructed from the app's interface — not a live capture.
POST /v1/profiles/search HTTP/1.1 Authorization: Bearer <access-token> Content-Type: application/json { "operationName": "PublicProfileSearch", "variables": { "input": { "searchQuery": "Ada Setiawan", "market": "asia-4", "roleTitles": ["Software Engineer"], "companies": [], "locations": {"ids": ["3000"]}, "pageNumber": 1, "pageSize": 20, "visitorId": "<visitor-uuid>" }, "locale": "en-ID" } }{ "data": { "publicProfileSearch": { "exactMatches": [{ "node": { "__typename": "UnrestrictedPublicProfileSearchResult", "slug": "ada-setiawan", "firstName": "Ada", "lastName": "Setiawan", "homeLocation": {"label": "Jakarta"}, "workHistories": [{"companyName": "Example Corp", "roleTitle": "Software Engineer"}], "hasVerifiedCredentials": true, "digitalIdentity": {"verifiedName": "Ada Setiawan", "isVerified": true}, "isOwnedByLoggedInUser": false, "profileAvatarUrls": {"image512Url": "https://cdn.example.com/ada-512.png"} } }], "partialMatches": [], "serviceToken": "<sol-token>" } } }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the app's public people searchfield set mirrors the profile result cards and their verification badges
Data categories
- job listings
- job details
- candidate profiles
- applications
- public people search
- company reviews
Where teams use this data
SEA job-market pulse
Nightly JobSearchV7 pulls for Jakarta (or other asia-4 locations) yield title, advertiser, salary displayValue, currency, workTypes and workArrangements so a labour-market dashboard can track hiring volume and advertised pay bands without scraping HTML.
Candidate CRM enrichment
A recruiting CRM can call publicProfileSearch with searchQuery plus roleTitles, then join slug, firstName, lastName, homeLocation, workHistories and hasVerifiedCredentials onto outbound prospect records.
Application-pipeline audit
HR ops bots can page GetAppliedJobs for events.status / timestamp and the related job title and advertiser, then reconcile SubmitApplicationSuccess.applicationId against an ATS so dropped applications surface the same day.
Employer review overlay
JobDetails.companyProfile.reviewsSummary.overallRating and ApplicantCount insights can be joined onto a posting id so career-site widgets show review scores and applicant volume next to the same job the mobile app shows.
Frequently asked questions
Where does the Jobstreet Android app load job listings from?
Search results come from POST /v1/search/jobs. The request carries the search keywords and location plus a search context (brand, channel, sessionId, solVisitorId) and the viewer's locale and timezone. Each hit carries id, title, advertiser.name, salary.displayValue and workArrangements.
What candidate fields does the profile endpoint return?
POST /v1/candidates/profile returns the signed-in viewer's record: emailAddress, personalDetails (firstName, lastName, phoneNumber), currentLocation2, confirmedRoles, qualifications, skills2, resumes.fileMetadata, salaryPreferences2, rightsToWork, publicProfile.slug and profileInsights2 view counts.
How are Jobstreet applications submitted and tracked?
POST /v1/applications/submit sends the application input (jobId, personalDetails, resume, questionnaireAnswers) and returns applicationId on success. POST /v1/candidates/applications then pages the applied-jobs list with events.status, timestamp and the related job title and advertiser.
Can you look up people on Jobstreet without an employee ATS export?
Yes. POST /v1/profiles/search takes a search query plus market, role titles and locations and returns exact and partial matches with slug, firstName, lastName, homeLocation, workHistories and a digitalIdentity verification flag.
Topics
- jobstreet data api
- jobstreet job search
- candidate profile fields
- public profile search
- applied jobs tracking
- jobstreet indonesia
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.