Gids voor verrijking van e-mailgegevens

Lees als Markdown

Een naam en geslachtsindicatie uit een e-mailadres halen

Haal een kandidaatnaam uit een e-mailadres en vul uw workflow in Excel, Google Sheets of de API aan met de voorspelling en de bijbehorende bronvelden, zonder gegevens te vervangen die de persoon zelf heeft opgegeven.

Workflow voor verrijking van e-mailgegevens

Zet e-mailadressen om in gestructureerde gegevens

Verstuur een ondersteund adres en bekijk wat GenderAPI teruggeeft: kandidaatnaam, geslachtsindicatie, landcontext en betrouwbaarheid.

  • Kandidaatnaam
  • Geslachtsindicatie
  • Landcontext
  • Betrouwbaarheid
API-documentatie voor e-mailadressen
GenderAPI-workflow die een e-mailadres omzet in gestructureerde klantgegevens
Een e-mailadres kan een kandidaatnaam en een voorspelling opleveren; sommige velden kunnen null blijven.

Probeer de V2-API

Analyseer een e-mailadres

Dataset + AI

Verstuur een waarde en bekijk het volledige antwoord, inclusief onbekende resultaten en gebruikte credits.

Altijd AI (standaard): 2 credits, ook als het resultaat onbekend is. Fallback: 1 credit, inclusief de AI-fallback en onbekende resultaten. Uit, alleen dataset (zonder AI): 1 credit per voltooid verzoek, ook als het resultaat onbekend is. Met bijnaaminterpretatie: 1 credit als het resultaat uit de dataset komt, of in totaal 2 als AI wordt gebruikt, ook als het resultaat onbekend is.

De verstuurde waarde (het volledige e-mailadres) wordt naar GenderAPI.io verstuurd en doorgegeven aan de geconfigureerde AI-dienst in de modus Altijd AI (standaard) of als de AI-fallback nodig is, maar niet in de modus Uit. Meer informatie over de verwerking van gegevens.

Geen API-sleutel opgeslagen. U kunt de gedeelde IP-proefperiode gebruiken zolang er credits beschikbaar zijn.

Het antwoord hieronder is een echt antwoord, opgehaald op 1 oktober 2026. Klik op Analyseren om een verzoek te versturen.

Echt V2-antwoord · opgehaald op 1 oktober 2026
NaamJeroen
GeslachtMan
Betrouwbaarheid98%
BronAI-model
Gebruikte credits2

Dit echte antwoord is opgehaald op 1 oktober 2026; alleen het accountsaldo is vervangen. Live waarden kunnen afwijken. Een voorspelling is geen bevestigde identiteit.

Integratieopties

Kies waar u e-mailgegevens verwerkt

Microsoft ExcelInstalleer de add-on →Google SheetsOpen de Marketplace →ShopifyBekijk de app →Excel / CSV in batchOpen de tool →AirtableBekijk de extensie →REST APIBekijk het endpoint →

Microsoft Excel

Verwerk kolommen met adressen met de add-on voor Excel

Kies de methode voor e-mailadressen en koppel daarna de bronkolom en de resultaatvelden. Gebruik GENDER.FROM_EMAIL voor dynamische zoekopdrachten in cellen of het zijpaneel voor blijvende resultaten.

Videohandleiding om namen uit e-mailadressen te halen in ExcelBekijk de videohandleiding voor ExcelYouTube · Opent in een nieuw tabblad

Google Sheets

Analyseer e-mailadressen met de add-on of een formule

Gebruik de add-on voor bestaande rijen, een ondersteunde workflow voor nieuwe rijen of de formule GENDER voor zoekopdrachten in afzonderlijke cellen.

REST API

Integreer de analyse van e-mailadressen in uw backend

Roep het geauthenticeerde endpoint voor e-mailadressen aan vanaf de server, zonder de API-sleutel in de browser of in openbare code bloot te stellen. Verwerk het antwoordschema, de foutcodes en het creditverbruik expliciet.

Voorbeeld van naam- en geslachtsvelden die uit een e-mailadres zijn gehaald
Schermafbeelding van resultaten uit een eerdere integratie; deze toont niet het huidige V2-antwoordcontract.

Nauwkeurigheid en verantwoord gebruik

Dwing geen resultaat af als het adres geen naam bevat

Functionele adressen, willekeurige identifiers en gedeelde mailboxen bieden mogelijk geen betrouwbaar signaal. Bewaar data.result_status, data.reason en data.confidence en verwerk onzekere resultaten afzonderlijk.

V2-implementatiegids

Bewaar brongegevens en voorspelling afzonderlijk

Bewaar de oorspronkelijke identifier van het record. De API opent geen profiel, controleert niet wie de houder van een account is en bevestigt geen identiteit. Verstuur alleen landcontext als u over een betrouwbaar gegeven beschikt; leid het land niet af uit het domein of de taal van de website.

RecordVeldInterpretatie
Bronrecordcontact_id / original_emailBewaar de brongegevens in uw eigen systeem en vervang een naam die de persoon zelf heeft opgegeven niet door de voorspelling. Dit zijn geen velden uit het API-antwoord.
Kandidaatnaamdata.name / data.matchDe gekozen naam kan null zijn. Er is geen veld voor een geverifieerde achternaam, en een match bewijst niet wie de houder van de mailbox is.
Voorspellingdata.gender / data.result_status / data.reasonSla een onbekend resultaat op als native JSON-null. Een datasetitem met een gelijke stand kan een kandidaatnaam zonder geslacht bevatten.
Onderbouwingdata.source / data.confidence_kind / data.confidence / data.sample_countconfidence ligt tussen 0 en 1. De frequentie in de dataset en een AI-score zijn verschillende maatstaven; bij AI is sample_count null.
Bewerkingslogmeta.request_id / meta.usageBewaar het id en de afschrijvingsstatus. Een verloren antwoord betekent niet dat de bewerking gratis was of is mislukt.

De zoekopdracht in de dataset analyseert het deel vóór het @-teken, verwijdert een achtervoegsel dat met + begint en beoordeelt de kandidaatnamen. Een standaardverzoek kan bij samengestelde delen bovendien een beperkt aantal kandidaten op basis van voorvoegsel en achtervoegsel toevoegen. Komen meerdere items overeen, dan wordt het item met de hoogste opgeslagen telling gekozen; die kandidaat is niet per se de echte naam van de persoon. Als u een land meestuurt, krijgt per kandidaat het item voor dat land de voorkeur; ontbreekt dat, dan kan een globaal item worden gebruikt. Controleer data.match.scope en country_source.

Kies de verwerkingsmodus en de kosten in credits

OptieVerwerkingKosten per succesvol item
options.ai_mode: offAlleen dataset1 credit
options.ai_mode: fallbackEerst de dataset; als daar geen geslacht wordt bepaald, de standaard AI-fallbackIn totaal 1 credit, inclusief AI
options.ai_mode: alwaysRechtstreeks naar AI2 credits
forceToGenderize: trueEerst de dataset, daarna de interpretatie van de bijnaam zonder dat een echte voornaam nodig is1 als de dataset volstaat; in totaal 2 als AI wordt gebruikt

Voor een los verzoek is fallback de standaardwaarde, voor batchitems off. forceToGenderize is optioneel voor namen, e-mailadressen en gebruikersnamen; laat ai_mode in dat geval weg of gebruik fallback, want de optie kan niet worden gecombineerd met off en always. Ook succesvolle unknown-resultaten worden gefactureerd. Een positief beginsaldo is voldoende om te starten; na afloop van de bewerking kan het saldo negatief worden.

Als AI wordt gebruikt, ontvangt AI het volledige verstuurde adres, inclusief het domein en het achtervoegsel na +, ook als AI de opdracht krijgt die delen te negeren. forceToGenderize kan een koppeling aan een geslacht opleveren zonder dat een echte voornaam is gevonden; dat betekent niet dat er in uw CRM een geverifieerde naam is geëxtraheerd.

Test eerst een e-mailverzoek dat alleen de dataset gebruikt

Voorbeeldinvoer garandeert geen bepaalde voorspelling. Stel GENDERAPI_API_KEY in de serveromgeving in en plaats de sleutel niet in openbare clientcode. V1 en V2 gebruiken dezelfde accountsleutel en hetzelfde saldo. Controleer de sleutel met /api/v2/usage en ga na dat meta.access.mode de waarde api_key heeft.

Kies een programmeertaal. Stel uw API-sleutel in, voer daarna het voorbeeld uit op uw server.

Elk voorspellingsverzoek is een nieuwe betaalde bewerking, ook als het een nieuwe poging is. Deze voorbeelden proberen het niet automatisch opnieuw. Controleer de afschrijvingsstatus voordat u een nieuw verzoek verstuurt.

Voordat u het uitvoert: toegang en foutafhandeling

Voer deze voorbeelden uit op uw server. Stel in de procesomgeving GENDERAPI_API_KEY in op uw bestaande API-sleutel. Controleer of meta.access.mode api_key is: een niet-herkende sleutel kan terugvallen op de IP-proefperiode.

Bij JSON-antwoorden met HTTP 4xx en 5xx blijft de body van de fout behouden en eindigt het voorbeeld met een afsluitcode die niet nul is. Controleer code, action en meta.usage.billing_status voordat u het opnieuw probeert.

Handleiding voor fouten en nieuwe pogingen →
cURL
curl --silent --show-error --fail-with-body --max-time 30 \
  --request POST 'https://api.genderapi.io/api/v2/gender' \
  --header "Authorization: Bearer ${GENDERAPI_API_KEY:?Set GENDERAPI_API_KEY}" \
  --header 'Content-Type: application/json' \
  --data '{
  "type": "email",
  "value": "alice.smith@example.com",
  "options": {
    "ai_mode": "off"
  }
}'

cURL 7.76+ in een POSIX-shell. Voer uit in uw terminal. Documentatie van de runtime

JavaScript / Node.js
// Server-side Node.js. Save as example.mjs.
const apiKey = process.env.GENDERAPI_API_KEY;
if (!apiKey) throw new Error("Set GENDERAPI_API_KEY");
const body = {
  "type": "email",
  "value": "alice.smith@example.com",
  "options": {
    "ai_mode": "off"
  }
};

const response = await fetch("https://api.genderapi.io/api/v2/gender", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify(body),
  signal: AbortSignal.timeout(30_000),
  redirect: "error",
});
const raw = await response.text();
if (!(response.headers.get("content-type") ?? "").includes("json")) {
  throw new Error(`HTTP ${response.status}: expected JSON; request ID ${response.headers.get("x-request-id")}`);
}
const result = JSON.parse(raw); // Also accepts application/problem+json.
if (!response.ok) {
  console.error(`HTTP ${response.status}`, result);
  process.exitCode = 1; // A retry is a new operation; inspect billing first.
} else {
  console.log(JSON.stringify(result, null, 2));
  // For batches, inspect every item: HTTP 200 may contain item errors.
}

Node.js 22+; ingebouwde fetch. Sla op als example.mjs en voer node example.mjs uit. Documentatie van de runtime

Python
import json
import os
import sys
import urllib.error
import urllib.request

api_key = os.environ.get("GENDERAPI_API_KEY")
if not api_key:
    raise RuntimeError("Set GENDERAPI_API_KEY")
body = json.loads("{\"type\":\"email\",\"value\":\"alice.smith@example.com\",\"options\":{\"ai_mode\":\"off\"}}")

class NoRedirect(urllib.request.HTTPRedirectHandler):
    def redirect_request(self, req, fp, code, msg, headers, newurl):
        return None

request = urllib.request.Request(
    "https://api.genderapi.io/api/v2/gender",
    method="POST",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": "Bearer " + api_key,
        "Content-Type": "application/json",
    },
)
opener = urllib.request.build_opener(NoRedirect())
try:
    response = opener.open(request, timeout=30)
except urllib.error.HTTPError as error:
    response = error  # Keep the Problem Details body on non-2xx responses.
with response:
    status = response.status
    raw = response.read().decode("utf-8")
    if "json" not in response.headers.get("Content-Type", ""):
        raise RuntimeError(f"HTTP {status}: expected a JSON response")
    result = json.loads(raw)
print(json.dumps(result, indent=2), file=sys.stderr if status >= 300 else sys.stdout)
if not 200 <= status < 300:
    sys.exit(1)  # Inspect code, action and billing before retrying.
# For batches, inspect every item even when HTTP status is 200.

Python 3.10+; standaardbibliotheek. Sla op als example.py en voer python3 example.py uit. Documentatie van de runtime

PHP
<?php
$apiKey = getenv('GENDERAPI_API_KEY');
if (!$apiKey) {
    throw new RuntimeException('Set GENDERAPI_API_KEY');
}
$body = json_decode('{"type":"email","value":"alice.smith@example.com","options":{"ai_mode":"off"}}', true, 512, JSON_THROW_ON_ERROR);

$ch = curl_init('https://api.genderapi.io/api/v2/gender');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => false,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode($body, JSON_THROW_ON_ERROR),
]);
$raw = curl_exec($ch);
if ($raw === false) {
    throw new RuntimeException(curl_error($ch));
}
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE) ?: '';
curl_close($ch);
if (strpos($contentType, 'json') === false) {
    throw new RuntimeException("HTTP $status: expected a JSON response");
}
$result = json_decode($raw, true, 512, JSON_THROW_ON_ERROR);
$output = json_encode($result, JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR) . PHP_EOL;
if ($status < 200 || $status >= 300) {
    fwrite(STDERR, $output); // Preserve the Problem Details body.
    exit(1);
}
echo $output;
// For batches, inspect every item; HTTP 200 can contain item errors.

PHP 8+ met de cURL-extensie. Sla op als example.php en voer php example.php uit. Documentatie van de runtime

Java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.time.Duration;

public class GenderApiExample {
    private static String requiredEnv(String name) {
        String value = System.getenv(name);
        if (value == null || value.isBlank()) throw new IllegalStateException("Set " + name);
        return value;
    }

    public static void main(String[] args) throws Exception {
        String apiKey = requiredEnv("GENDERAPI_API_KEY");
        String body = "{\"type\":\"email\",\"value\":\"alice.smith@example.com\",\"options\":{\"ai_mode\":\"off\"}}";
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .followRedirects(HttpClient.Redirect.NEVER)
            .build();
        HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.genderapi.io/api/v2/gender"))
            .timeout(Duration.ofSeconds(30))
            .header("Authorization", "Bearer " + apiKey)
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(body, StandardCharsets.UTF_8))
            .build();
        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8));
        if (!response.headers().firstValue("content-type").orElse("").contains("json")) {
            throw new IllegalStateException("HTTP " + response.statusCode() + ": expected JSON");
        }
        // JSON text; parse with your application's JSON library when integrating.
        if (response.statusCode() < 200 || response.statusCode() >= 300) {
            System.err.println(response.body()); // Includes Problem Details.
            System.exit(1);
        }
        System.out.println(response.body());
        // For batches, inspect each item's data or error, including on HTTP 200.
    }
}

Java 17+; standaard HTTP-client. Sla op als GenderApiExample.java en voer java GenderApiExample.java uit. Documentatie van de runtime

C# / .NET
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;

string RequiredEnv(string name) =>
    !string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable(name))
        ? Environment.GetEnvironmentVariable(name)!
        : throw new InvalidOperationException($"Set {name}");

var apiKey = RequiredEnv("GENDERAPI_API_KEY");
using var handler = new HttpClientHandler { AllowAutoRedirect = false };
using var client = new HttpClient(handler) { Timeout = TimeSpan.FromSeconds(30) };
using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.genderapi.io/api/v2/gender");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);
request.Content = new StringContent("{\"type\":\"email\",\"value\":\"alice.smith@example.com\",\"options\":{\"ai_mode\":\"off\"}}", Encoding.UTF8, "application/json");

using var response = await client.SendAsync(request);
var raw = await response.Content.ReadAsStringAsync();
if (!(response.Content.Headers.ContentType?.MediaType?.Contains("json") ?? false))
    throw new InvalidOperationException($"HTTP {(int)response.StatusCode}: expected JSON");
using var result = JsonDocument.Parse(raw);
if (!response.IsSuccessStatusCode)
{
    Console.Error.WriteLine(result.RootElement); // Preserve Problem Details.
    Environment.ExitCode = 1;
}
else
{
    Console.WriteLine(result.RootElement);
    // For batches, inspect every item even on HTTP 200.
}

.NET 8+-consoleapplicatie. Gebruik als Program.cs in een consoleproject en voer daarna dotnet run uit. Documentatie van de runtime

Go
package main

import (
    "encoding/json"
    "fmt"
    "io"
    "net/http"
    "os"
    "strings"
    "time"
)

func requiredEnv(name string) string {
    value := os.Getenv(name)
    if value == "" { panic("Set " + name) }
    return value
}

func run() error {
    apiKey := requiredEnv("GENDERAPI_API_KEY")
    body := "{\"type\":\"email\",\"value\":\"alice.smith@example.com\",\"options\":{\"ai_mode\":\"off\"}}"
    request, err := http.NewRequest("POST", "https://api.genderapi.io/api/v2/gender", strings.NewReader(body))
    if err != nil { return err }
    request.Header.Set("Authorization", "Bearer " + apiKey)
    request.Header.Set("Content-Type", "application/json")
    client := &http.Client{
        Timeout: 30 * time.Second,
        CheckRedirect: func(req *http.Request, via []*http.Request) error {
            return http.ErrUseLastResponse
        },
    }
    response, err := client.Do(request)
    if err != nil { return err }
    defer response.Body.Close()
    raw, err := io.ReadAll(response.Body)
    if err != nil { return err }
    if !strings.Contains(response.Header.Get("Content-Type"), "json") || !json.Valid(raw) {
        return fmt.Errorf("HTTP %d: expected a JSON response", response.StatusCode)
    }
    if response.StatusCode < 200 || response.StatusCode >= 300 {
        return fmt.Errorf("HTTP %d: %s", response.StatusCode, raw)
    }
    fmt.Println(string(raw))
    // For batches, inspect every item even on HTTP 200.
    return nil
}

func main() {
    if err := run(); err != nil {
        fmt.Fprintln(os.Stderr, err) // Keep Problem Details for error handling.
        os.Exit(1)
    }
}

Go 1.22+; standaardbibliotheek. Sla op als main.go en voer go run main.go uit. Documentatie van de runtime

Verwerk lijstresultaten en herhaalde verzoeken

POST /api/v2/gender/batch accepteert maximaal 50 items met een API-sleutel en 10 met de IP-proefperiode. Geef elk item eigen waarden voor type, value en options. Wilt u de standaard AI-fallback gebruiken, geef fallback dan bij elk item expliciet op. id moet binnen de batch uniek zijn; index begint binnen de verstuurde batch bij nul. Bewaar uw eigen identifiers voor de taak en de bronrij afzonderlijk.

HTTP 200 betekent niet dat alle items zijn geslaagd. Verwerk identified-, unknown- en error-resultaten afzonderlijk; meta.summary.succeeded telt zowel identified als unknown. Beoordeel data.gender, source, confidence_kind, confidence, match en reason in samenhang. Behandel een AI-score en een frequentie in de dataset niet als gelijkwaardig.

Heeft meta.usage.billing_status de waarde confirmed, herhaal dan alleen operationele fouten die een nieuw verzoek toestaan. Is de status unconfirmed of is het antwoord verloren gegaan, stop dan en controleer de afschrijving. Hetzelfde item opnieuw versturen, ook een succesvol unknown-resultaat, is een nieuwe betaalde bewerking; verstuur nooit blindelings de hele lijst opnieuw.

Contract voor batchverzoeken · Velden in het antwoord · AI-opties · Nauwkeurigheid en betrouwbaarheid beoordelen · Privacybeleid

De add-ons voor Excel en Google Sheets en andere kant-en-klare integraties kunnen een eigen verbinding en een eigen resultaatformaat gebruiken. Ga er niet van uit dat hun uitvoer dit V2-JSON-schema volgt; raadpleeg de actuele handleiding van de betreffende integratie.

Veelgestelde vragen

Naam en geslacht uit e-mailadressen

Kan er een naam uit een e-mailadres worden gehaald?

GenderAPI kan bij ondersteunde persoonlijke adressen een kandidaatnaam uit het deel vóór het @-teken halen en, als die beschikbaar zijn, indicaties voor geslacht, land en betrouwbaarheid teruggeven. De kandidaat is een afleiding en geen geverifieerde naam van de houder van de mailbox.

Levert elk adres een naam op?

Nee. Functionele adressen, willekeurige identifiers en lokale delen zonder echte naam bieden mogelijk geen betrouwbaar signaal. Controleer data.result_status, data.reason, data.confidence en data.confidence_kind in het V2-antwoord.

Worden zoekopdrachten op e-mailadres opgeslagen?

Volgens het gepubliceerde beleid worden zoekopdrachten op e-mailadres niet bewaard als herbruikbare zoekopdrachtgegevens. Voor afzonderlijke server-, authenticatie- en beveiligingslogbestanden gelden de bewaartermijnen uit het privacybeleid. Gebruik geen gevoelige persoonsgegevens in de openbare demo.

Kan ik de functie in Excel en Google Sheets gebruiken?

Ja. Kolommen met adressen kunnen worden verwerkt met de add-on voor Excel, de add-on voor Google Sheets of de Excel- en CSV-tool voor bestanden. Deze integraties hebben een eigen resultaatformaat dat afwijkt van de V2-JSON.

Welke velden geeft de API terug?

V2 geeft data.name, data.gender, data.match en de velden voor bron en betrouwbaarheid terug, en in meta ook het id van de bewerking en het creditverbruik. De kandidaatnaam of het geslacht kan null zijn. Er is geen veld voor een geverifieerde achternaam.

Wanneer wordt AI gebruikt?

Bij een los V2-verzoek is de standaard AI-fallback standaard actief. In deze demo kunt u een standaardverzoek of forceToGenderize gebruiken; off en always stelt u in het API-verzoek in. De standaard AI-fallback kost in totaal 1 credit, always 2. Met forceToGenderize wordt 1 credit afgeschreven als de dataset het verzoek oplost, of in totaal 2 als AI wordt gebruikt; het resultaat kan unknown blijven.

Kan ik de dienst gratis proberen?

Accounts bevatten 200 gratis credits per dag, en de gedeelde IP-proefperiode biedt 10 credits per openbaar IP-adres per 24 uur. Een ontbrekende of niet herkende sleutel kan terugvallen op de IP-proefperiode; controleer het veld meta.access.mode in het antwoord. Het gaat om credits, niet om een aantal verzoeken.

Gepubliceerd: 14 juni 2025Laatst beoordeeld:

Richt de API-workflow in

Test de analyse van e-mailadressen in uw backend

Gebruik het geauthenticeerde endpoint voor e-mailadressen en bewaar de API-sleutel uitsluitend aan de serverzijde.

API-documentatie voor e-mailadressen

Doorgaan met testen

Gebruik je GenderAPI-sleutel

Plak de API-sleutel uit je GenderAPI-account om verder te testen wanneer de gedeelde credits van de IP-proefperiode van 24 uur op zijn. Het opslaan van de sleutel verstuurt geen verzoek; verstuur het verzoek daarna opnieuw.

Wordt alleen in dit browsertabblad bewaard en verwijderd wanneer je het tabblad sluit.