NameGender Python
pip install namegender-client
from namegender import NameGender
client = NameGender("YOUR_API_KEY")
result = client.name("Ayşe", country="TR")
print(result["gender"], result["probability"], result["sample_size"], result["confidence"])
Options and response
name, email, username and bulk accept country, ai_fallback and
best_guess as keyword arguments:
result = client.name("Andrea", country="IT", best_guess=True)
A result carries query, name, first_name, middle_name, last_name, name_type, gender, country, probability,
sample_size, took_ms, source, confidence and matched_as, alongside
credits_charged, credits_remaining, data_version and request_id.
Success is the HTTP status: any non-2xx response raises NameGenderError
with status and body ({"error", "message", "request_id", "docs"}).
Branch on body["error"], not on the message.
Country distribution
Returns the countries a name is recorded in. This is not a country-of-origin or ethnicity inference, and must not be used as one.
result = client.countries("Mehmet", limit=10)
print(result["registrations"]) # [{"country": "FR", "count": 3775, "share": 58.97, "gender": "male", "probability": 99, "source": "insee"}, ...]
print(result["attested_in"]) # ["AL", "AU", "BE", ..., "TR", "US"]
print(result["basis"]["note"])
The two lists are deliberately kept apart. registrations is measured volume and
is comparable only among the seven countries that publish counted birth
statistics (US, UK, France, Canada, Spain, Ireland, Norway); share is a
percentage across those counts alone. attested_in is presence with no weight
attached, which is where countries that publish no counts, such as Turkey, Japan
and India, appear. Show basis["note"] next to any percentage you display.
limit (1–100, default 25) caps how many counted countries come back in
registrations. One credit per request.
File jobs
Upload a CSV or XLSX file (up to 100 MB and 1,000,000 rows) and get it back with gender columns added. One credit per row, charged only if the job completes.
job = client.batches.create(
"customers.csv", # a path, bytes (with filename=) or a binary file object
name_column="first_name", # required to start
country_column="country", # optional: a country code per row
)
done = client.batches.wait(job["id"], on_progress=lambda j: print(j["progress"]))
if done["status"] == "failed":
raise RuntimeError(done["error"]["code"])
client.batches.download(done["id"], "customers-gender.csv")
name_column is required to start: a guessed column that turns out to be
wrong would spend credits on the wrong data. To see the columns and the cost
first, upload with start=False, read job["inspection"], then call
client.batches.start(job["id"], name_column=...).
create sends an Idempotency-Key and retries network errors and 502/503/504
with the same key, so a retry never opens a second job. Pass your own
idempotency_key to keep that guarantee across your own retries.
wait returns a failed job rather than raising; branch on
job["error"]["code"]. cancel returns the credit of a job that has not
started, and deletes a finished one. list(limit=, page=) includes jobs
started from the dashboard. Up to three jobs can be queued or running at once;
a fourth is refused with 429 too_many_batches.
The result appends gender, probability, sample_size, country, source,
matched_as, first_name, middle_name, last_name and name_type to every
row. A CSV result starts with a UTF-8 byte order mark; read it with
encoding="utf-8-sig".
Release files for namegender-client 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| namegender_client-0.4.0.tar.gz | 8.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| namegender_client-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.9 kB
Release files / namegender_client-0.4.0.tar.gz
| Download URL | namegender_client-0.4.0.tar.gz |
|---|---|
| Size | 8.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c7f0869416d12cdaa0d1c3e5f6b827bc13c9fca5009d9972d54d9f51e64a285c
|
|
BLAKE2b-256 checksum How to use checksums |
def644c3590ea6935cfb5ea229cc978f1b5b140ef595526f81e08ca9b6fc02ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.
Transparency logRelease files / namegender_client-0.4.0-py3-none-any.whl
| Download URL | namegender_client-0.4.0-py3-none-any.whl |
|---|---|
| Size | 7.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
220b30570fb82f189951784c13bfe05d2c0e8a7f40e364e6c3abd59f43ccad71
|
|
BLAKE2b-256 checksum How to use checksums |
b229daf6d1f6b186500fdee3b51f848a892a941ce1456b92e80816f675e85730
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.
Transparency log