Skip to main content

ISO 639 Language Codes API

REAL DATA

All 183 active ISO 639 two-letter language codes with matching terminology and bibliographic three-letter codes, searchable with exact lookups.

Authoritative reference data or standards computation

Base URL
/api/languages
Capabilities
2 routes
Last updated
July 29, 2026
Data source

GET /api/languages

Returns all 183 active alpha-2-backed records by default. Search matches names and codes; the bibliographic-code filter can be combined with it.

Live requestRuns against the public API
No key required
GET/api/languages

Request parameters

Case-insensitive substring match across English names, alternate names, alpha-2, terminology alpha-3 and bibliographic alpha-3 codes.

When supplied, keep only languages that do (true) or do not (false) have a distinct ISO 639-2/B code.

Advanced response options6 options

Limit the number of returned records (1–100). Defaults to all matches.

Return only these fields (comma-separated). Mutually exclusive with 'exclude'.

Return all fields except these (comma-separated).

Response format: json envelope, ndjson (one record per line) or csv.

Pretty-print the JSON response.

Drop the envelope: return the raw array/object without data/meta wrapper.

Response

Example parameters are ready. Send the request to inspect the live response.

Route reference

Code samples Ready-to-copy requests in 4 languages
Choose a code sample language
curl "https://randomapi.dev/api/languages"
const res = await fetch("https://randomapi.dev/api/languages");
const { data, meta } = await res.json();
import requests

data = requests.get("https://randomapi.dev/api/languages").json()["data"]
$json = json_decode(file_get_contents(
  "https://randomapi.dev/api/languages"
), true);
$data = $json["data"];
Parameters Route-specific request inputs 2
search string

Case-insensitive substring match across English names, alternate names, alpha-2, terminology alpha-3 and bibliographic alpha-3 codes.

example: search=norwegian
hasBibliographicCode boolean

When supplied, keep only languages that do (true) or do not (false) have a distinct ISO 639-2/B code.

example: hasBibliographicCode=true
Universal parameters Shared response and formatting options 6
count int

Limit the number of returned records (1–100). Defaults to all matches.

default: all matches
allowed: 1 – 100
example: count=3
fields list

Return only these fields (comma-separated). Mutually exclusive with 'exclude'.

example: fields=name,alternateNames
exclude list

Return all fields except these (comma-separated).

example: exclude=bibliographicAlpha3
format enum

Response format: json envelope, ndjson (one record per line) or csv.

default: json
allowed: json | ndjson | csv
example: format=csv
pretty boolean

Pretty-print the JSON response.

default: false
example: pretty=true
unwrap boolean

Drop the envelope: return the raw array/object without data/meta wrapper.

default: false
example: unwrap=true
Response schema Fields returned in each record 5
name string

First official English reference name in the Library of Congress code list.

example: German

alternateNames string[]

Additional official English reference names from the same registry row; empty when none are listed.

example: ["Scottish Gaelic"]

alpha2 string

Active ISO 639 Set 1 two-letter identifier (formerly ISO 639-1).

example: de

alpha3 string

ISO 639 Set 2 terminology identifier (formerly ISO 639-2/T).

example: deu

bibliographicAlpha3 string nullable

Different legacy bibliographic identifier (ISO 639-2/B), or null when the B and T identifiers are the same.

example: ger

Documented examples

Build-generated requests and complete responses
4
All active two-letter codes
GET /api/languages
{
  "data": [
    {
      "name": "Afar",
      "alternateNames": [],
      "alpha2": "aa",
      "alpha3": "aar",
      "bibliographicAlpha3": null
    },
    {
      "name": "Abkhazian",
      "alternateNames": [],
      "alpha2": "ab",
      "alpha3": "abk",
      "bibliographicAlpha3": null
    },
    {
      "name": "Avestan",
      "alternateNames": [],
      "alpha2": "ae",
      "alpha3": "ave",
      "bibliographicAlpha3": null
    },
    {
      "name": "Afrikaans",
      "alternateNames": [],
      "alpha2": "af",
      "alpha3": "afr",
      "bibliographicAlpha3": null
    },
    {
      "name": "Akan",
      "alternateNames": [],
      "alpha2": "ak",
      "alpha3": "aka",
      "bibliographicAlpha3": null
    },
    {
      "name": "Amharic",
      "alternateNames": [],
    …
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}
Find Norwegian language codes
GET /api/languages?search=norwegian
{
  "data": [
    {
      "name": "Norwegian Bokmål",
      "alternateNames": [],
      "alpha2": "nb",
      "alpha3": "nob",
      "bibliographicAlpha3": null
    },
    {
      "name": "Norwegian Nynorsk",
      "alternateNames": [],
      "alpha2": "nn",
      "alpha3": "nno",
      "bibliographicAlpha3": null
    },
    {
      "name": "Norwegian",
      "alternateNames": [],
      "alpha2": "no",
      "alpha3": "nor",
      "bibliographicAlpha3": null
    }
  ],
  "meta": {
    "endpoint": "languages",
    "count": 3,
    "params": {
      "search": "norwegian"
    },
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}
Find a legacy bibliographic code
GET /api/languages?search=baq
{
  "data": [
    {
      "name": "Basque",
      "alternateNames": [],
      "alpha2": "eu",
      "alpha3": "eus",
      "bibliographicAlpha3": "baq"
    }
  ],
  "meta": {
    "endpoint": "languages",
    "count": 1,
    "params": {
      "search": "baq"
    },
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}
Languages with distinct B and T codes
GET /api/languages?hasBibliographicCode=true
{
  "data": [
    {
      "name": "Tibetan",
      "alternateNames": [],
      "alpha2": "bo",
      "alpha3": "bod",
      "bibliographicAlpha3": "tib"
    },
    {
      "name": "Czech",
      "alternateNames": [],
      "alpha2": "cs",
      "alpha3": "ces",
      "bibliographicAlpha3": "cze"
    },
    {
      "name": "Welsh",
      "alternateNames": [],
      "alpha2": "cy",
      "alpha3": "cym",
      "bibliographicAlpha3": "wel"
    },
    {
      "name": "German",
      "alternateNames": [],
      "alpha2": "de",
      "alpha3": "deu",
      "bibliographicAlpha3": "ger"
    },
    {
      "name": "Modern Greek (1453-)",
      "alternateNames": [],
      "alpha2": "el",
      "alpha3": "ell",
      "bibliographicAlpha3": "gre"
    },
    {
      "name": "Basque",
      "alternateNames": [],
    …
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}

GET /api/languages/lookup

Accepts active alpha-2, terminology alpha-3 and bibliographic alpha-3 codes case-insensitively. Deprecated and out-of-scope codes are explicit 404s.

Live requestRuns against the public API
No key required
GET/api/languages/lookup?code=da

Request parameters

A 2- or 3-letter ISO 639 code: alpha-2, terminology alpha-3, or bibliographic alpha-3.

Advanced response options4 options

Return only these fields (comma-separated). Mutually exclusive with 'exclude'.

Return all fields except these (comma-separated).

Pretty-print the JSON response.

Drop the envelope: return the raw array/object without data/meta wrapper.

Response

Example parameters are ready. Send the request to inspect the live response.

Route reference

Code samples Ready-to-copy requests in 4 languages
Choose a code sample language
curl "https://randomapi.dev/api/languages/lookup?code=da"
const res = await fetch("https://randomapi.dev/api/languages/lookup?code=da");
const { data, meta } = await res.json();
import requests

data = requests.get("https://randomapi.dev/api/languages/lookup?code=da").json()["data"]
$json = json_decode(file_get_contents(
  "https://randomapi.dev/api/languages/lookup?code=da"
), true);
$data = $json["data"];
Parameters Route-specific request inputs 1
code string required

A 2- or 3-letter ISO 639 code: alpha-2, terminology alpha-3, or bibliographic alpha-3.

allowed: 2 – 3
example: code=deu
Universal parameters Shared response and formatting options 4
fields list

Return only these fields (comma-separated). Mutually exclusive with 'exclude'.

example: fields=name,alternateNames
exclude list

Return all fields except these (comma-separated).

example: exclude=bibliographicAlpha3
pretty boolean

Pretty-print the JSON response.

default: false
example: pretty=true
unwrap boolean

Drop the envelope: return the raw array/object without data/meta wrapper.

default: false
example: unwrap=true
Response schema Fields returned in each record 5
name string

First official English reference name in the Library of Congress code list.

example: German

alternateNames string[]

Additional official English reference names from the same registry row; empty when none are listed.

example: ["Scottish Gaelic"]

alpha2 string

Active ISO 639 Set 1 two-letter identifier (formerly ISO 639-1).

example: de

alpha3 string

ISO 639 Set 2 terminology identifier (formerly ISO 639-2/T).

example: deu

bibliographicAlpha3 string nullable

Different legacy bibliographic identifier (ISO 639-2/B), or null when the B and T identifiers are the same.

example: ger

Documented examples

Build-generated requests and complete responses
3
Danish by alpha-2
GET /api/languages/lookup?code=da
{
  "data": {
    "name": "Danish",
    "alternateNames": [],
    "alpha2": "da",
    "alpha3": "dan",
    "bibliographicAlpha3": null
  },
  "meta": {
    "endpoint": "languages",
    "route": "/lookup",
    "params": {
      "code": "da"
    },
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}
German by terminology code
GET /api/languages/lookup?code=deu
{
  "data": {
    "name": "German",
    "alternateNames": [],
    "alpha2": "de",
    "alpha3": "deu",
    "bibliographicAlpha3": "ger"
  },
  "meta": {
    "endpoint": "languages",
    "route": "/lookup",
    "params": {
      "code": "deu"
    },
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}
German by bibliographic code
GET /api/languages/lookup?code=ger
{
  "data": {
    "name": "German",
    "alternateNames": [],
    "alpha2": "de",
    "alpha3": "deu",
    "bibliographicAlpha3": "ger"
  },
  "meta": {
    "endpoint": "languages",
    "route": "/lookup",
    "params": {
      "code": "ger"
    },
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}

About this API

Coverage & behavior

A compact reference for the 183 currently assigned ISO 639 Set 1 two-letter identifiers (traditionally called ISO 639-1), paired with their ISO 639 Set 2 terminology identifiers (ISO 639-2/T). For the 20 languages whose historic bibliographic code differs, bibliographicAlpha3 preserves the ISO 639-2/B synonym — for example German is de / deu with bibliographic ger.

The list route is alpha-2 sorted. search matches the English reference name, alternate English names and every code; hasBibliographicCode can isolate the 20 B/T split cases. Filters combine, and no match returns an empty list plus a warning. The lookup route accepts an alpha-2, terminology alpha-3 or bibliographic alpha-3 code case-insensitively and never substitutes a neighboring language.

Scope: this is deliberately the active two-letter-backed subset, not the complete ISO 639 Set 2 or Set 3 catalog. Languages that only have a three-letter identifier are outside scope. The former bh identifier is absent because it was deprecated in 2021; use bih in a full Set 2/3 registry when Bihari languages must be represented. Names are the registry's English reference names — endonyms, scripts, regions, speaker counts and locale tags are not invented or inferred.

Use it for

  • Populate a standards-backed language selector with alpha-2 and alpha-3 values
  • Normalize legacy bibliographic codes such as ger to the terminology code deu
  • Validate language-code fields while rejecting deprecated or out-of-scope identifiers
  • Search official English reference names and aliases for a matching code

Frequently asked questions

Which ISO 639 language codes are included?

The endpoint contains all 183 currently assigned two-letter Set 1 identifiers and their corresponding Set 2 terminology codes. Three-letter-only Set 2/3 languages are deliberately outside this endpoint's scope.

Can I look up both deu and ger for German?

Yes. The lookup accepts de, terminology code deu, or bibliographic code ger; all three return the German record with the distinction preserved in separate fields.

Why is the bh language code missing?

The ISO 639-1 identifier bh was deprecated in 2021. This endpoint serves active two-letter identifiers only and explains the deprecation rather than silently returning another language.

Does the API include native language names or locale tags?

No. Its authoritative source provides English reference names and ISO identifiers; endonyms, scripts, regions and BCP 47 locale combinations are intentionally not inferred.

Standards & references