Official R Client for GenderAPI.io β determine gender from names, emails, and usernames using AI, including bulk operations for high-volume analysis.
β Get a Free API Key:
https://app.genderapi.io
Since the package is not yet on CRAN, install
directly from GitHub using {devtools}
.
Install
{devtools}
if you donβt have it:
install.packages("devtools")
Then install genderapi-R:
::install_github("GenderAPI/genderapi-R") devtools
Load the package:
library(genderapi)
Make sure you have these installed:
install.packages(c("httr", "jsonlite"))
library(genderapi)
<- "YOUR_API_KEY"
api_key
<- get_gender_by_name(
result api_key = api_key,
name = "Michael"
)
print(result)
library(genderapi)
<- "YOUR_API_KEY"
api_key
<- get_gender_by_name(
result api_key = api_key,
name = "Michael"
)
print(result)
<- get_gender_by_name(
result api_key = api_key,
name = "ζι·",
country = "CN",
askToAI = TRUE,
forceToGenderize = TRUE
)
print(result)
<- get_gender_by_email(
result api_key = api_key,
email = "michael.smith@example.com"
)
print(result)
<- get_gender_by_email(
result api_key = api_key,
email = "michael.smith@example.com",
askToAI = TRUE
)
print(result)
<- get_gender_by_username(
result api_key = api_key,
username = "michael_dev"
)
print(result)
<- get_gender_by_username(
result api_key = api_key,
username = "michael_dev",
country = "US",
askToAI = TRUE,
forceToGenderize = TRUE
)
print(result)
Lookup up to 100 names in a single request.
<- list(
data list(name = "Andrea", country = "DE", id = "123"),
list(name = "andrea", country = "IT", id = "456"),
list(name = "james", country = "US", id = "789")
)
<- get_gender_by_name_bulk(
result api_key = api_key,
data = data
)
print(result)
Lookup up to 50 emails in a single request.
<- list(
data list(email = "john@example.com", country = "US", id = "abc123"),
list(email = "maria@domain.de", country = "DE", id = "def456")
)
<- get_gender_by_email_bulk(
result api_key = api_key,
data = data
)
print(result)
Lookup up to 50 usernames in a single request.
<- list(
data list(username = "cooluser", country = "US", id = "u001"),
list(username = "maria2025", country = "DE", id = "u002")
)
<- get_gender_by_username_bulk(
result api_key = api_key,
data = data
)
print(result)
Below are the parameters accepted by each function.
Parameter | Type | Required | Description |
---|---|---|---|
name | String | Yes | Name to query. |
country | String | No | Two-letter country code (e.g.Β "US" ). |
askToAI | Logical | No | Default FALSE . If TRUE , queries AI
directly (costs 3 credits). |
forceToGenderize | Logical | No | Default FALSE . If TRUE , attempts to
analyze nicknames, emojis, etc. |
Parameter | Type | Required | Description |
---|---|---|---|
data | List of named lists | Yes | Each item contains name (required),
country (optional), and id (optional). Max 100
records. |
Parameter | Type | Required | Description |
---|---|---|---|
String | Yes | Email address to query. | |
country | String | No | Two-letter country code. |
askToAI | Logical | No | Default FALSE . |
Parameter | Type | Required | Description |
---|---|---|---|
data | List of named lists | Yes | Each item contains email (required),
country (optional), and id (optional). Max 50
records. |
Parameter | Type | Required | Description |
---|---|---|---|
username | String | Yes | Username to query. |
country | String | No | Two-letter country code. |
askToAI | Logical | No | Default FALSE . |
forceToGenderize | Logical | No | Default FALSE . |
Parameter | Type | Required | Description |
---|---|---|---|
data | List of named lists | Yes | Each item contains username (required),
country (optional), and id (optional). Max 50
records. |
All functions return a list representing the JSON response.
Single lookup example:
list(
status = TRUE,
used_credits = 1,
remaining_credits = 4999,
expires = 1743659200,
q = "michael.smith@example.com",
name = "Michael",
gender = "male",
country = "US",
total_names = 325,
probability = 98,
duration = "4ms"
)
Bulk lookup example:
list(
status = TRUE,
used_credits = 3,
remaining_credits = 7265,
expires = 1717069765,
names = list(
list(
name = "andrea",
q = "Andrea",
gender = "female",
country = "DE",
total_names = 644,
probability = 88,
id = "123"
),list(
name = "andrea",
q = "andrea",
gender = "male",
country = "IT",
total_names = 13537,
probability = 98,
id = "456"
)
),duration = "5ms"
)
Field | Type | Description |
---|---|---|
status | Logical | TRUE or FALSE . Indicates success. |
used_credits | Integer | Credits used for the request. |
remaining_credits | Integer | Credits left. |
expires | Integer | Unix timestamp of account expiry. |
q | String | Original query input. |
name | String | Found name. |
gender | String | "male" , "female" , or
"null" . |
country | String | Predicted country code. |
total_names | Integer | Number of records used in prediction. |
probability | Integer | Confidence (50β100). |
duration | String | Processing time. |
If an error occurs, the API returns:
list(
status = FALSE,
errno = 94,
errmsg = "invalid or missing key"
)
Common error codes:
errno | errmsg | Description |
---|---|---|
50 | access denied | Unauthorized IP or referrer. |
90 | invalid country code | Invalid country code. |
91 | name not set || email not set | Missing input field. |
92 | too many names || too many emails | Exceeded bulk limits. |
93 | limit reached | API key credits exhausted. |
94 | invalid or missing key | Invalid API key. |
99 | API key has expired | Renew your key. |
r install.packages(c("httr", "jsonlite"))
See full API docs:
https://www.genderapi.io/api-documentation
MIT License