Monster jobs & profile data API
Monster Job Search is the official Android app from Monster Worldwide, the company behind the Monster.com job board that has listed vacancies since the mid-1990s. Jobseekers type a keyword and location, scroll vacancy cards, open a job-detail screen with apply options, related roles and knockout questionnaires, save jobs, set alerts, and apply with an uploaded resume. The profile tab stores a headline, contact details, work history, education, skills, work-authorization countries, remote-work preference and how visible the profile is to employers, while a conversations tab holds recruiter messages. Sign-in runs through Monster OneIAM; browsing also works as a guest. Aimed at US jobseekers — with candidate-help destinations for France, Germany and Spain in the same app — it sits alongside Indeed, LinkedIn, ZipRecruiter and CareerBuilder.
Vacancy records attach jobTitle and companyName to each search hit, with jobLocation, isRemote, jobTypeId and salary_base on the same card and datePosted for recency. Signed-in profile reads add headline, firstName, visibilityStatus and workAuthorization; parsed resumes contribute schoolName and degreeName; apply flows emit applyId and questionnaireId; saved searches carry a jobAlertId; recruiter threads expose conversationId and unreadCount.
Talent aggregators can rank openings by salary and remote flags, HRIS tools can ingest parsed resume fields, ATS teams can reconcile application status, and staffing CRMs can watch inbox unread counts. openData Studio turns those records into callable open data.
Screenshots
API surface
The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.
Search jobs
POST
/v1/vacancies/findopendataRuns the home search: keyword plus jobLocation, jobTypeId and remoteOnly filters return vacancy cards with jobId, jobTitle, companyName, isRemote, salary_base and datePosted.
Auth: Optional. Guest sessions use a short-lived guest token issued by a guest-session call. Signed-in calls send Authorization: Bearer <access_token> from the sign-in service.
- keyword
- jobLocation
- jobTypeId
- remoteOnly
- pageSize
- pageNumber
- jobs
- jobId
- jobTitle
- companyName
- isRemote
- salary_base
- datePosted
- employmentType
POST /v1/vacancies/find HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json Accept: application/json { "keyword": "product manager", "jobLocation": "Austin, TX", "jobTypeId": "full-time", "remoteOnly": false, "pageSize": 20, "pageNumber": 1 }{ "pageSize": 20, "pageNumber": 1, "jobs": [{ "jobId": "jr-8845123", "jobTitle": "Staff Product Manager", "companyName": "Example Corp", "jobLocation": "Austin, TX", "isRemote": false, "jobTypeId": "full-time", "salary_base": 145000, "datePosted": "2026-09-24T12:00:00Z", "employmentType": "full-time" }] }Get job by id
GET
/v1/vacancies/{jobId}opendataLoads the job-detail screen for a vacancy: jobTitle, companyName, salary_base, applyType and applyUrl for jobId.
Auth: Optional. Guest sessions use a short-lived guest token issued by a guest-session call. Signed-in calls send Authorization: Bearer <access_token> from the sign-in service.
- jobId
- jobTitle
- companyName
- jobLocation
- isRemote
- employmentType
- salary_base
- datePosted
- applyType
- applyUrl
- jobTypeId
GET /v1/vacancies/jr-8845123 HTTP/1.1 Authorization: Bearer <access_token> Accept: application/json{ "jobId": "jr-8845123", "jobTitle": "Staff Product Manager", "companyName": "Example Corp", "jobLocation": "Austin, TX", "isRemote": false, "employmentType": "full-time", "salary_base": 145000, "datePosted": "2026-09-24T12:00:00Z", "applyType": "easy", "applyUrl": "https://jobs.example.com/jr-8845123", "jobTypeId": "full-time" }Apply options for a job
GET
/v1/vacancies/{jobId}/application-pathsopendataReturns the apply paths the job-detail CTA can take: applyType, applyUrl and an optional questionnaireId for knockout questions.
Auth: Bearer access token from the sign-in service (POST /v1/seeker/session/token). Authorization: Bearer <access_token>.
- jobId
- applyOptions
- applyType
- applyUrl
- questionnaireId
GET /v1/vacancies/jr-8845123/application-paths HTTP/1.1 Authorization: Bearer <access_token> Accept: application/json{ "jobId": "jr-8845123", "applyOptions": [{ "applyType": "easy", "applyUrl": "https://jobs.example.com/jr-8845123/apply", "questionnaireId": "q-441" }] }Related jobs
GET
/v1/vacancies/{jobId}/similaropendataPowers the related-roles rail on job detail: similar vacancies with jobTitle, companyName, jobLocation and isRemote.
Auth: Optional. Guest sessions use a short-lived guest token issued by a guest-session call. Signed-in calls send Authorization: Bearer <access_token> from the sign-in service.
- jobId
- related
- jobTitle
- companyName
- jobLocation
- isRemote
- salary_base
GET /v1/vacancies/jr-8845123/similar HTTP/1.1 Authorization: Bearer <access_token> Accept: application/json{ "jobId": "jr-8845123", "related": [{ "jobId": "jr-8845999", "jobTitle": "Senior Product Manager", "companyName": "Example Labs", "jobLocation": "Dallas, TX", "isRemote": true, "salary_base": 155000 }] }Job apply questionnaire
GET
/v1/vacancies/{jobId}/screening-questionsopendataLoads knockout / diversity questions shown before apply, keyed by questionnaireId and companyName.
Auth: Bearer access token from the sign-in service (POST /v1/seeker/session/token). Authorization: Bearer <access_token>.
- jobId
- questionnaireId
- companyName
- knockout
- questionId
- prompt
GET /v1/vacancies/jr-8845123/screening-questions HTTP/1.1 Authorization: Bearer <access_token> Accept: application/json{ "jobId": "jr-8845123", "questionnaireId": "q-441", "companyName": "Example Corp", "knockout": [{ "questionId": "k-1", "prompt": "Are you authorized to work in the United States?" }] }Seeker profile
GET
/v1/seeker/profileosintReads the signed-in seeker profile used by the Me tab: firstName, lastName, emailAddress, headline, visibilityStatus and willingnessToWorkRemotely.
Auth: Bearer access token from the sign-in service (POST /v1/seeker/session/token). Authorization: Bearer <access_token>.
- profileId
- firstName
- lastName
- emailAddress
- phoneNumber
- headline
- visibilityStatus
- willingnessToWorkRemotely
- postalCode
GET /v1/seeker/profile HTTP/1.1 Authorization: Bearer <access_token> Accept: application/json{ "profileId": "p-23642", "firstName": "Alex", "lastName": "Rivera", "emailAddress": "[email protected]", "phoneNumber": "+15125550123", "headline": "Staff Product Manager", "visibilityStatus": "visibleToEmployers", "willingnessToWorkRemotely": true, "postalCode": "78701" }Parse uploaded resume
POST
/v1/seeker/resume/extractopendataParses an uploaded PDF/Word resume into profile fields (firstName, jobTitle, companyName, schoolName, degreeName) to pre-fill the profile editor.
Auth: Bearer access token from the sign-in service (POST /v1/seeker/session/token). Authorization: Bearer <access_token>.
- firstName
- lastName
- emailAddress
- phoneNumber
- headline
- jobTitle
- companyName
- schoolName
- degreeName
POST /v1/seeker/resume/extract HTTP/1.1 Authorization: Bearer <access_token> Content-Type: multipart/form-data; boundary=----Upload ------Upload Content-Disposition: form-data; name="resume"; filename="alex-rivera.pdf" Content-Type: application/pdf <pdf-bytes> ------Upload--{ "firstName": "Alex", "lastName": "Rivera", "emailAddress": "[email protected]", "phoneNumber": "+15125550123", "headline": "Staff Product Manager", "jobTitle": "Staff Product Manager", "companyName": "Example Corp", "schoolName": "University of Texas", "degreeName": "B.S. Computer Science" }Saved jobs
GET
/v1/seeker/bookmarksopendataLists jobs the seeker saved (with matching add and remove calls per jobId): jobTitle, companyName and jobLocation.
Auth: Bearer access token from the sign-in service (POST /v1/seeker/session/token). Authorization: Bearer <access_token>.
- savedJobsCount
- jobs
- jobId
- jobTitle
- companyName
- jobLocation
- isRemote
- datePosted
GET /v1/seeker/bookmarks HTTP/1.1 Authorization: Bearer <access_token> Accept: application/json{ "savedJobsCount": 12, "jobs": [{ "jobId": "jr-8845123", "jobTitle": "Staff Product Manager", "companyName": "Example Corp", "jobLocation": "Austin, TX", "isRemote": false, "datePosted": "2026-09-24T12:00:00Z" }] }Job recommendations
GET
/v1/seeker/suggested-vacanciesopendataFeeds the personalized recommendations rail: vacancies matched to the seeker profile with jobTitle, companyName, isRemote and salary_base.
Auth: Bearer access token from the sign-in service (POST /v1/seeker/session/token). Authorization: Bearer <access_token>.
- jobs
- jobId
- jobTitle
- companyName
- jobLocation
- isRemote
- salary_base
- datePosted
GET /v1/seeker/suggested-vacancies HTTP/1.1 Authorization: Bearer <access_token> Accept: application/json{ "jobs": [{ "jobId": "jr-9900123", "jobTitle": "Director of Product", "companyName": "Example Health", "jobLocation": "Remote", "isRemote": true, "salary_base": 180000, "datePosted": "2026-10-01T08:00:00Z" }] }Create draft application
POST
/v1/seeker/applicationsopendataOpens a draft application for jobId, capturing applyType and questionnaireResponse, and returns applyId.
Auth: Bearer access token from the sign-in service (POST /v1/seeker/session/token). Authorization: Bearer <access_token>.
- jobId
- applyType
- questionnaireResponse
- questionnaireId
- answers
- applyId
- status
POST /v1/seeker/applications HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json { "jobId": "jr-8845123", "applyType": "easy", "questionnaireResponse": { "questionnaireId": "q-441", "answers": [{"questionId": "k-1", "value": "yes"}] } }{ "applyId": "ap-77120", "jobId": "jr-8845123", "applyType": "easy", "status": "draft" }Complete application
PUT
/v1/seeker/applications/{applyId}/submitopendataSubmits a draft application and returns status plus the jobTitle / companyName shown on the confirmation screen.
Auth: Bearer access token from the sign-in service (POST /v1/seeker/session/token). Authorization: Bearer <access_token>.
- applyId
- jobId
- status
- jobTitle
- companyName
PUT /v1/seeker/applications/ap-77120/submit HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json { "applyId": "ap-77120", "jobId": "jr-8845123" }{ "applyId": "ap-77120", "jobId": "jr-8845123", "status": "submitted", "jobTitle": "Staff Product Manager", "companyName": "Example Corp" }Recruiter conversations
GET
/v1/seeker/threadsopendataLists recruiter threads in the inbox: conversationId, companyName, jobTitle and per-thread unreadCount.
Auth: Bearer access token from the sign-in service (POST /v1/seeker/session/token). Authorization: Bearer <access_token>.
- conversations
- conversationId
- companyName
- jobTitle
- jobId
- lastMessageId
- unreadCount
GET /v1/seeker/threads HTTP/1.1 Authorization: Bearer <access_token> Accept: application/json{ "conversations": [{ "conversationId": "c-5501", "companyName": "Example Corp", "jobTitle": "Staff Product Manager", "jobId": "jr-8845123", "lastMessageId": "m-9001", "unreadCount": 2 }] }Unread recruiter messages
GET
/v1/seeker/threads/unread-totalopendataReturns the inbox badge count shown on the conversations tab.
Auth: Bearer access token from the sign-in service (POST /v1/seeker/session/token). Authorization: Bearer <access_token>.
- unreadCount
GET /v1/seeker/threads/unread-total HTTP/1.1 Authorization: Bearer <access_token> Accept: application/json{ "unreadCount": 4 }Create job alert
POST
/v1/seeker/search-alertsopendataCreates a saved search alert for keyword + jobLocation, returning jobAlertId and enabled.
Auth: Bearer access token from the sign-in service (POST /v1/seeker/session/token). Authorization: Bearer <access_token>.
- keyword
- jobLocation
- remoteOnly
- jobTypeId
- jobAlertId
- enabled
POST /v1/seeker/search-alerts HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json { "keyword": "product manager", "jobLocation": "Austin, TX", "remoteOnly": false, "jobTypeId": "full-time" }{ "jobAlertId": "ja-3321", "keyword": "product manager", "jobLocation": "Austin, TX", "remoteOnly": false, "enabled": true }Work authorizations
PUT
/v1/seeker/right-to-workosintWrites the seeker's right-to-work countries, used by knockout questions and profile completeness.
Auth: Bearer access token from the sign-in service (POST /v1/seeker/session/token). Authorization: Bearer <access_token>.
- workAuthorization
- countryCode
- workAuthorizationTypeId
PUT /v1/seeker/right-to-work HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json { "workAuthorization": [{ "countryCode": "US", "workAuthorizationTypeId": "citizen" }] }{ "workAuthorization": [{ "countryCode": "US", "workAuthorizationTypeId": "citizen" }] }Profile visibility
PUT
/v1/seeker/privacy/employer-visibilityosintSets whether employers can see the seeker profile, matching the visibility settings screen.
Auth: Bearer access token from the sign-in service (POST /v1/seeker/session/token). Authorization: Bearer <access_token>.
- visibilityStatus
PUT /v1/seeker/privacy/employer-visibility HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json { "visibilityStatus": "visibleToEmployers" }{ "visibilityStatus": "visibleToEmployers" }Reverse geocode place
GET
/v1/places/reverse-lookupopendataResolves device coordinates to a named place so search can pre-fill jobLocation, cityName and postalCode.
Auth: Optional. Guest sessions use a short-lived guest token issued by a guest-session call. Signed-in calls send Authorization: Bearer <access_token> from the sign-in service.
- cityName
- postalCode
- countryCode
- jobLocation
- lat
- lng
GET /v1/places/reverse-lookup?lat=30.2672&lng=-97.7431 HTTP/1.1 Authorization: Bearer <access_token> Accept: application/json{ "cityName": "Austin", "postalCode": "78701", "countryCode": "US", "jobLocation": "Austin, TX" }Sign-in token exchange
POST
/v1/seeker/session/tokenosintExchanges the sign-in authorization code for access_token, refreshToken and idToken used as Bearer auth on the data calls.
Auth: Unauthenticated. OAuth2 authorization-code + PKCE; client_id=<client-id>, redirect_uri is the app's registered callback.
- grant_type
- client_id
- code
- redirect_uri
- code_verifier
- access_token
- refreshToken
- idToken
- token_type
- expires_in
POST /v1/seeker/session/token HTTP/1.1 Content-Type: application/x-www-form-urlencoded grant_type=authorization_code&client_id=<client-id>&code=<auth-code>&redirect_uri=<app-callback-uri>&code_verifier=<pkce>{ "access_token": "<jwt>", "refreshToken": "<refresh>", "idToken": "<id-jwt>", "token_type": "Bearer", "expires_in": 3600 }
Data categories
- job listings
- job details
- candidate profiles
- resumes
- applications
- saved jobs
- job alerts
- messaging
- recommendations
- work authorization
- identity
Where teams use this data
Vacancy aggregator for US and EU boards
A meta-search indexes Monster hits by jobId, jobTitle, companyName, jobLocation, isRemote, salary_base and datePosted, then hydrates related-jobs rails without scraping HTML.
Apply-pipeline reconciliation
An ATS watches draft and completed applies (applyId, jobId, applyType, status, questionnaireId) so a seeker's Monster submissions line up with the same roles on Indeed or LinkedIn.
Resume parse into an HRIS
Onboarding tools take parse-resume output — firstName, lastName, jobTitle, companyName, schoolName, degreeName — and pre-fill employee records instead of re-keying a PDF.
Recruiter-inbox SLA monitor
A staffing CRM polls unreadCount and conversationId threads so unanswered employer messages on Monster surface next to email and LinkedIn InMail.
Frequently asked questions
Which vacancy fields does Monster Job Search return on search?
A vacancy query such as POST /v1/vacancies/find returns jobId, jobTitle, companyName, jobLocation, isRemote, jobTypeId, salary_base and datePosted. Fetching a single vacancy by jobId adds applyType and applyUrl for the detail screen.
How does a seeker apply to a Monster vacancy from the app?
The app first asks for the vacancy's application paths, which list applyType and an optional questionnaireId. It then creates a draft application with POST /v1/seeker/applications and submits it with PUT /v1/seeker/applications/{applyId}/submit, returning applyId and status.
How does Monster Job Search authenticate?
Sign-in is Monster OneIAM, an OAuth2 authorization-code flow with PKCE. A token exchange call such as POST /v1/seeker/session/token trades the authorization code for an access_token, refreshToken and idToken, and the access_token is sent as Authorization: Bearer on the data calls. Browsing can also use a guest token.
Can I read a parsed resume, not just the file?
Yes. A resume-extract call such as POST /v1/seeker/resume/extract accepts a PDF or Word document and returns firstName, lastName, emailAddress, jobTitle, companyName, schoolName and degreeName used to pre-fill the profile editor.
Apps similar to Monster Job Search
- Indeed Job Search — Indeed is a job search engine that aggregates listings from job boards, staffing firms and company career pages and lets seekers apply and store a resume on the platform.
- LinkedIn: Community & Network — LinkedIn is a professional networking platform where job seekers post CVs, employers post listings, and candidates can apply with their profile via Apply with LinkedIn.
- Job Search by ZipRecruiter — ZipRecruiter is an American employment marketplace that connects job seekers with employers and uses a matching algorithm to pair candidates with openings.
- Glassdoor | Jobs & Careers — Glassdoor pairs job listings with anonymous company ratings, salary reports and interview questions submitted by current and former employees.
- CareerBuilder — CareerBuilder is an American employment website, founded in 1995, that provides a job search engine plus talent-management and recruitment services in the United States, Europe and Asia.
- Snagajob — Snagajob is a U.S. online marketplace that connects job seekers with employers offering hourly and shift-based work.
- InfoJobs - Job Search — InfoJobs is a Barcelona-founded online job board that specialises in the Spanish market, connecting candidates with employers through its website and app.
- JOB TODAY: Hire & Find Jobs — JOB TODAY is a mobile hiring app, launched in Barcelona and Madrid, focused on hourly and service-industry roles in hospitality and retail.
Topics
- Monster Job Search API
- Monster.com jobs data
- jobTitle companyName salary_base
- Monster resume parse
- Monster applyId
- OneIAM access_token
- recruiter unreadCount
- workAuthorization visibilityStatus
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