CLIENTS AND CODING EXAMPLES

Here you can find a list of available clients for our API and some coding examples for different languages. Feel free to use all the provided examples within your code.

PHP with composer

First install our library with composer:

composer require gender-api/client
<?php

use GenderApi\Client as GenderApiClient;

$client = new GenderApiClient('your-api-key');

// Simple gender lookup
$result = $client->getByFirstName('Elisabeth');

if ($result->genderFound()) {
    echo $result->getGender();    // "female"
    echo $result->getAccuracy();  // 99
}

// First name with country (e.g., "Andrea" varies by country)
$result = $client->getByFirstNameAndCountry('Andrea', 'IT');
echo $result->getGender(); // "male" (in Italy)

// Full name with automatic first/last name splitting
$result = $client->getByFirstNameAndLastName('Sandra Miller');

echo $result->getFirstName(); // "Sandra"
echo $result->getLastName();  // "Miller"
echo $result->getGender();    // "female"

// Email address analysis
$result = $client->getByEmailAddress('elisabeth.smith@company.com');
echo $result->getGender();  // "female"

// Batch processing - multiple names in one call
$names = ['Michael', 'Sarah', 'Kim'];
$results = $client->getByMultipleNames($names);

foreach ($results as $result) {
    printf(
        "%s: %s (%d%% confidence)\n",
        $result->getFirstName(),
        $result->getGender(),
        $result->getAccuracy()
    );
}

See full client documentation here:

https://github.com/markus-perl/gender-api-client

First install our library with npm:

See full client documentation here:

https://github.com/markus-perl/gender-api-client-npm

First install our library with npm:

See full client documentation here:

https://github.com/markus-perl/gender-api-client-npm

Download A Sample Project Here:

Documentation:

https://github.com/microknights/Gender-API

PHP legacy

First install our library with composer:

See full client documentation here:

https://github.com/markus-perl/gender-api-client

function getGender($firstname) {
  $myKey = 'insert your server key here';
  $data = json_decode(file_get_contents(
  'https://gender-api.com/get?key=' .
  $myKey .
  '&name=' . urlencode($firstname)));
  return $data->gender;
  }

  echo getGender('markus'); //Output: male

First install our library with npm:

See full client documentation here:

https://github.com/markus-perl/gender-api-client-npm

First install our library with npm:

See full client documentation here:

https://github.com/markus-perl/gender-api-client-npm

Download A Sample Project Here:

Documentation:

https://github.com/microknights/Gender-API

TypeScript

First install our library with composer:

See full client documentation here:

https://github.com/markus-perl/gender-api-client

First install our library with npm:

npm install gender-api.com-client --save
import { Client } from 'gender-api.com-client';

const client = new Client('your-api-key');

// Simple gender lookup
const result = await client.getByFirstName('Theresa');
console.log(`${result.first_name} is ${result.gender} (Probability: ${result.probability}`);

// First name with country (e.g., "Andrea" varies by country)
const resultWithCountry = await client.getByFirstName('Andrea', { country: 'IT' });
console.log(`${resultWithCountry.first_name} in Italy is ${resultWithCountry.gender}`);

// Full name with automatic first/last name splitting
const fullResult = await client.getByFullName('John Smith');
console.log(`${fullResult.first_name} ${fullResult.last_name} is ${fullResult.gender}`);

// Email address analysis
const emailResult = await client.getByEmailAddress('marie.curie@example.com');
console.log(`Email gender: ${emailResult.gender}`);

// Batch processing - multiple names in one call
const names = [
  { id: '1', first_name: 'Theresa', country: 'US' },
  { id: '2', first_name: 'John', country: 'US' }
];
const batchResults = await client.getByFirstNameMultiple(names);

batchResults.forEach(r => {
  console.log(`ID: ${r.input.id}, Gender: ${r.gender}`);
});

// Account statistics
const stats = await client.getStatistics();
console.log(`Credits Remaining: ${stats.remaining_credits}`);

See full client documentation here:

https://github.com/markus-perl/gender-api-client-npm

First install our library with npm:

See full client documentation here:

https://github.com/markus-perl/gender-api-client-npm

Download A Sample Project Here:

Documentation:

https://github.com/microknights/Gender-API

JavaScript

First install our library with composer:

See full client documentation here:

https://github.com/markus-perl/gender-api-client

First install our library with npm:

See full client documentation here:

https://github.com/markus-perl/gender-api-client-npm

First install our library with npm:

npm install gender-api.com-client --save
const { Client } = require('gender-api.com-client');

const client = new Client('your-api-key');

// Simple gender lookup
client.getByFirstName('Theresa').then(result => {
  console.log(`${result.first_name} is ${result.gender} (Probability: ${result.probability}`);
}).catch(error => {
  console.error('Error:', error);
});

// First name with country (e.g., "Andrea" varies by country)
client.getByFirstName('Andrea', { country: 'IT' }).then(result => {
  console.log(`${result.first_name} in Italy is ${result.gender}`);
}).catch(error => {
  console.error('Error:', error);
});

// Full name with automatic first/last name splitting
client.getByFullName('John Smith').then(result => {
  console.log(`${result.first_name} ${result.last_name} is ${result.gender}`);
}).catch(error => {
  console.error('Error:', error);
});

// Email address analysis
client.getByEmailAddress('marie.curie@example.com').then(result => {
  console.log(`Email gender: ${result.gender}`);
}).catch(error => {
  console.error('Error:', error);
});

// Batch processing - multiple names in one call
const names = [
  { id: '1', first_name: 'Theresa', country: 'US' },
  { id: '2', first_name: 'John', country: 'US' }
];

client.getByFirstNameMultiple(names).then(results => {
  results.forEach(r => {
    console.log(`ID: ${r.input.id}, Gender: ${r.gender}`);
  });
}).catch(error => {
  console.error('Error:', error);
});

// Account statistics
client.getStatistics().then(stats => {
  console.log(`Credits Remaining: ${stats.remaining_credits}`);
}).catch(error => {
  console.error('Error:', error);
});

See full client documentation here:

https://github.com/markus-perl/gender-api-client-npm

Download A Sample Project Here:

Documentation:

https://github.com/microknights/Gender-API

Python

First install our library with composer:

See full client documentation here:

https://github.com/markus-perl/gender-api-client

First install our library with npm:

See full client documentation here:

https://github.com/markus-perl/gender-api-client-npm

First install our library with npm:

See full client documentation here:

https://github.com/markus-perl/gender-api-client-npm

# Install: pip install gender-api-client
from gender_api import Client

client = Client(api_key="insert your server key here")

# Simple gender lookup
result = client.get_by_first_name("kevin")

if result.result_found:
    print(f"Gender: {result.gender}")  #Gender: male
    print(f"Accuracy: {result.accuracy}%")  #Accuracy: 99%
Python Simple (Without Client Library):
Python 3.*
import json

from urllib.request import urlopen

myKey = "insert your server key here"
url = "https://gender-api.com/get?key=" + myKey + "&name=kevin"
response = urlopen(url)
decoded = response.read().decode('utf-8')
data = json.loads(decoded)
print( "Gender: " + data["gender"]); #Gender: male

Download A Sample Project Here:

Documentation:

https://github.com/microknights/Gender-API

R

First install our library with composer:

See full client documentation here:

https://github.com/markus-perl/gender-api-client

First install our library with npm:

See full client documentation here:

https://github.com/markus-perl/gender-api-client-npm

First install our library with npm:

See full client documentation here:

https://github.com/markus-perl/gender-api-client-npm

install.packages(c("httr2", "dplyr", "tibble", "jsonlite"))
#' Gender API Client (single name only)
#'
#' Gets gender by a first name, optionally filtered by country.
#'
#' @param name A character string containing a single first name.
#' @param country Optional two-letter country code, see: https://gender-api.com/en/api-docs
#' @param api_key Your Gender-API.com API key.
#'
#' @return A tibble containing the estimated gender, number of samples,
#'   accuracy (0–100), and the request duration in ms.
#' @export
#'
#' @examples
#' \dontrun{
#' gender("Andrea", country="US", api_key="YOUR_KEY")
#' gender("Andrea", country="IT")
#' }
#'
library(httr2)
library(dplyr)

gender <- function(name, country = NULL, api_key = Sys.getenv("GENDER_API_KEY")) {
  if (missing(name) || length(name) != 1) {
    stop("`name` must be a single string.")
  }
  if (is.null(api_key) || api_key == "") {
    stop("API key is required. Set with `Sys.setenv(GENDER_API_KEY='your_key')` or pass via `api_key`.")
  }

  args <- list(
    key = api_key,
    name = name
  )
  if (!is.null(country)) args$country <- country

  resp <- request("https://gender-api.com/get") %>%
    req_url_query(!!!args) %>%
    req_perform()

  if (resp_status(resp) >= 400) {
    stop("Request failed: ", resp_status_desc(resp))
  }

  out <- resp_body_json(resp, simplifyVector = TRUE)

  tibble::as_tibble(out)
}

gender("Andrea", country="US", api_key="<YOUR API KEY>")

Download A Sample Project Here:

Documentation:

https://github.com/microknights/Gender-API

Java

First install our library with composer:

See full client documentation here:

https://github.com/markus-perl/gender-api-client

First install our library with npm:

See full client documentation here:

https://github.com/markus-perl/gender-api-client-npm

First install our library with npm:

See full client documentation here:

https://github.com/markus-perl/gender-api-client-npm

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.io.IOException;
import com.google.gson.Gson;
import com.google.gson.JsonObject;

public class Main {

    public static void main(String[] args) {
        String apiKey = "YOUR_API_KEY";
        String url = "https://gender-api.com/v2/gender/by-first-name";
        String payload = "{\"first_name\":\"Theresa\"}";

        HttpClient client = HttpClient.newHttpClient();

        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(url))
                .header("Content-Type", "application/json")
                .header("Authorization", "Bearer " + apiKey)
                .POST(HttpRequest.BodyPublishers.ofString(payload))
                .build();

        try {
            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

            Gson gson = new Gson();
            JsonObject json = gson.fromJson(response.body(), JsonObject.class);

            System.out.println("Gender: " + json.get("gender").getAsString());
            System.out.println("Probability: " + json.get("probability").getAsFloat());

        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

Download A Sample Project Here:

Documentation:

https://github.com/microknights/Gender-API

C#

First install our library with composer:

See full client documentation here:

https://github.com/markus-perl/gender-api-client

First install our library with npm:

See full client documentation here:

https://github.com/markus-perl/gender-api-client-npm

First install our library with npm:

See full client documentation here:

https://github.com/markus-perl/gender-api-client-npm

Download A Sample Project Here:

Documentation:

https://github.com/microknights/Gender-API
using System;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Threading.Tasks;

public record GenderResponse(
    [property: JsonPropertyName("first_name")] string FirstName,
    [property: JsonPropertyName("gender")] string Gender,
    [property: JsonPropertyName("probability")] double Probability
);

public class Program
{
    public static async Task Main()
    {
        var apiKey = "YOUR_API_KEY"; // Get your key at https://gender-api.com/en/account/auth-tokens
        using var client = new HttpClient();

        var requestBody = new { first_name = "Theresa" };
        var jsonContent = new StringContent(
            JsonSerializer.Serialize(requestBody), 
            Encoding.UTF8, 
            "application/json");

        // Add Authorization header
        client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");

        try 
        {
            // Send POST request to API V2
            var response = await client.PostAsync("https://gender-api.com/v2/gender/by-first-name", jsonContent);
            response.EnsureSuccessStatusCode();

            // Parse response
            var jsonResponse = await response.Content.ReadAsStringAsync();
            var result = JsonSerializer.Deserialize<GenderResponse>(jsonResponse);

            Console.WriteLine($"Gender: {result.Gender}");
            Console.WriteLine($"Probability: {result.Probability}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
}

Other Contributed Clients And Examples

Licenses may differ. The copyright is with the respective Author.

Chat