Skip to content

NationKit

NationKit is a high-performance REST API serving structured administrative and geographic data for Algeria and Tunisia: administrative divisions, postal codes and multi-language names (French, Arabic, English), with official ONS / INS codes.

What you get

14 endpoints countries, divisions, postal codes, multilingual search
13 SDKs JavaScript/TypeScript, Python, Go, Rust, Java, Kotlin, C#/.NET, PHP (+Laravel), Ruby, Dart/Flutter, Elixir, Scala, Perl
Fast trigram search PostgreSQL pg_trgm — case-insensitive, multilingual, ranked by matchScore
Free tier register, get a key in one call; per-minute/day/month quotas

30-second quickstart

Get a free key:

curl -X POST https://api.nationkit.site/v1/clients/register \
  -H "Content-Type: application/json" \
  -d '{"name": "Me", "email": "me@example.com", "password": "s3cret"}'

The response contains your API key exactly once — store it. Then call the API:

curl -H "X-API-Key: nk_live_..." https://api.nationkit.site/v1/countries
[
  {
    "isoAlpha2": "DZ", "isoAlpha3": "DZA", "isoNumeric": 12,
    "phoneCode": "+213", "defaultLang": "fr",
    "dataVersion": "2026.08.01",
    "officialSource": "Presidential Decree N° 26-206 & Law N° 26-06 (April 2026)",
    "languages": ["fr", "ar", "en"]
  },
  { "isoAlpha2": "TN", "..." : "..." }
]

Or use an SDK — the same data in your language, with typed errors and paging:

import { NationKitClient } from "nationkit";
const client = new NationKitClient({ apiKey: "nk_live_..." });
const dz = await client.getCountry("dz");
from nationkit import NationKitClient
client = NationKitClient(api_key="nk_live_...")
dz = client.get_country("dz")
client := nationkit.NewClient("nk_live_...")
dz, err := client.GetCountry(ctx, "dz")
client = NationKit.Client.new("nk_live_...")
{:ok, dz} = NationKit.Client.get_country(client, "dz")

👉 Continue with Getting started, browse the API reference, or jump straight to your SDK.