Séparer un nom complet en prénom et nom de famille
Un champ de nom combiné, un appel API, deux champs propres — les particules, les titres et l'ordre inversé qui cassent une séparation écrite à la main sont déjà pris en charge, et le genre est dans la même réponse.
La réponse courte
- Envoie le champ combiné, récupère first_name et last_name — avec le genre, la précision et le nombre d'échantillons, dans la même réponse, pour un credit.
- Les particules nobiliaires (« van der », « von den », « de la ») ainsi que les titres académiques et professionnels sont traités au lieu de faire trébucher — et un « Rossi, Andrea » inversé se résout aussi, à partir des données de noms et non de la virgule.
- Là où les deux moitiés pourraient être l'une ou l'autre, la décision vient de la fréquence de chaque partie comme prénom face à sa fréquence comme nom de famille — pas de sa position dans la chaîne.
- Le mode strict renvoie un nom de famille vide au lieu d'une supposition quand le nom n'est pas dans la base : tu vois donc le trou.
Pourquoi couper à l'espace ne marche pas
Presque toutes les bases de code en ont une version : prendre le champ nom, couper aux espaces, le premier élément est le prénom, le dernier le nom de famille. Ça passe la relecture parce que les données de test sont en anglais, et ça déraille en silence au premier client qui ne l'est pas.
C'est la façon d'échouer qui coûte cher. Rien ne lève d'exception. Tu obtiens une base pleine de gens dont le nom de famille est « van », un mailing qui les salue ainsi, et aucune ligne de log qui pointe la cause.
Ce qui décide la séparation
Quatre choses, dans cet ordre — et la dernière est celle qu'une séparation à base de règles ne peut pas avoir, car elle exige de savoir comment les noms se répartissent réellement.
- Les titres partent d'abord. « Prof. Dr. », « Dipl.-Ing. », « Managing Director » et le reste d'une liste maintenue sont retirés avant toute autre décision, pour ne jamais finir dans un champ de nom.
- Les particules restent avec le nom de famille. « van », « van der », « van den », « von », « von der », « de », « de la », « du », « le », « di », « des » et leurs voisines sont reconnues comme faisant partie du nom auquel elles appartiennent.
- On ne fait pas confiance à la ponctuation pour porter l'ordre. La virgule de « Rossi, Andrea » est retirée avec les titres, et l'ordre est ensuite lu dans les données de noms — une virgule est une habitude de mise en forme, et beaucoup de listes l'emploient de façon incohérente. Dans l'import CSV et Excel, tu peux indiquer l'ordre de la colonne à la place, et un ordre indiqué est utilisé tel quel.
- L'ambiguïté est tranchée par les données. Chaque partie candidate est recherchée dans la base des prénoms et dans celle des noms de famille, et la partie qui se comporte bien plus comme un nom de famille que comme un prénom est le nom de famille.
Passe un code pays et la même comparaison se fait avec ce pays plutôt qu'avec tous les pays à la fois — c'est ce que tu veux quand tu sais déjà d'où vient la liste.
Comment l'appeler
Deux endpoints font cela, et celui qu'il te faut dépend de ton besoin du mode strict.
v2 — l'API actuelle
POST https://gender-api.com/v2/gender/by-full-name
{ "full_name": "Anna van der Berg", "country": "NL" }
{
"result_found": true,
"first_name": "Anna",
"last_name": "van der Berg",
"gender": "female",
"probability": 0.98,
"details": { "credits_used": 1, "samples": 8961, "duration": "33ms" }
}
v1 — quand tu as besoin du mode strict
Le mode strict n'existe que sur l'endpoint de séparation v1. Si un nom de famille vide compte plus pour toi que d'être sur l'API la plus récente, prends celui-là.
GET https://gender-api.com/get?split=Anna%20van%20der%20Berg&strict=true&key=…
- référence v2 nom complet — champs, erreurs, description OpenAPI.
- référence v1 séparation — le paramètre strict et ses réponses exactes.
- Clients officiels pour PHP, Python, Node, Java, Go, Ruby, Rust, Perl et .NET.
D'abord : cette colonne contient-elle vraiment des noms complets ?
Bon à savoir avant de traiter un fichier que tu n'as pas créé. Envoie un échantillon de 100 valeurs au maximum et tu récupères s'ils ressemblent à des noms complets — et cela ne coûte aucun credit.
POST https://gender-api.com/v2/name-format-detect
{ "names": ["Sophie Jones", "Lorenzo Carlos", "Anna van der Berg"] }
{
"is_fullname": true,
"fullname_probability": 1,
"validHints": [ … ]
}
Sois clair sur ce que cela mesure : fullname_probability est la part des valeurs envoyées qui comptent plus d'un mot, et is_fullname est cette part au-dessus de 0,6. C'est un jugement sur la colonne, pas sur chaque nom — exactement ce dont tu as besoin pour décider s'il faut séparer, et pas un substitut à la séparation elle-même.
Une colonne mixte est aussi une vraie réponse : certaines listes contiennent « Thomas » et « John Smith » côte à côte, et la séparation gère les deux sans que tu les tries d'abord.
Là où il a encore besoin de ton aide
Une séparation qui prétendrait gérer tous les noms du monde mentirait. Voici les cas où aucune règle ne résout la chaîne à elle seule.
Si tu contrôles le formulaire, la solution la moins chère n'est pas une API du tout : deux champs au lieu d'un, ou une indication que le format est « prénom, nom ». Tout ce qui suit vaut quand tu ne le contrôles pas.
- Nom de famille en premier. Qu'il y ait une virgule ou non, la lecture que soutiennent les données de noms l'emporte sur une règle de position — ce qui est juste bien plus souvent que faux, mais sans garantie. Si tu sais que toute la colonne a le nom de famille en premier, indique-le à l'import plutôt que de te fier à la ponctuation.
- Noms d'un seul mot. Un mononyme n'a pas de nom de famille à trouver. Le nom revient vide plutôt que de couper le prénom en deux.
- Translittération incohérente. Le même nom écrit de trois façons dans une liste se résout en trois noms, parce que c'est ce qu'il est dans les données.
- Prénoms composés sans trait d'union. « Anna Maria » reste groupé là où les données le soutiennent, mais une liste qui mélange « Anna Maria Rossi » et « Anna Rossi » ne sera pas uniforme.
Dans les quatre cas, un code pays restreint le problème, et le mode strict rend les lignes incertaines visibles au lieu de silencieusement plausibles. Un champ vide que tu peux filtrer vaut mieux qu'un champ faux que tu ne repères pas.
Toute une colonne d'un coup
Si les noms sont dans un tableur plutôt que dans une application, tu n'as pas besoin de l'API. Importe le fichier, désigne la colonne qui contient les noms combinés, et les parties séparées reviennent en nouvelles colonnes à côté de tes données — jusqu'à 10,000,000 lignes par CSV ou 100,000 par classeur Excel, et ton classeur revient intact.
- Importer un fichier CSV ou Excel — sans code, la mise en forme d'origine conservée.
- Détermination de genre en masse — les limites, le prix au volume et les réponses pour les achats.
- Tu travailles dans un tableur ou un CRM ? Il existe des intégrations prêtes à l'emploi pour Excel, Google Sheets, Shopify, HubSpot, Salesforce, Zapier et d'autres.
Questions fréquentes
Pourquoi ne pas simplement couper à l'espace ?
Parce que l'espace n'est pas la frontière. « Anna van der Berg » donne un nom de famille « van » au premier espace et un prénom « Anna van der » au dernier. Les deux sont faux, les deux passent très bien dans un test avec des noms anglais, et les deux échouent en silence dès qu'arrive un nom néerlandais, allemand, français, espagnol ou portugais.
Qu'est-ce qui décide où se fait la coupure ?
Les titres connus sont retirés d'abord, et les particules nobiliaires comme « van der », « von den » et « de la » restent avec le nom de famille. Ensuite, on met en balance la fréquence de chaque partie comme prénom et sa fréquence comme nom de famille — ce n'est donc pas la position du mot qui décide, ni la ponctuation : une virgule est retirée avec les titres et non lue comme un marqueur « nom de famille en premier ». Dans l'import CSV et Excel, tu peux indiquer l'ordre de la colonne explicitement, et il est alors utilisé tel quel.
Que se passe-t-il quand le nom de famille n'est pas dans la base ?
C'est à cela que sert le mode strict, sur l'endpoint v1. Avec le mode strict activé, le nom de famille revient vide plutôt que deviné : le trou est donc visible dans tes données. Sans lui, un nom de famille est tout de même extrait au mieux.
Est-ce que j'obtiens aussi le genre ?
Oui, dans la même réponse et pour le même credit — avec le nombre d'échantillons et la précision derrière. Séparer le nom et déterminer son genre, c'est un appel, pas deux.
Comment savoir si ma colonne contient bien des noms complets ?
Envoie un échantillon de 100 valeurs au maximum à l'endpoint name-format-detect. Il ne coûte aucun credit et te dit si la colonne ressemble à des noms complets, des prénoms ou un mélange — utile avant de décider comment traiter le fichier.
Combien coûte la séparation ?
Un credit par nom, comme une simple détermination de genre, à partir de €0.35 pour 1 000. Les credits s'achètent à l'avance et n'expirent pas.
Gère-t-il les noms non occidentaux ?
En partie, et il vaut mieux connaître les limites. Les noms écrits nom de famille en premier sans séparateur, les noms d'un seul mot et les noms translittérés de façon incohérente sont les cas difficiles — aucune règle ne les résout à partir de la chaîne seule. Envoyer un code pays aide, car la requête met alors les parties en balance avec ce pays plutôt qu'avec l'ensemble.
ESSAIE-LE SUR LES NOMS QUI CASSENT TA SÉPARATION
100 requêtes gratuites par mois, sans carte bancaire. Prends les vingt lignes que ton code actuel rate et commence par celles-là.
Documentation de l'API · Téléverse plutôt un fichier · Poser une question