Een volledige naam splitsen in voor- en achternaam
Eén gecombineerd naamveld, één API-call, twee schone velden — de tussenvoegsels, titels en omgekeerde volgorde waar een zelfgeschreven splitsing op stukloopt zijn al afgehandeld, en het geslacht zit in dezelfde respons.
Het korte antwoord
- Stuur het gecombineerde veld en krijg first_name en last_name terug — plus het geslacht, de nauwkeurigheid en het aantal samples, in dezelfde respons, voor één credit.
- Tussenvoegsels (“van der”, “von den”, “de la”) en academische en functietitels worden verwerkt in plaats van een struikelblok — en een omgekeerde “Rossi, Andrea” lost ook op, uit de naamdata en niet uit de komma.
- Waar beide helften het een of het ander kunnen zijn, komt de beslissing uit hoe vaak elk deel als voornaam voorkomt tegen hoe vaak als achternaam — niet uit de positie in de tekenreeks.
- Strict mode geeft een lege achternaam terug in plaats van een gok wanneer de achternaam niet in de database staat, zodat je het gat ziet.
Waarom splitsen op de spatie niet werkt
Bijna elke codebase heeft er een versie van: neem het naamveld, splits op witruimte, het eerste element is de voornaam, het laatste de achternaam. Het komt door de review omdat de testdata Engels is, en het gaat geruisloos mis bij de eerste klant die dat niet is.
Duur wordt het door de manier waarop het faalt. Er wordt geen exception gegooid. Je houdt een database over vol mensen met achternaam “van”, een mailmerge die ze daarmee begroet, en geen enkele logregel die naar de oorzaak wijst.
Wat de splitsing bepaalt
Vier dingen, in deze volgorde — en het laatste kan een regelgebaseerde splitsing niet hebben, want het vraagt kennis van hoe namen werkelijk verdeeld zijn.
- Titels gaan er eerst af. “Prof. Dr.”, “Dipl.-Ing.”, “Managing Director” en de rest van een onderhouden lijst worden verwijderd voordat er iets anders wordt beslist, zodat ze nooit in een naamveld belanden.
- Tussenvoegsels blijven bij de achternaam. “van”, “van der”, “van den”, “von”, “von der”, “de”, “de la”, “du”, “le”, “di”, “des” en hun buren worden erkend als deel van de achternaam waar ze bij horen.
- De interpunctie krijgt de volgorde niet toevertrouwd. De komma in “Rossi, Andrea” wordt samen met de titels verwijderd, en de volgorde wordt daarna uit de naamdata gelezen — een komma is een opmaakgewoonte, en heel veel lijsten gebruiken hem inconsistent. Bij de CSV- en Excel-upload kun je in plaats daarvan de volgorde van de kolom opgeven, en een opgegeven volgorde wordt gebruikt zoals opgegeven.
- Twijfelgevallen beslecht de data. Elk kandidaat-deel wordt zowel in de voornamen- als in de achternamendatabase opgezocht, en het deel dat zich veel meer als achternaam dan als voornaam gedraagt is de achternaam.
Geef een landcode mee en dezelfde vergelijking gebeurt tegen dat land in plaats van tegen alle landen tegelijk — en dat wil je als je al weet waar de lijst vandaan komt.
Hoe je het aanroept
Twee endpoints doen dit, en welke je wilt hangt af van of je strict mode nodig hebt.
v2 — de huidige API
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 — als je strict mode nodig hebt
Strict mode bestaat alleen op het v1-splitsendpoint. Als een lege achternaam je meer waard is dan op de nieuwere API zitten, neem dan deze.
GET https://gender-api.com/get?split=Anna%20van%20der%20Berg&strict=true&key=…
- v2-referentie voor volledige namen — velden, fouten, OpenAPI-beschrijving.
- v1-splitsreferentie — de strict-parameter en de precieze responses.
- Officiële clients voor PHP, Python, Node, Java, Go, Ruby, Rust, Perl en .NET.
Eerst: staan er in die kolom eigenlijk wel volledige namen?
Goed om te weten voordat je een bestand verwerkt dat je zelf niet hebt gemaakt. Stuur een steekproef van maximaal 100 waarden en je krijgt terug of ze op volledige namen lijken — en het kost geen credits.
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": [ … ]
}
Wees duidelijk over wat dit meet: fullname_probability is het aandeel van de verstuurde waarden dat uit meer dan één woord bestaat, en is_fullname is dat aandeel boven 0,6. Het is een oordeel over de kolom, niet over elke naam afzonderlijk — precies wat je nodig hebt bij de beslissing of je überhaupt splitst, en geen vervanging van de splitsing zelf.
Een gemengde kolom is ook een echt antwoord: sommige lijsten hebben “Thomas” en “John Smith” naast elkaar, en de splitsing kan met beide om zonder dat je ze eerst sorteert.
Waar het nog je hulp nodig heeft
Een splitsing die zou beweren elke naam ter wereld aan te kunnen, zou liegen. Dit zijn de gevallen waarin geen enkele regel de tekenreeks op eigen kracht oplost.
Als jij het formulier beheert, is de goedkoopste oplossing helemaal geen API: twee velden in plaats van één, of een hint dat het formaat “voornaam, achternaam” is. Alles hieronder geldt als je het niet beheert.
- Achternaam eerst. Met of zonder komma wint de lezing die de naamdata ondersteunt van een regel over positie — en die zit veel vaker goed dan fout, maar het is geen garantie. Als je weet dat de hele kolom de achternaam eerst heeft, geef dat dan op bij de upload in plaats van op de interpunctie te vertrouwen.
- Namen van één woord. Bij een mononiem is er geen achternaam te vinden. De achternaam komt leeg terug in plaats van de voornaam in twee te knippen.
- Inconsistente transliteratie. Dezelfde naam die in een lijst op drie manieren gespeld is, lost op als drie namen, want dat is wat het in de data is.
- Dubbele voornamen zonder streepje. “Anna Maria” blijft bij elkaar waar de data dat ondersteunt, maar een lijst die “Anna Maria Rossi” en “Anna Rossi” door elkaar heeft, wordt niet uniform.
In alle vier gevallen versmalt een landcode het probleem, en maakt strict mode de onzekere rijen zichtbaar in plaats van stilletjes plausibel. Een leeg veld dat je kunt filteren is beter dan een fout veld dat je niet opmerkt.
Een hele kolom in één keer
Staan de namen in een spreadsheet en niet in een applicatie, dan heb je de API niet nodig. Upload het bestand, wijs de kolom met de gecombineerde namen aan, en de gesplitste delen komen terug als nieuwe kolommen naast je data — tot 10,000,000 rijen per CSV of 100,000 per Excel-werkmap, en je werkmap komt ongeschonden terug.
- Upload een CSV- of Excel-bestand — geen code, met de oorspronkelijke opmaak behouden.
- Geslachtsbepaling in bulk — de limieten, de prijs bij volume en de antwoorden voor inkoop.
- Werk je in een spreadsheet of een CRM? Er zijn kant-en-klare integraties voor Excel, Google Sheets, Shopify, HubSpot, Salesforce, Zapier en meer.
Veelgestelde vragen
Waarom niet simpelweg splitsen op de spatie?
Omdat de spatie niet de grens is. “Anna van der Berg” levert op de eerste spatie de achternaam “van” en op de laatste de voornaam “Anna van der”. Beide zijn fout, beide zien er in een test met Engelse namen prima uit, en beide falen geruisloos zodra er een Nederlandse, Duitse, Franse, Spaanse of Portugese achternaam langskomt.
Wat bepaalt waar de splitsing komt?
Eerst worden bekende titels verwijderd, en tussenvoegsels zoals “van der”, “von den” en “de la” blijven bij de achternaam. Daarna wordt afgewogen hoe vaak elk deel als voornaam voorkomt tegen hoe vaak het als achternaam voorkomt — de woordpositie beslist het dus niet, en de interpunctie ook niet: een komma wordt samen met de titels verwijderd en niet gelezen als markering voor “achternaam eerst”. Bij de CSV- en Excel-upload kun je de volgorde van de kolom rechtstreeks opgeven, en dan wordt die gebruikt zoals opgegeven.
Wat gebeurt er als de achternaam niet in de database staat?
Daar is strict mode voor, op het v1-endpoint. Met strict mode aan komt de achternaam leeg terug in plaats van gegokt, dus het gat is zichtbaar in je data. Zonder strict mode wordt er alsnog een achternaam uitgehaald, zo goed als het gaat.
Krijg ik ook het geslacht?
Ja, in dezelfde respons en voor diezelfde ene credit — samen met het aantal samples en de nauwkeurigheid erachter. De naam splitsen en het geslacht bepalen is één call, geen twee.
Hoe weet ik of mijn kolom eigenlijk volledige namen bevat?
Stuur een steekproef van maximaal 100 waarden naar het name-format-detect-endpoint. Het kost geen credits en zegt of de kolom op volledige namen, voornamen of een mengeling lijkt — handig voordat je beslist hoe je het bestand verwerkt.
Wat kost het splitsen?
Eén credit per naam, hetzelfde als een gewone geslachtsbepaling, vanaf €0.35 per 1.000. Credits koop je vooraf en ze verlopen niet.
Kan het ook met niet-westerse namen om?
Deels, en het is beter om de grenzen te kennen. Namen met de achternaam eerst zonder scheidingsteken, namen van één woord en inconsistent getranslitereerde namen zijn de moeilijke gevallen — geen enkele regel lost ze op uit de tekenreeks alleen. Een landcode meesturen helpt, want de opvraging weegt de delen dan af tegen dat land in plaats van tegen alles.
PROBEER HET OP DE NAMEN WAAR JE SPLITSING OP STUKLOOPT
100 gratis opvragingen per maand, zonder creditcard. Neem de twintig rijen die je huidige code fout doet en begin daarmee.
API-documentatie · Upload in plaats daarvan een bestand · Stel een vraag