InfoJobs (net.infojobs.mobile.android) Data API
InfoJobs exposes a job-board data API to its Android app. Offer search is a paginated listing endpoint; a second call hydrates a single offer with its description, requirements, salary and company profile. The signed-in area adds the candidate identity record, the full curriculum (national id, phones, work permits, experience and job preferences), the candidate's sent applications with their pipeline events, and a per-offer match score. Anonymous search needs only an install identifier, while signed-in calls authenticate with an OAuth2 Bearer access token plus tenant and app-version headers, and mutating calls add a CSRF token. Field names below (code, email, nationalId, applications, matchValue) are the properties on the app's API models.
InfoJobs - Job Search (package net.infojobs.mobile.android, versionName 4.76.0) is Adevinta Jobs' Android client for offer search, candidate identity, curricula and application tracking. Its data API exposes a paginated job-offer search, a single-offer detail view, the signed-in candidate profile, the full curriculum (national id, birthday, phones, work permits, experience and job preferences), the candidate's sent applications with pipeline events, and a per-offer match score. Anonymous search works with just an install identifier; signed-in calls use an OAuth2 Bearer access token with tenant and app-version headers, and mutating calls add a CSRF token. Field names below (code, title, email, nationalId, applications, matchValue) are the properties on the app's API models.
Screenshots
API surface
Search job offers
GET
/v1/jobs/searchopendataReturns a paginated job-offer listing (title, city, province, telework, salary blurb, employer logo) used by the search results screen, for both anonymous and signed-in sessions.
Auth: Optional Bearer access token for the signed-in view. Anonymous search sends an install identifier plus tenant and app-version headers.
- currentPage
- pageSize
- totalResults
- currentResults
- totalPages
- idSearch
- offers
- code
- newBOId
- title
- city
- province
- teleworking
- updated
- author
- salaryDescription
- isFavorite
- match
- sortBy
- searchVersion
- queryParameters
Illustrative example reconstructed from the app's interface — not a live capture.
GET /v1/jobs/search?query=product+manager&province=madrid&telework=teletrabajo-posible&page=1 HTTP/1.1 X-Tenant: infojobs X-App-Version: 1604076000 Anonymous-Id: <anonymous-id>{ "currentPage": 1, "pageSize": 20, "totalResults": 1284, "currentResults": 20, "totalPages": 65, "idSearch": 987654321, "sortBy": "updated", "searchVersion": "v1", "sinceDate": "ANY", "offers": [ { "code": "o1a2b3c4d5", "newBOId": "12345678", "title": "Product Manager", "city": "Madrid", "province": {"id": "33", "key": "madrid", "value": "Madrid"}, "teleworking": {"id": "2", "key": "teletrabajo-posible", "value": "Híbrido"}, "updated": "2026-09-20T10:15:00Z", "author": {"id": "c-9001", "name": "Example Corp", "logoUrl": "https://cdn.example.com/logo.png"}, "salaryDescription": "40.000€ - 50.000€ Bruto/año", "priority": false, "isBold": false, "isMultiProvince": false, "isApply": false, "isViewedByCandidate": false, "isFavorite": false, "match": true } ], "queryParameters": { "query": "product manager", "province": "madrid", "telework": "teletrabajo-posible" }, "isEligibleForAutomaticAlertCreation": true }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 offer-listing model behind the results screen
Fetch offer detail
GET
/v1/jobs/{jobId}opendataHydrates a single offer card (description, requirements, salary, company profile, apply flags) for the offer-detail screen and the signed-in favorite/following overlay.
Auth: Bearer access token for the signed-in view (adds the favorite/following overlay); the anonymous variant returns the bare offer. Tenant and app-version headers are always sent.
- offerDetail
- id
- newBOId
- title
- applications
- creationDate
- updateDate
- active
- city
- description
- minRequirements
- desiredRequirements
- salaryDescription
- schedule
- canApply
- hasKillerQuestions
- hasOpenQuestions
- profile
- name
- numberWorkers
- logoUrl
- corporateWebsiteUrl
- skillsList
- favorite
- following
Illustrative example reconstructed from the app's interface — not a live capture.
GET /v1/jobs/o1a2b3c4d5 HTTP/1.1 Authorization: Bearer <access-token> X-Tenant: infojobs X-App-Version: 1604076000 Anonymous-Id: <anonymous-id>{ "offerDetail": { "id": "o1a2b3c4d5", "newBOId": "12345678", "title": "Product Manager", "applications": 42, "creationDate": "2026-09-01T08:00:00Z", "updateDate": "2026-09-20T10:15:00Z", "active": true, "archived": false, "city": "Madrid", "description": "Lead the candidate experience squad.", "minRequirements": "5 years in product.", "desiredRequirements": "Marketplace background.", "salaryDescription": "40.000€ - 50.000€ Bruto/año", "schedule": "Jornada completa", "canApply": true, "hasKillerQuestions": 1, "hasOpenQuestions": 0, "vacancies": 1, "profile": { "id": "c-9001", "name": "Example Corp", "numberWorkers": 250, "logoUrl": "https://cdn.example.com/logo.png", "url": "https://example.com/example-corp", "corporateWebsiteUrl": "https://example.com", "isFollowable": true, "isHidden": false }, "skillsList": [{"skill": "product management"}] }, "favorite": false, "following": false }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the app's offer-detail screencovers both the signed-in and anonymous offer views
Fetch signed-in candidate
GET
/v1/account/profileosintReturns the signed-in candidate identity record (email, photo URL, given name and both surnames) that the home and profile chrome hang off.
Auth: OAuth2 Bearer access token in the Authorization header, plus tenant and app-version headers.
- photo
- hasPhoto
- name
- surname1
- surname2
- isEmailValidated
Illustrative example reconstructed from the app's interface — not a live capture.
GET /v1/account/profile HTTP/1.1 Authorization: Bearer <access-token> X-Tenant: infojobs X-App-Version: 1604076000{ "email": "[email protected]", "photo": "https://cdn.example.com/candidate/photo.jpg", "hasPhoto": true, "name": "Alex", "surname1": "Rivera", "surname2": "García", "isEmailValidated": 1 }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the app's home/profile identity flow
Fetch curriculum (CV)
GET
/v1/resumes/{resumeId}osintLoads a full curriculum: national id, birthday, address, phones, work permits, experience and job-preference state used by the CV editor and apply flow.
Auth: OAuth2 Bearer access token in the Authorization header, plus tenant and app-version headers.
- id
- updatedAt
- personalData
- name
- surname1
- surname2
- nationalIdType
- nationalId
- birthday
- gender
- address
- city
- country
- province
- zipCode
- mobilePhone
- nationalities
- workPermits
- driverLicenses
- experience
- jobPreference
- isPersonalDataCompleted
Illustrative example reconstructed from the app's interface — not a live capture.
GET /v1/resumes/cv-001 HTTP/1.1 Authorization: Bearer <access-token> X-Tenant: infojobs X-App-Version: 1604076000{ "id": "cv-001", "updatedAt": "2026-09-18T12:00:00Z", "personalData": { "email": "[email protected]", "name": "Alex", "surname1": "Rivera", "surname2": "García", "nationalIdType": 1, "nationalId": "12345678Z", "birthday": "1990-04-12", "gender": 1, "address": "Calle Ejemplo 1", "city": "Madrid", "country": "españa", "province": "madrid", "zipCode": "28001", "mobilePhone": "+34600111222", "landlinePhone": "", "internationalPhone": "", "nationalities": ["española"], "workPermits": ["unión-europea"], "driverLicenses": ["b"], "hasVehicle": true, "isFreelance": false }, "experience": [ { "id": "exp-1", "title": "Product Manager", "company": "Example Corp", "startingDate": "2020-01-01", "finishingDate": null, "onCourse": true, "isVisible": true } ], "jobPreference": { "state": "ACTIVE", "jobTitles": [{"id": "product-manager"}], "remoteWork": [{"key": "teletrabajo-posible"}] }, "isEducationCompleted": true, "isExperienceCompleted": true, "isPersonalDataCompleted": true, "advertisementSegment": "standard" }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the app's CV editor and apply flow
List applications
GET
/v1/applicationsosintLists the candidate's sent applications with employer, offer title and pipeline events (CV received, CV read, in process, rejected, process closed).
Auth: OAuth2 Bearer access token in the Authorization header, plus tenant and app-version headers.
- totalFound
- applications
- code
- jobOffer
- title
- companyName
- companyLogo
- pendingEvents
- rejected
- offerRemoved
- processClosed
- lastEvent
- typeId
- date
- description
- cvReceivedEvent
- cvReadEvent
Illustrative example reconstructed from the app's interface — not a live capture.
GET /v1/applications?page=1&pageSize=20 HTTP/1.1 Authorization: Bearer <access-token> X-Tenant: infojobs X-App-Version: 1604076000{ "totalFound": 3, "applications": [ { "code": "app-1001", "jobOffer": { "code": "o1a2b3c4d5", "title": "Product Manager", "companyName": "Example Corp", "companyLogo": "https://cdn.example.com/logo.png" }, "pendingEvents": 1, "rejected": false, "offerRemoved": false, "processClosed": false, "lastEvent": { "typeId": 2, "date": "2026-09-19T09:00:00Z", "description": "CV leído" }, "cvReceivedEvent": { "typeId": 1, "date": "2026-09-18T18:00:00Z", "description": "CV recibido" }, "cvReadEvent": { "typeId": 2, "date": "2026-09-19T09:00:00Z", "description": "CV leído" } } ] }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the app's applications / tracking screen
How-you-match score
GET
/v1/jobs/{jobId}/matchopendataScores the signed-in candidate's CV against an offer (distance plus per-skill/language match flags) for the How You Match panel on offer detail and apply.
Auth: OAuth2 Bearer access token in the Authorization header, plus tenant and app-version headers.
- distance
- metadata
- offer
- code
- title
- cv
- contains
- match
- type
- label
- matchValue
- matchDetail
Illustrative example reconstructed from the app's interface — not a live capture.
GET /v1/jobs/o1a2b3c4d5/match HTTP/1.1 Authorization: Bearer <access-token> X-Tenant: infojobs X-App-Version: 1604076000{ "distance": 0.18, "offer": {"code": "o1a2b3c4d5", "title": "Product Manager"}, "cv": {"code": "cv-001", "contains": ["product management", "marketplace"]}, "match": [ {"type": "SKILL", "label": "product management", "match": true, "matchValue": 1.0}, {"type": "LANGUAGE", "label": "inglés", "match": false, "matchValue": 0.0} ], "matchDetail": { "languages": [], "skills": [], "industry": [] } }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the app's How You Match panel on offer detail
Data categories
- job-offers
- candidate-profile
- curriculum
- applications
- offer-match
Where teams use this data
Job-board aggregation
Meta-search products stream job offers with salary description, teleworking flag and province into a unified index, deduplicating across sources as offers update.
Application tracking
Candidate-side trackers list applications with their event timeline — CV received, CV read, process closed — and nudge the candidate the moment a recruiter looks.
CV-fit coaching
Career tools read the how-you-match score and its per-criterion detail for a target offer, telling candidates exactly which requirement to close before applying.
Frequently asked questions
What does the InfoJobs data API expose?
A paginated job-offer search, a single-offer detail view, the signed-in candidate profile, the full curriculum (contact data, national id, work permits, experience and job preferences), the candidate's sent applications with pipeline events, and a per-offer match score.
How are InfoJobs API calls authenticated?
Anonymous offer search works with just an install identifier. Signed-in calls send an OAuth2 Bearer access token in the Authorization header together with tenant and app-version headers; create, update and delete calls add a CSRF token.
What candidate data does the curriculum call return?
The curriculum record carries personal data (email, given name and surnames, national id, birthday, address, phones, nationalities, work permits and driver licenses) plus experience entries and job-preference state.
Topics
- infojobs api
- net.infojobs.mobile.android endpoints
- infojobs offer search api
- infojobs candidate curriculum api
- infojobs applications api
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.