Parcours Emploi icon

France Travail data API: offres, candidatures, CV

France Travail · Jobs & Careers 4.6 ★

Parcours Emploi (Play title Parcours Emploi France Travail, formerly Mes Offres) is France Travail's official job-seeker app for people registered with the public employment service. After France Connect / PEAM sign-in, seekers search national vacancies by keyword, contract type and place, open a full posting, apply with a stored CV, track each candidature, keep a business card, follow recruiter invitations (AMI), message a conseiller, book agency appointments, log job-search démarches and read indemnisation. France Travail sits at Le Cinetic, 1 avenue du Docteur Gley, 75020 Paris; the Android listing is rated 4.6 from about 128,000 reviews with 5 million-plus downloads. It is the state job board rather than a private classifieds marketplace, sitting next to InfoJobs in Spain and Catho in Brazil as a national vacancy client.

Each offre carries idOffre, intitule, typeContrat, salaire, nomEntreprise, siret and codeROME. Applications key on candidatureDetail with statut; the CV stores as idGed and nomFichier. A conseiller block adds idConseiller and indemnisation next to planner rows.

ATS and case-management products pull the same vacancy, apply and benefit rows France Travail already shows the seeker — openData Studio turns that public-employment loop into callable open data.

Screenshots

  • Parcours Emploi screenshot 1
  • Parcours Emploi screenshot 2
  • Parcours Emploi screenshot 3
  • Parcours Emploi screenshot 4
  • Parcours Emploi screenshot 5
  • Parcours Emploi screenshot 6
  • Parcours Emploi screenshot 7
  • Parcours Emploi screenshot 8

API surface

The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.

  • PEAM OpenID authorize

    GET /v1/francetravail/oauth/authorize osint

    Starts the PEAM OpenID login that yields the authorization code later exchanged for access_token.

    Auth: Unauthenticated browser start. Query is client_id, redirect_uri, response_type=code, scope=openid and a state. The PEAM page returns an authorization code to peam-usager://success.

    • client_id
    • redirect_uri
    • response_type
    • scope
    • state
    • code
    GET /v1/francetravail/oauth/authorize?client_id=USG_PN062-MESOFFRESMOBILE_SSO&redirect_uri=peam-usager%3A%2F%2Fsuccess&response_type=code&scope=openid&state=st-9c11ab HTTP/1.1
    Accept: text/html
    HTTP/1.1 302 Found
    Location: peam-usager://success?code=SplxlOBeZQQYbYS6WxSbIA&state=st-9c11ab
  • Exchange code for access token

    POST /v1/francetravail/oauth/token osint

    Exchanges the PEAM authorization code for the access_token that gates later offre, candidature and conseiller calls.

    Auth: Unauthenticated. Body is the authorization code from GET /v1/francetravail/oauth/authorize. The returned access_token is sent as Authorization: Bearer on later calls.

    • grant_type
    • code
    • redirect_uri
    • client_id
    • access_token
    • token_type
    • expires_in
    • scope
    POST /v1/francetravail/oauth/token HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA&redirect_uri=peam-usager%3A%2F%2Fsuccess&client_id=USG_PN062-MESOFFRESMOBILE_SSO
    {
      "access_token": "eyJhbGciOi...",
      "token_type": "Bearer",
      "expires_in": 3600,
      "scope": "openid"
    }
  • Search job offers

    GET /v1/francetravail/offres opendata

    Returns the vacancy listing used by the search-results screen: intitule, typeContrat, salaire, lieuTravail and pagination.

    Auth: Optional Bearer access_token from POST /v1/francetravail/oauth/token. Anonymous search still pages; signed-in calls personalise saved and applied flags.

    • resultats
    • idOffre
    • intitule
    • typeContrat
    • natureOffre
    • salaire
    • salaireMin
    • nomEntreprise
    • siret
    • lieuTravail
    • codePostal
    • libelleCommune
    • codeROME
    • dateCreation
    • dateActualisation
    • filtresPossibles
    GET /v1/francetravail/offres?motsCles=developpeur&typeContrat=CDI&departement=75&range=0-19 HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Accept: application/json
    {
      "resultats": [
        {
          "idOffre": "075BLXM",
          "intitule": "Développeur backend",
          "typeContrat": "CDI",
          "natureOffre": "Emploi",
          "salaire": "2800 EUR mensuel",
          "salaireMin": 2800,
          "nomEntreprise": "Atelier Nord",
          "siret": "55212022200013",
          "lieuTravail": "Paris 10e",
          "codePostal": "75010",
          "libelleCommune": "Paris",
          "codeROME": "M1805",
          "dateCreation": "2026-09-28T09:12:00Z",
          "dateActualisation": "2026-10-01T11:04:00Z"
        }
      ],
      "filtresPossibles": []
    }
  • Saved job offers

    GET /v1/francetravail/offres/selection osint

    Lists ads the seeker starred on the Mes offres selection screen.

    Auth: Authorization: Bearer access_token from POST /v1/francetravail/oauth/token.

    • offres
    • idOffre
    • intitule
    • nomEntreprise
    GET /v1/francetravail/offres/selection HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Accept: application/json
    {
      "offres": [
        {
          "idOffre": "075BLXM",
          "intitule": "Développeur backend",
          "nomEntreprise": "Atelier Nord"
        }
      ]
    }
  • Apply to an offer

    POST /v1/francetravail/candidatures/offre osint

    Creates a candidature against an idOffre with an optional GED CV (idGed).

    Auth: Authorization: Bearer access_token from POST /v1/francetravail/oauth/token. Body names the idOffre being applied to.

    • idOffre
    • idGed
    • postulateWithProfile
    • candidatureDetail
    • statut
    • dateCreation
    POST /v1/francetravail/candidatures/offre HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Content-Type: application/json
    
    {
      "idOffre": "075BLXM",
      "idGed": "ged-441902",
      "postulateWithProfile": true
    }
    {
      "idOffre": "075BLXM",
      "candidatureDetail": {
        "statut": "ENVOYEE",
        "dateCreation": "2026-10-02T14:22:11Z"
      }
    }
  • Recruiter invitations

    GET /v1/francetravail/amis osint

    Lists recruiter invitations (AMI) shown on the propositions screen.

    Auth: Authorization: Bearer access_token from POST /v1/francetravail/oauth/token.

    • amis
    • idAMI
    • idOffre
    • nomEntreprise
    • statut
    GET /v1/francetravail/amis HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Accept: application/json
    {
      "amis": [
        {
          "idAMI": "ami-8821",
          "idOffre": "075BLXM",
          "nomEntreprise": "Atelier Nord",
          "statut": "EN_COURS"
        }
      ]
    }
  • Professional profile

    GET /v1/francetravail/profil osint

    Returns the signed-in professional profile used on apply and the business-card screen.

    Auth: Authorization: Bearer access_token from POST /v1/francetravail/oauth/token.

    • identifiant
    • prenom
    • nomNaissance
    • mail
    • telephone
    • dateNaissance
    • codePostal
    • libelleCommune
    GET /v1/francetravail/profil HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Accept: application/json
    {
      "identifiant": "id-100442",
      "prenom": "Camille",
      "nomNaissance": "Martin",
      "mail": "[email protected]",
      "telephone": "+33 6 12 34 56 78",
      "dateNaissance": "1992-04-11",
      "codePostal": "75010",
      "libelleCommune": "Paris"
    }
  • CV in document store

    GET /v1/francetravail/documents osint

    Lists CVs stored in the GED that apply can attach via idGed.

    Auth: Authorization: Bearer access_token from POST /v1/francetravail/oauth/token.

    • documents
    • idGed
    • nomFichier
    • statut
    GET /v1/francetravail/documents HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Accept: application/json
    {
      "documents": [
        {
          "idGed": "ged-441902",
          "nomFichier": "cv-camille.pdf",
          "statut": "ACTIF"
        }
      ]
    }
  • Counsellor and benefits

    GET /v1/francetravail/conseiller osint

    Returns the assigned conseiller and indemnisation block shown on the home cartouche.

    Auth: Authorization: Bearer access_token from POST /v1/francetravail/oauth/token.

    • idConseiller
    • prenom
    • statut
    • indemnisation
    • libelle
    GET /v1/francetravail/conseiller HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Accept: application/json
    {
      "idConseiller": "c-2044",
      "prenom": "Léa",
      "statut": "EN_COURS",
      "indemnisation": {
        "libelle": "ARE",
        "statut": "EN_COURS"
      }
    }
  • Agency appointments

    GET /v1/francetravail/rendezvous osint

    Lists agency appointments shown on the planner.

    Auth: Authorization: Bearer access_token from POST /v1/francetravail/oauth/token.

    • rendezvous
    • id
    • libelle
    • statut
    • agence
    GET /v1/francetravail/rendezvous HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Accept: application/json
    {
      "rendezvous": [
        {
          "id": "rdv-331",
          "libelle": "Entretien de suivi",
          "statut": "PLANIFIE",
          "agence": "Paris 10 - Magenta"
        }
      ]
    }
  • Job-search démarches

    GET /v1/francetravail/demarches osint

    Pages declared job-search démarches for the actualisation timeline.

    Auth: Authorization: Bearer access_token from POST /v1/francetravail/oauth/token.

    • demarches
    • idDemarche
    • libelle
    • statut
    • idActionDeclaree
    GET /v1/francetravail/demarches HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Accept: application/json
    {
      "demarches": [
        {
          "idDemarche": "d-9012",
          "libelle": "Candidature envoyée",
          "statut": "VALIDEE",
          "idActionDeclaree": "ad-44"
        }
      ]
    }
  • Unread counsellor messages

    GET /v1/francetravail/messages/unread osint

    Returns the unread-message count for the in-app conseiller inbox badge.

    Auth: Authorization: Bearer access_token from POST /v1/francetravail/oauth/token.

    • nonLu
    • messages
    • id
    • libelle
    GET /v1/francetravail/messages/unread HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Accept: application/json
    {
      "nonLu": 2,
      "messages": [
        {
          "id": "m-17",
          "libelle": "Votre rendez-vous de jeudi"
        }
      ]
    }
  • Company lookup by SIRET

    GET /v1/francetravail/companies/{siret} opendata

    Hydrates the employer card from a SIRET on an offer.

    Auth: Optional Bearer access_token. Used from an offer card to hydrate the employer.

    • siret
    • raisonSociale
    • nomEntreprise
    • codePostal
    • libelleCommune
    GET /v1/francetravail/companies/55212022200013 HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Accept: application/json
    {
      "siret": "55212022200013",
      "raisonSociale": "Atelier Nord",
      "nomEntreprise": "Atelier Nord",
      "codePostal": "75010",
      "libelleCommune": "Paris"
    }
  • SSO session token

    POST /v1/francetravail/sso osint

    Mints a web-SSO jeton so in-app webviews can open candidat pages as the signed-in usager.

    Auth: Authorization: Bearer access_token from POST /v1/francetravail/oauth/token. Issues a short-lived jeton for webviews.

    • jeton
    • identifiant
    POST /v1/francetravail/sso HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Accept: application/json
    {
      "jeton": "sso-8f21a4c2",
      "identifiant": "id-100442"
    }

Data categories

  • job offers
  • applications
  • CVs
  • counsellor
  • benefits
  • appointments
  • companies
  • auth-sessions

Where teams use this data

  • France vacancy feed into an ATS

    Poll GET /v1/francetravail/offres (motsCles, typeContrat, departement) so an applicant-tracking system can mirror idOffre, intitule, typeContrat, salaire and codeROME.

  • Candidature pipeline with recruiter AMIs

    Join POST /v1/francetravail/candidatures/offre (candidatureDetail, statut) with GET /v1/francetravail/amis (idAMI) so a career product can show which applies also have an open recruiter invitation.

  • CV completeness before apply

    Read GET /v1/francetravail/profil (identifiant, prenom, mail) and GET /v1/francetravail/documents (idGed, nomFichier) so a coach can tell a seeker why an apply would go out without a CV.

  • Counsellor slot and benefit snapshot

    Pull GET /v1/francetravail/conseiller (idConseiller, indemnisation) with GET /v1/francetravail/rendezvous so a case-management tool can place the next agency slot next to the ARE status.

Frequently asked questions

How does Parcours Emploi authenticate API calls?

GET /v1/francetravail/oauth/authorize starts PEAM OpenID (client_id, redirect_uri, scope=openid). POST /v1/francetravail/oauth/token exchanges the authorization code for access_token. Later calls send Authorization: Bearer with that access_token.

Which endpoints expose job offers and applications?

GET /v1/francetravail/offres returns idOffre, intitule, typeContrat, salaire, nomEntreprise, siret and codeROME. GET /v1/francetravail/offres/selection lists starred ads. POST /v1/francetravail/candidatures/offre creates a candidatureDetail; GET /v1/francetravail/amis lists recruiter invitations by idAMI.

What profile and CV fields are returned?

GET /v1/francetravail/profil returns identifiant, prenom, nomNaissance, mail, telephone, dateNaissance, codePostal and libelleCommune. GET /v1/francetravail/documents lists idGed and nomFichier in the GED.

Can the API see the counsellor, benefits and appointments?

Yes. GET /v1/francetravail/conseiller returns idConseiller and indemnisation. GET /v1/francetravail/rendezvous lists agency slots. GET /v1/francetravail/demarches pages idDemarche. GET /v1/francetravail/messages/unread is the inbox badge.

Apps similar to Parcours Emploi

  • InfoJobs - Job Search — InfoJobs is Adevinta's Spanish job board: offer search by province and telework, curriculum apply and application tracking.
  • Indeed Job Search — Indeed is a global job-search app: keyword search, apply, application status and recruiter messages.
  • Vagas de Emprego: Catho — Catho is a Brazilian vacancy board with curriculum, ranking scores and recruiter inbox threads.
  • OCC: Job Search — OCCMundial is Mexico's classifieds job board: vacancy search, CV, apply and recruiter-view screens.
  • Bumeran — Bumeran is Jobint's Spanish-language classifieds job board for Argentina, with avisos, CV apply and a net-salary calculator.
  • LinkedIn: Community & Network — LinkedIn is the professional network overlapping France Travail's seeker profile and apply loop.
  • Pôle emploi — The former Pôle emploi brand still appears on sister apps and the PEAM login the current France Travail client uses.

Topics

  • france travail api
  • parcours emploi data api
  • idOffre intitule codeROME
  • peam openid france travail
  • france job seeker api
  • francetravail candidatures
  • indemnisation conseiller
  • idGed cv france travail

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

Get a quote