---
title: "NUTS region lookup: EU statistical region codes, names and hierarchy"
method: GET
path: "/v1/ref/nuts"
tags: ["deterministic", "no-api-key", "ref", "eu", "statistics", "regions"]
---

# NUTS region lookup: EU statistical region codes, names and hierarchy

`GET /v1/ref/nuts`

## Request

- Base URL: `https://api.duoleads.com`
- URL: `https://api.duoleads.com/v1/ref/nuts`
- Auth: none declared

NUTS region lookup (EU statistical regions): resolve a NUTS code to its name, country and level, walk up to its parents or down to its children, or search regions by name. Covers all four levels (country, major region, basic region, small region) for the 27 member states and 12 further reporting countries, from the NUTS 2024 classification. Returns the Latin-script and local-language names plus the urbanisation, coastal and mountain typologies.

**Output (`data`):** found, code, level, country, name_latn, name_local, parents [{code, level, name_latn}] from level 0 down to the parent, children [{code, level, name_latn}] (direct children, sorted by code; only when include has children), typology {urban, urban_label, coastal, coastal_label, mountain, mountain_label} (codes are Eurostat typology codes as strings, null where unclassified; labels follow Eurostat's published typology definitions). Keys not named in include are omitted. A name search returns matches [{code, level, country, name_latn, name_local}] (exact name first, then by level and code) plus total_matches. NUTS uses EL and UK for Greece and the United Kingdom; country and the code prefix accept GR and GB as aliases; found responses carry canonical_country (the NUTS spelling, EL or UK for those two) and input_code (the alias as sent) when an alias was mapped.

Deterministic: identical input returns identical output, so the response is served with `Cache-Control: private, max-age=31536000, immutable` (the paying client may cache it indefinitely; shared caches must not, because the response is paid).

Sources: eurostat-nuts NUTS 2024 (published 2026-09-28, CC BY 4.0). Echoed in `meta.sources`.

Price: $0.05 USDC per call (x402, Base). Route contract version 1.0.0. Docs: https://api.duoleads.com/docs#ref-nuts

## Query parameters

- `code` string
- `name` string
- `level` integer
- `country` string
- `include` string

## Response `200`

Paid and settled. `data` is route-specific; a route that judges its input returns 200 with `data.valid: false` for a bad value.

- object
  - `ok` unknown, required
  - `route` '/v1/ref/nuts', required
  - `version` '1.0.0', required
  - `data` object, required: found, code, level, country, name_latn, name_local, parents [{code, level, name_latn}] from level 0 down to the parent, children [{code, level, name_latn}] (direct children, sorted by code; only when include has children), typology {urban, urban_label, coastal, coastal_label, mountain, mountain_label} (codes are Eurostat typology codes as strings, null where unclassified; labels follow Eurostat's published typology definitions). Keys not named in include are omitted. A name search returns matches [{code, level, country, name_latn, name_local}] (exact name first, then by level and code) plus total_matches. NUTS uses EL and UK for Greece and the United Kingdom; country and the code prefix accept GR and GB as aliases; found responses carry canonical_country (the NUTS spelling, EL or UK for those two) and input_code (the alias as sent) when an alias was mapped.
    - `found` boolean, required
    - `code` string
    - `level` integer
    - `country` string
    - `name_latn` string
    - `name_local` string
    - `canonical_country` string
    - `parents` object[]
      - `code` string, required
      - `level` integer, required
      - `name_latn` string, required
    - `typology` object
      - `urban` string, nullable, required
      - `urban_label` string, nullable, required
      - `coastal` string, nullable, required
      - `coastal_label` string, nullable, required
      - `mountain` string, nullable, required
      - `mountain_label` string, nullable, required
    - `matches` object[]
      - `code` string, required
      - `level` integer, required
      - `country` string, required
      - `name_latn` string, required
      - `name_local` string, required
    - `total_matches` integer
    - `children` object[]
      - `code` string, required
      - `level` integer, required
      - `name_latn` string, required
    - `input_code` string
  - `meta` Meta, required
    - `disclaimer` string, required: Legal short disclaimer, identical on every response.
    - `request_id` string, required: ULID.
    - `computed_at` string, date-time, required: RFC 3339 UTC with milliseconds.
    - `price_usd` string, required: Decimal string, "0.05".
    - `deterministic` boolean, required
    - `sources` object[]: Present only on routes that read a vendored dataset: the exact edition that answered.
      - `id` string, required
      - `version` string, required
      - `published` string, required
      - `attribution` string
      - `licence` string

## Other responses

- `400`: MISSING_PARAM, INVALID_PARAM or UNSUPPORTED_VALUE. Not charged: validation runs before the paywall.
- `402`: Payment required. No valid PAYMENT-SIGNATURE was supplied: read the base64 PAYMENT-REQUIRED header (or this body) for the price ($0.05 = 50000 atomic USDC on eip155:8453), sign an EIP-3009 authorization and retry. Also returned when settlement is declined (PAYMENT_FAILED). Nothing is charged on a 402.
- `404`: NOT_FOUND: unknown path. Not charged.
- `405`: METHOD_NOT_ALLOWED: only GET and HEAD are served. Not charged.
- `413`: INPUT_TOO_LARGE: a parameter exceeded its documented maximum length. Not charged.
- `500`: INTERNAL: a server bug. Not charged.

---

[API](https://skmtc.dev/duoleads/apis/duo-data-utilities-iban-isin-vat-tax-id-barcode-timezone-geo.md) · [All operations](https://skmtc.dev/duoleads/apis/duo-data-utilities-iban-isin-vat-tax-id-barcode-timezone-geo/llms.txt) · [OpenAPI document](https://skmtc.dev/duoleads/apis/duo-data-utilities-iban-isin-vat-tax-id-barcode-timezone-geo/revisions/18790d59615e?raw)
