Vagas de emprego - Infojobs icon

Infojobs Brasil data API: vacancies, candidate CV and salary bands

Infojobs Brasil Ltda · Identity

Vagas de emprego - Infojobs is Infojobs Brasil's Android client for vacancy search, candidate CV and salary bands. Behind the listing screen, /v1/jobs/search returns paginated cards with idVacancy, title, company and salary; the signed-in profile call /v1/candidates/cv returns email, name and salaryMin. Match apply, job alerts, company reviews and the salaries hub share the same Bearer session issued by /v1/auth/token.

Vagas de emprego - Infojobs (package com.infojobs.phone, versionName 3.19.1) is Infojobs Brasil's Android client for vacancy search, candidate CV, match apply, job alerts, company reviews and salary bands. Behind those screens the app talks to a first-party JSON API over HTTPS, with sign-in handled by an OAuth2 / OpenID Connect authorization-code flow. Signed-in calls send an Authorization: Bearer access token plus device, visit-origin and A/B-session headers; premium sessions add an IsPremium header. Field names below (idVacancy, title, company, salary, email, name, salaryMin, evaluationsAvg, affinity) are the properties on the app's API models.

Screenshots

  • Vagas de emprego - Infojobs screenshot 1
  • Vagas de emprego - Infojobs screenshot 2
  • Vagas de emprego - Infojobs screenshot 3
  • Vagas de emprego - Infojobs screenshot 4
  • Vagas de emprego - Infojobs screenshot 5
  • Vagas de emprego - Infojobs screenshot 6
  • Vagas de emprego - Infojobs screenshot 7
  • Vagas de emprego - Infojobs screenshot 8

API surface

  • Search vacancies

    POST /v1/jobs/search opendata

    Returns a paginated vacancy listing (title, company, salary, location3, workMethod, evaluationsAvg) used by the search-results screen.

    Auth: OAuth2 Bearer access token from the app's authorization-code sign-in. Signed-in calls also send Device, IdOriginVisit, Xtor and X-AB-Session-ID headers; premium sessions add IsPremium: true.

    • keywords
    • pageNumber
    • pageSize
    • order
    • idLocation2List
    • idCategory1List
    • idSalaryRangeList
    • idWorkMethodList
    • count
    • countList
    • countHomeOffice
    • data
    • idVacancy
    • title
    • company
    • idCompany
    • salary
    • location3
    • workMethod
    • homeOffice
    • experienceRange
    • evaluationsAvg
    • hasKillerQuestions
    • publishedDate
    • url

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/jobs/search HTTP/1.1
    Authorization: Bearer <access-token>
    Content-Type: application/json
    Device: {"os":"Android","version":"3.19.1"}
    IdOriginVisit: 1432
    Xtor: android
    X-AB-Session-ID: <session-id>
    
    {
      "keywords": "analista de dados",
      "pageNumber": 1,
      "pageSize": 10,
      "order": 1,
      "includeEmpty": true,
      "idLocation2List": [347],
      "idCategory1List": [12],
      "idSalaryRangeList": [4],
      "idWorkMethodList": [2],
      "idContractWorkTypeList": [1],
      "idWorkingHourList": [1],
      "idManagerialLevelList": [2],
      "idJobList": []
    }
    {
      "pageNumber": 1,
      "pageSize": 10,
      "count": 1284,
      "position": 0,
      "countList": 1284,
      "countHomeOffice": 312,
      "title": "Vagas de Analista de dados",
      "subtitle": "em São Paulo",
      "search": "analista de dados",
      "filters": "São Paulo - Home office",
      "url": "https://example.com/vagas/analista-de-dados-sao-paulo",
      "gridEngineModel": 1,
      "gridTestBEnabled": false,
      "data": [{
        "idVacancy": "enc-vac-90011",
        "idVacancyList": "enc-list-12",
        "title": "Analista de Dados Pleno",
        "company": "Example Corp",
        "idCompany": "enc-co-441",
        "companyHidden": false,
        "salary": "R$ 7.000 a R$ 9.000",
        "location3": "São Paulo",
        "idLocation2": 347,
        "workMethod": "Híbrido",
        "idWorkMethod": 2,
        "homeOffice": true,
        "experienceRange": "3 a 5 anos",
        "study1Min": "Superior Completo",
        "publishedDate": "2026-09-24T12:00:00Z",
        "insertDate": "2026-09-20T08:15:00Z",
        "evaluationsAvg": 4.2,
        "hasKillerQuestions": true,
        "hasVideoInterview": false,
        "urgentHiring": 0,
        "deficiencyRequired": false,
        "latitude": -23.5505,
        "longitude": -46.6333,
        "url": "https://example.com/vaga/analista-de-dados-pleno-90011",
        "totalMatches": 86,
        "position": 0
      }]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's vacancy search-results flow
    • field set mirrors the vacancy-listing model behind the results screen
  • Fetch vacancy detail

    GET /v1/jobs/detail opendata

    Hydrates a single vacancy (description, salaryMin/salaryMax, benefits, killerQuestions, company sector/size) for the vacancy-detail screen.

    Auth: OAuth2 Bearer access token from the app's authorization-code sign-in. Signed-in calls also send Device, IdOriginVisit, Xtor and X-AB-Session-ID headers; premium sessions add IsPremium: true.

    • idVacancy
    • title
    • job
    • idJob
    • company
    • idCompany
    • companyDescription
    • brandLogo
    • description
    • salary
    • salaryMin
    • salaryMax
    • hideSalary
    • location3
    • workMethod
    • workingHours
    • contractWorkType
    • category1
    • experienceRange
    • benefits
    • requirements
    • skills
    • killerQuestions
    • idKillerQuestion
    • question
    • publishedDate
    • evaluationsAvg

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/jobs/detail?IdVacancy=enc-vac-90011 HTTP/1.1
    Authorization: Bearer <access-token>
    Device: {"os":"Android","version":"3.19.1"}
    IdOriginVisit: 1432
    Xtor: android
    X-AB-Session-ID: <session-id>
    {
      "idVacancy": "enc-vac-90011",
      "title": "Analista de Dados Pleno",
      "job": "Analista de Dados",
      "idJob": 441890,
      "company": "Example Corp",
      "idCompany": "enc-co-441",
      "companyHidden": false,
      "companyDescription": "Marketplace de varejo.",
      "companySector": "Tecnologia",
      "companySize": "500 a 1.000 funcionários",
      "companyLocation2": "São Paulo",
      "brandLogo": "https://cdn.example.com/logos/example.png",
      "description": "Modelar dashboards e pipelines de dados.",
      "salary": "R$ 7.000 a R$ 9.000",
      "salaryMin": 7000.0,
      "salaryMax": 9000.0,
      "salaryType": "Mensal",
      "hideSalary": false,
      "location3": "São Paulo",
      "idLocation1": 1,
      "idLocation2": 347,
      "idLocation3": 9668,
      "workMethod": "Híbrido",
      "idWorkMethod": 2,
      "workingHours": "Integral",
      "contractWorkType": "CLT",
      "idContractWorkType": 1,
      "category1": "Informática / TI",
      "idCategory1": 12,
      "experienceRange": "3 a 5 anos",
      "experienceMin": 36,
      "experienceMax": 60,
      "study1Min": "Superior Completo",
      "numberVacancies": 2,
      "benefits": ["VR", "VT", "Plano de saúde"],
      "requirements": ["SQL", "Python"],
      "skills": ["SQL", "Python", "Power BI"],
      "killerQuestions": [{
        "idKillerQuestion": 801,
        "question": "Possui experiência com SQL?",
        "maxScore": 10,
        "idKillerQuestionType": 1,
        "killerAnswers": []
      }],
      "publishedDate": "2026-09-24T12:00:00Z",
      "url": "https://example.com/vaga/analista-de-dados-pleno-90011",
      "evaluationsAvg": 4.2,
      "latitude": -23.5505,
      "longitude": -46.6333
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's vacancy-detail screen
    • covers the salary-band, benefits and screening-question blocks
  • Suggest vacancy search terms

    GET /v1/jobs/suggest opendata

    Returns typeahead suggestions (jobs, categories, cities, companies) for the vacancy-search box.

    Auth: OAuth2 Bearer access token from the app's authorization-code sign-in. Signed-in calls also send Device, IdOriginVisit, Xtor and X-AB-Session-ID headers; premium sessions add IsPremium: true.

    • Term
    • jobs
    • category1List
    • location2List
    • location3List
    • companies
    • id
    • text

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/jobs/suggest?Term=analista HTTP/1.1
    Authorization: Bearer <access-token>
    X-AB-Session-ID: <session-id>
    {
      "jobs": [{"id": 441890, "text": "Analista de Dados"}, {"id": 441891, "text": "Analista de BI"}],
      "category1List": [{"id": 12, "text": "Informática / TI"}],
      "location2List": [{"id": 347, "text": "São Paulo"}],
      "location3List": [{"id": 9668, "text": "São Paulo - SP"}],
      "companies": [{"id": 441, "text": "Example Corp"}]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the vacancy search box typeahead
  • Fetch vacancy company profile

    GET /v1/employers/profile opendata

    Returns the employer page attached to a vacancy: reviews (scoreAvg, recommendation) and reported salary bands (average, min, max).

    Auth: OAuth2 Bearer access token from the app's authorization-code sign-in. Signed-in calls also send Device, IdOriginVisit, Xtor and X-AB-Session-ID headers; premium sessions add IsPremium: true.

    • idCompany
    • company
    • description
    • location2
    • sector
    • size
    • urlInfoJobs
    • evaluations
    • scoreAvg
    • recommendation
    • benefitsAvg
    • workEnvironmentAvg
    • salaries
    • average
    • min
    • max
    • valueMin
    • valueMax

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/employers/profile?IdVacancy=enc-vac-90011 HTTP/1.1
    Authorization: Bearer <access-token>
    X-AB-Session-ID: <session-id>
    {
      "idCompany": "enc-co-441",
      "idCompanyEvaluation": "enc-eval-441",
      "company": "Example Corp",
      "description": "Marketplace de varejo.",
      "location2": "São Paulo",
      "sector": "Tecnologia",
      "size": "500 a 1.000 funcionários",
      "urlInfoJobs": "https://example.com/empresa/example-corp",
      "urlSite": "https://example.com",
      "urlPandaPe": "",
      "evaluations": {
        "count": 214,
        "scoreAvg": 4.2,
        "recommendation": 82,
        "benefitsAvg": 4.0,
        "conciliationAvg": 3.8,
        "opportunityAvg": 4.1,
        "workEnvironmentAvg": 4.3,
        "score1": 12, "score2": 18, "score3": 40, "score4": 70, "score5": 74,
        "items": []
      },
      "salaries": {
        "job": "Analista de Dados",
        "average": 8200.0,
        "min": 7000,
        "max": 11000,
        "count": 48,
        "total": 48,
        "percentage": 62,
        "reportDate": "2026-09-01T00:00:00Z",
        "items": [{"valueMin": 7000, "valueMax": 9000, "count": 22, "percentage": 45.8, "volume": 22}]
      },
      "benefits": [],
      "interviews": {"items": []},
      "multimedias": []
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the employer page attached to a vacancy
  • Compare candidate vs vacancy

    GET /v1/jobs/match-score opendata

    Scores how the signed-in candidate matches a vacancy (affinity vs averageAffinity) and which required skills they already have.

    Auth: OAuth2 Bearer access token from the app's authorization-code sign-in. Signed-in calls also send Device, IdOriginVisit, Xtor and X-AB-Session-ID headers; premium sessions add IsPremium: true.

    • idVacancy
    • affinity
    • averageAffinity
    • totalCandidates
    • skills
    • name
    • hasCandidate
    • hasMatches
    • statistics

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/jobs/match-score?IdVacancy=enc-vac-90011 HTTP/1.1
    Authorization: Bearer <access-token>
    X-AB-Session-ID: <session-id>
    {
      "affinity": 78,
      "averageAffinity": 54,
      "totalCandidates": 86,
      "skills": [
        {"name": "SQL", "hasCandidate": true, "hasMatches": true},
        {"name": "Python", "hasCandidate": true, "hasMatches": true},
        {"name": "Power BI", "hasCandidate": false, "hasMatches": true}
      ],
      "statistics": []
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the candidate-vs-vacancy comparison panel
  • Fetch candidate CV

    GET /v1/candidates/cv osint

    Returns the signed-in candidate CV (email, name, salaryMin/salaryMax, experiences, skills, match list) used by the profile and apply screens.

    Auth: OAuth2 Bearer access token from the app's authorization-code sign-in. Signed-in calls also send Device, IdOriginVisit, Xtor and X-AB-Session-ID headers; premium sessions add IsPremium: true.

    • idCandidate
    • name
    • surname
    • email
    • photo
    • age
    • idSex
    • validated
    • isPremium
    • employed
    • job
    • idLocation2
    • latitude
    • longitude
    • salaryMin
    • salaryMax
    • skills
    • experiences
    • idJob
    • beginDate
    • idVacancyMatchesList

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/candidates/cv HTTP/1.1
    Authorization: Bearer <access-token>
    Device: {"os":"Android","version":"3.19.1"}
    X-AB-Session-ID: <session-id>
    IsPremium: true
    {
      "idCandidate": "enc-cand-7781",
      "name": "Ana",
      "surname": "Souza",
      "email": "[email protected]",
      "photo": "https://cdn.example.com/photos/7781.jpg",
      "age": 29,
      "idAgeRange": 3,
      "idSex": 2,
      "idStatus": 1,
      "validated": true,
      "isPremium": true,
      "employed": true,
      "job": "Analista de Dados",
      "idLocation1": 1,
      "idLocation2": 347,
      "idLocation3": 9668,
      "latitude": -23.5505,
      "longitude": -46.6333,
      "salaryMin": 7000.0,
      "salaryMax": 10000.0,
      "idSalaryType": 1,
      "idContractWorkType": 1,
      "idWorkingHours": 1,
      "idExperienceRange": 4,
      "idExperienceTime": 48,
      "idStudy1Last": 5,
      "idStudy1Max": 5,
      "changeResidence": false,
      "travel": false,
      "sendNotifications": true,
      "skills": ["SQL", "Python"],
      "experiences": [{
        "idJob": 441890,
        "job": "Analista de Dados",
        "idCategory1": 12,
        "idCategory2": 44,
        "idManagerialLevel": 2,
        "beginDate": "2022-03-01T00:00:00Z",
        "endDate": null,
        "Finished": false
      }],
      "studies": [],
      "languages": [],
      "knowledges": [],
      "idVacancyMatchesList": [90011],
      "pageNumber": 1,
      "pageSize": 10
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's profile and apply screens
  • Insert vacancy match (apply)

    POST /v1/applications/submit osint

    Posts an application (match) bundling the vacancy snapshot, candidate PII/skills and killer-question answers; returns a status integer.

    Auth: OAuth2 Bearer access token from the app's authorization-code sign-in. Signed-in calls also send Device, IdOriginVisit, Xtor and X-AB-Session-ID headers; premium sessions add IsPremium: true.

    • idOrigin
    • lastClick
    • vacancy
    • idVacancy
    • idCompany
    • title
    • candidate
    • email
    • name
    • age
    • salaryMin
    • salaryMax
    • isPremium
    • skills
    • killerQuestions
    • answers
    • idKillerQuestion
    • idKillerAnswer

    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
    X-AB-Session-ID: <session-id>
    
    {
      "idOrigin": 1,
      "lastClick": "apply",
      "testOption": 0,
      "testButton": 0,
      "modelVersion": "v3",
      "gridEngineModel": 1,
      "vacancy": {
        "idVacancy": "enc-vac-90011",
        "idCompany": "enc-co-441",
        "title": "Analista de Dados Pleno",
        "idLocation2": 347,
        "idCategory2": 44,
        "salaryMax": 9000.0
      },
      "candidate": {
        "email": "[email protected]",
        "name": "Ana Souza",
        "age": 29,
        "idLocation2": 347,
        "salaryMin": 7000.0,
        "salaryMax": 10000.0,
        "isPremium": true,
        "validated": true,
        "skills": ["SQL", "Python"]
      },
      "killerQuestions": [{"idKillerQuestion": 801, "maxScore": 10}],
      "answers": [{"idKillerQuestion": 801, "idKillerAnswer": 1}]
    }
    1

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's apply flow
  • List job alerts

    POST /v1/alerts/list opendata

    Lists the candidate's saved job alerts (keywords, location, salary range, frequency, active status) for the Alerts screen.

    Auth: OAuth2 Bearer access token from the app's authorization-code sign-in. Signed-in calls also send Device, IdOriginVisit, Xtor and X-AB-Session-ID headers; premium sessions add IsPremium: true.

    • pageNumber
    • pageSize
    • count
    • countActive
    • data
    • idAlert
    • name
    • job
    • keywords
    • location
    • idJob
    • idLocation2
    • idWorkMethod
    • idSalaryRange
    • idFrequency
    • idStatus

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/alerts/list HTTP/1.1
    Authorization: Bearer <access-token>
    Content-Type: application/json
    X-AB-Session-ID: <session-id>
    
    {
      "pageNumber": 1,
      "pageSize": 10
    }
    {
      "pageNumber": 1,
      "pageSize": 10,
      "count": 3,
      "countActive": 2,
      "data": [{
        "idAlert": "enc-alert-21",
        "name": "Analista de dados em São Paulo",
        "job": "Analista de Dados",
        "keywords": "analista de dados",
        "location": "São Paulo",
        "idJob": 441890,
        "idLocation2": 347,
        "idLocation3": 9668,
        "idWorkMethod": 2,
        "idSalaryRange": 4,
        "idFrequency": 1,
        "idStatus": 2,
        "idCategory1List": [12],
        "idContractWorkTypeList": [1],
        "idWorkingHoursList": [1],
        "insertDate": "2026-08-01T10:00:00Z",
        "modifyDate": "2026-09-20T09:00:00Z"
      }]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's alerts screen
  • Create job alert

    POST /v1/alerts/create opendata

    Creates a saved search alert from the current vacancy filters (keywords, city, salary range, work method) and returns a status integer.

    Auth: OAuth2 Bearer access token from the app's authorization-code sign-in. Signed-in calls also send Device, IdOriginVisit, Xtor and X-AB-Session-ID headers; premium sessions add IsPremium: true.

    • keywords
    • idJob
    • idLocation2
    • idLocation3
    • idWorkMethod
    • idSalaryRange
    • idFrequency
    • idOrigin
    • idCategory1List
    • idContractWorkTypeList
    • idWorkingHoursList

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/alerts/create HTTP/1.1
    Authorization: Bearer <access-token>
    Content-Type: application/json
    X-AB-Session-ID: <session-id>
    
    {
      "keywords": "analista de dados",
      "idJob": 441890,
      "idLocation2": 347,
      "idLocation3": 9668,
      "idWorkMethod": 2,
      "idSalaryRange": 4,
      "idFrequency": 1,
      "idOrigin": 12,
      "idCategory1List": [12],
      "idContractWorkTypeList": [1],
      "idWorkingHoursList": [1],
      "idManagerialLevelList": [2],
      "idDeficiency1List": []
    }
    1

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the save-alert flow on search results
  • Fetch salary market snapshot

    GET /v1/salaries/overview opendata

    Returns the salaries hub: most-popular and highest-paying jobs/brands with salariesAvg and evaluationsAvg.

    Auth: OAuth2 Bearer access token from the app's authorization-code sign-in. Signed-in calls also send Device, IdOriginVisit, Xtor and X-AB-Session-ID headers; premium sessions add IsPremium: true.

    • total
    • mostPopularJobs
    • maxSalaryJobs
    • mostPopularBrands
    • maxSalaryBrands
    • idJob
    • job
    • salariesAvg
    • idCompany
    • name
    • logo
    • evaluationsAvg

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/salaries/overview HTTP/1.1
    Authorization: Bearer <access-token>
    X-AB-Session-ID: <session-id>
    {
      "total": 18420,
      "mostPopularJobs": [
        {"idJob": 441890, "job": "Analista de Dados", "salariesAvg": 8200}
      ],
      "maxSalaryJobs": [
        {"idJob": 552001, "job": "Engenheiro de Dados", "salariesAvg": 14500}
      ],
      "mostPopularBrands": [
        {"idCompany": 441, "idCompanyEvaluation": 441, "name": "Example Corp", "logo": "https://cdn.example.com/logos/example.png", "salariesAvg": 9800, "evaluationsAvg": 4.2}
      ],
      "maxSalaryBrands": [
        {"idCompany": 900, "idCompanyEvaluation": 900, "name": "Example Bank", "logo": "https://cdn.example.com/logos/bank.png", "salariesAvg": 16200, "evaluationsAvg": 4.0}
      ]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's salaries hub
  • Search company brands

    POST /v1/employers/search opendata

    Returns a paginated company-brand listing (name, sector, evaluationsAvg, vacanciesCount, followersCount) for the Companies screen.

    Auth: OAuth2 Bearer access token from the app's authorization-code sign-in. Signed-in calls also send Device, IdOriginVisit, Xtor and X-AB-Session-ID headers; premium sessions add IsPremium: true.

    • name
    • keywords
    • idCompanySector
    • idLocation2
    • hasActiveVacancies
    • pageNumber
    • count
    • data
    • idCompany
    • logo
    • sector
    • evaluationsAvg
    • evaluationsCount
    • followersCount
    • salariesCount
    • vacanciesCount

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/employers/search HTTP/1.1
    Authorization: Bearer <access-token>
    Content-Type: application/json
    X-AB-Session-ID: <session-id>
    
    {
      "name": "Example",
      "keywords": "tecnologia",
      "idCompanySector": 8,
      "idLocation2": 347,
      "hasActiveVacancies": true,
      "idCompanyEvaluationList": [],
      "pageNumber": 1,
      "pageSize": 10
    }
    {
      "pageNumber": 1,
      "pageSize": 10,
      "count": 86,
      "title": "Empresas de tecnologia",
      "subtitle": "em São Paulo",
      "filters": "Com vagas ativas",
      "data": [{
        "idCompany": "enc-co-441",
        "idCompanyEvaluation": "enc-eval-441",
        "name": "Example Corp",
        "logo": "https://cdn.example.com/logos/example.png",
        "background": "https://cdn.example.com/covers/example.png",
        "sector": "Tecnologia",
        "evaluationsAvg": 4.2,
        "evaluationsCount": 214,
        "followersCount": 12840,
        "salariesCount": 48,
        "vacanciesCount": 12
      }]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's companies directory
  • Fetch psychometric test result

    GET /v1/assessments/result osint

    Returns the candidate's psychometric/competence test scores (personality, competences, values) shown on the tests-result screen.

    Auth: OAuth2 Bearer access token from the app's authorization-code sign-in. Signed-in calls also send Device, IdOriginVisit, Xtor and X-AB-Session-ID headers; premium sessions add IsPremium: true.

    • personality
    • competences
    • values
    • key
    • name
    • description
    • score
    • order

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/assessments/result HTTP/1.1
    Authorization: Bearer <access-token>
    X-AB-Session-ID: <session-id>
    {
      "personality": {
        "key": "executor",
        "name": "Executor",
        "description": "Orientado a entrega e prazos.",
        "score": 82,
        "order": 1
      },
      "competences": [
        {"key": "analitica", "name": "Pensamento analítico", "description": "",
         "score": 76, "order": 1}
      ],
      "values": [
        {"key": "colaboracao", "name": "Colaboração", "description": "", "score": 70, "order": 1}
      ]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's test-result screen
  • List most popular companies

    GET /v1/employers/featured opendata

    Returns the featured/most-popular employer brands shown on the Companies hub.

    Auth: OAuth2 Bearer access token from the app's authorization-code sign-in. Signed-in calls also send Device, IdOriginVisit, Xtor and X-AB-Session-ID headers; premium sessions add IsPremium: true.

    • total
    • brands
    • idCompany
    • name
    • logo
    • sector
    • evaluationsAvg
    • evaluationsCount
    • followersCount
    • vacanciesCount
    • salariesCount

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/employers/featured HTTP/1.1
    Authorization: Bearer <access-token>
    X-AB-Session-ID: <session-id>
    {
      "total": 24,
      "brands": [{
        "idCompany": "enc-co-441",
        "idCompanyEvaluation": "enc-eval-441",
        "name": "Example Corp",
        "logo": "https://cdn.example.com/logos/example.png",
        "sector": "Tecnologia",
        "evaluationsAvg": 4.2,
        "evaluationsCount": 214,
        "followersCount": 12840,
        "vacanciesCount": 12,
        "salariesCount": 48
      }]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the featured section of the companies hub
  • Issue OAuth access token

    POST /v1/auth/token osint

    Exchanges an OpenID Connect authorization code for the Bearer access_token used on every subsequent data call.

    Auth: Unauthenticated OAuth2 token exchange: the app swaps an authorization code (PKCE) from its OpenID Connect sign-in for a Bearer access token, then sends it as Authorization: Bearer on every data call.

    • grant_type
    • client_id
    • code
    • redirect_uri
    • code_verifier
    • access_token
    • token_type
    • expires_in
    • refresh_token
    • id_token
    • scope

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/auth/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-redirect>&code_verifier=<pkce>
    {
      "access_token": "<access-token>",
      "token_type": "Bearer",
      "expires_in": 3600,
      "refresh_token": "<refresh-token>",
      "id_token": "<id-token>",
      "scope": "openid profile offline_access email"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's sign-in and session bootstrap

Data categories

  • job listings
  • job details
  • candidate profiles
  • applications
  • job alerts
  • salaries
  • company reviews
  • psychometric tests
  • auth sessions

Where teams use this data

  • Brazil vacancy market census

    Nightly jobs pulls hit POST /v1/jobs/search filtered by idLocation2List and idCategory1List, then hydrate salary, workMethod and evaluationsAvg from each vacancy card to track openings in São Paulo and other metros.

  • Candidate CRM enrichment

    A recruiting CRM calls GET /v1/candidates/cv after OAuth sign-in and stores email, name, salaryMin/salaryMax, skills and experiences so outreach can match the CV the candidate already maintains in Infojobs.

  • Salary-band benchmarking

    Compensation teams read GET /v1/salaries/overview plus the employer-profile salaries block (average, min, max) to compare offered bands against reported salariesAvg for the same job title.

  • Apply-pipeline reconciliation

    ATS bots post POST /v1/applications/submit with vacancy.idVacancy and candidate.email, then cross-check GET /v1/jobs/match-score affinity against the in-house pipeline so dropped applications are flagged.

Frequently asked questions

What does the Infojobs Brasil data API expose?

A paginated vacancy search with filters, a vacancy detail view, an employer profile with reviews and salary bands, a candidate-vs-vacancy match score, the signed-in candidate CV, an apply call, saved job alerts, a salaries hub and a company-brand directory.

How is the vacancy and CV API authenticated?

The app signs in with an OAuth2 / OpenID Connect authorization-code flow and then sends Authorization: Bearer on every call, together with device, visit-origin, referrer and A/B-session headers; premium sessions add an IsPremium header.

What fields identify a vacancy and a candidate?

Vacancies use idVacancy, title, company, salary, location3 and workMethod. The candidate CV uses idCandidate, email, name, surname, salaryMin, salaryMax, skills and experiences.

Does the app expose salary-band data?

Yes. GET /v1/salaries/overview returns mostPopularJobs and maxSalaryBrands with salariesAvg, and GET /v1/employers/profile adds a per-employer salary average/min/max plus review scoreAvg.

Topics

  • infojobs brasil api
  • com.infojobs.phone endpoints
  • infojobs vacancy search api
  • candidate CV email
  • salariesAvg
  • idVacancy
  • infojobs job alerts api
  • infojobs apply 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.

Get a quote