Person Enrichment

Enrichir une personne

Lance un enrichissement. Réponse synchrone (200/402) ou asynchrone (202) - voir le flux async dans la description de l’API. Passez callbackUrl pour être notifié par webhook au lieu de poller.

post/search/unified

Request

  • Base URL: https://api.listar.fr
  • URL: https://api.listar.fr/search/unified
  • Auth: HTTP bearer

Request body

firstNamestring
lastNamestring
emailstring email
phonestring

Format souple : +33 6 12 34 56 78, 0612345678…

linkedinSlugstring

Slug du profil LinkedIn (la partie après /in/).

facebookSlugstring
facebookIdstring
doctolibSlugstring

Chemin de fiche Doctolib (<specialite>/<ville>/<praticien>, ex. medecin-generaliste/paris/jean-dupont) ou URL complète de la fiche. Son portrait sert de photo de RÉFÉRENCE au face match.

maltSlugstring
companystring
jobTitlestring

Intitulé de poste / spécialité - sert de contexte anti-homonyme.

citystring
postalCodestring

Code postal EXACT du contact - requis pour activer l'ancre acceptGeoExactUnique (livraison mobile ou email sur nom + code postal exact).

countrystring
birthYearinteger
gender'male' | 'female' | 'M' | 'F' | 'm' | 'f'
rppsIdstring

Identifiant national RPPS (11 chiffres) du professionnel de santé. ANCRE FORTE : une fiche de l'annuaire officiel partageant ce RPPS désigne la personne sans ambiguïté d'homonyme, indépendamment de la géo ou de la société.

industrystring

Secteur / activité - contexte anti-homonyme quand la raison sociale est opaque.

websitestring

Site de l'entreprise : son domaine corrobore les emails professionnels.

enrichmentType'both' | 'phone' | 'email'

Limiter l’enrichissement au téléphone ou à l’email. Seul le canal demandé est livré et facturé.

searchProEmailboolean

Livrer les emails PROFESSIONNELS. enrichmentType choisit le canal (tél / email) ; celui-ci choisit quel email dans ce canal.

searchPersoEmailboolean

Livrer les emails PERSONNELS (gmail, orange…). Avec enrichmentType: email, searchProEmail et searchPersoEmail ne peuvent pas être tous deux à false (400).

requirePersonalEmailProofboolean

Ne livrer (et ne facturer) un email PERSONNEL que sur PREUVE d'appartenance : face match entre la photo du compte (Gravatar / GitHub / Google / Teams) et le portrait de référence du contact, ou ancre qui désigne la personne elle-même (RPPS, slug LinkedIn fourni, email ou téléphone d'entrée partagé). Une adresse perso n'est rattachée ni à une société ni à une ville : sans cette option, elle peut être livrée sur une simple corroboration de l'entourage. Désactivé par défaut (opt-in) - l'activer réduit le volume d'emails perso livrés.

includeSharedEmailsboolean

Livrer aussi les boîtes PARTAGÉES d'entreprise (contact@, accueil@, pharmacieX@…) en plus des emails nominatifs. Désactivé par défaut (précision d'abord).

acceptGeoExactUniqueboolean

Livrer les mobiles ET les emails corroborés par nom + CODE POSTAL EXACT quand un SEUL est trouvé à ce code postal. L’unicité est comptée canal par canal : ≥2 mobiles distincts au même CP = homonymes → mobile non livré, sans effet sur l’email, et réciproquement. Les fixes en restent exclus. Élargit la couverture sur les listes géo-précises (gérants, professions libérales) ; la géo lâche (ville / rayon) reste insuffisante. Désactivé par défaut (opt-in) - risque de fuite homonyme si le code postal est PARTAGÉ (siège / arrondissement) et que la cible n’a pas la donnée en base. Passer true pour l’activer sur des listes où le CP est le domicile/commune d’exercice réel.

callbackUrlstring uri

URL HTTPS notifiée (POST enrichment.completed, signé HMAC) quand un enrichissement async se termine. Recommandé pour éviter le polling.

respondAsyncboolean

Répond tout de suite 202 avec l’id, sans attendre le résultat. Utile pour lancer beaucoup de recherches d’affilée et les récupérer ensuite via GET /search/results/{id} (ou par webhook). Facturation identique.

Example request

{
  "birthYear": 1985
}

Response

Résultat disponible immédiatement (payé par crédit ou gratuit). La réponse contient toujours searchResultId - même id que le flux async - ré-interrogeable via GET /search/results/{id}.

totalResultsinteger
excludedboolean

Présent et true quand la personne a exercé ses droits RGPD (effacement ou opposition) : profiles est vide et rien n’est facturé.

paidWithCreditboolean
creditDeductedinteger

Montant débité en centimes.

freeResultboolean
idstring

ID de la recherche, présent dans toutes les réponses (sync 200 comme async 202/402). Ré-interrogeable à tout moment via GET /search/results/{id} - vous pouvez donc traiter sync et async avec le même code.

searchResultIdstring

Alias historique de id (même valeur). Conservé pour compatibilité - préférez id.

Example response

{
  "query": {
    "birthYear": 1985
  },
  "totalResults": 1,
  "profiles": [
    {
      "phones": [
        {
          "number": "+33612345678",
          "isVirtual": true
        }
      ],
      "emails": [
        {
          "type": "professional"
        }
      ]
    }
  ],
  "bestPhone": {
    "number": "+33612345678",
    "isVirtual": true
  },
  "bestEmail": {
    "type": "professional"
  },
  "paidWithCredit": true,
  "creditDeducted": 60
}

Changes

No recorded changes to this operation across all 1 revision of this API.