# Duo Data Utilities – NUTS Region Lookup

> Duo Data Utilities – NUTS Region Lookup is a paid API for AI agents from api.duoleads.com, paid per call via x402, $0.05/call, status unknown (last checked 2026-10-02).

Look up, search, and traverse European NUTS statistical regions by code or name, returning names, hierarchy, and typologies from the NUTS 2024 classification.

## Facts

- Endpoint: GET https://api.duoleads.com/v1/ref/nuts?utm_source=zero.xyz
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/duo-data-utilities-nuts-region-lookup-0c40ce5f
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_v9q1vSJu4a62Nn8bbE3nh

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability duo-data-utilities-nuts-region-lookup-0c40ce5f
```

Example prompt: What is NUTS code NL32B — what's its name, which country is it in, what level is it, and can you show me its parent regions and whether it's coastal or urban?

## When to prefer this

Choose this endpoint when you need authoritative NUTS 2024 classification data for EU and associated reporting countries — specifically for resolving codes to names, navigating the four-level hierarchy (country → major region → basic region → small region), or searching regions by name. Prefer this over generic geocoding or administrative boundary APIs when you specifically need Eurostat NUTS codes with typologies (urbanisation, coastal, mountain) for statistical or policy analysis purposes.

## Known failure modes

- Invalid NUTS code format returns an error (code must match ^[A-Za-z]{2}[0-9A-Za-z]{0,3}$)
- Code not found in NUTS 2024 classification returns found:false
- Name search with no matches returns empty results array
- Overly broad name search returns at most 25 matches (results may be truncated)
- Invalid country code (not ISO 3166-1 alpha-2) may return no results
- Missing both 'code' and 'name' parameters returns a validation error

## How this service works

Look up a NUTS statistical region of the European Union: 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

A JSON object containing the matched NUTS region's code, level, country ISO code, Latin-script name, local-language name, parent regions (each with code, level, and Latin name), optional child regions, and typology flags for urbanisation (with label), coastal status (with label), and mountain classification (with label). Also includes metadata: request ID, computation timestamp, data source attribution (Eurostat NUTS 2024, CC BY 4.0), and price.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [],
     "properties": {
      "code": {
       "type": "string",
       "pattern": "^[A-Za-z]{2}[0-9A-Za-z]{0,3}$",
       "maxLength": 16,
       "description": "NUTS code, 2-5 characters, case-insensitive (level-3 codes may contain letters, e.g. NL32B). A GR or GB prefix is accepted for EL or UK."
      },
      "name": {
       "type": "string",
       "maxLength": 128,
       "description": "Substring search on region names, case- and accent-insensitive. Up to 25 matches."
      },
      "level": {
       "type": "string",
       "pattern": "^[+-]?\\d+$",
       "maxLength": 64,
       "description": "Restrict a name search to one level, 0-3."
      },
      "country": {
       "type": "string",
       "maxLength": 16,
       "description": "ISO 3166-1 alpha-2 country filter (UK/GB and EL/GR both accepted)."
      },
      "include": {
       "type": "string",
       "default": "parents,typology",
       "maxLength": 64,
       "description": "Comma-separated: parents, children, typology. Default parents,typology."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "ok",
      "route",
      "version",
      "data",
      "meta"
     ],
     "properties": {
      "ok": {
       "const": true
      },
      "data": {
       "type": "object",
       "required": [
        "found"
       ],
       "properties": {
        "code": {
         "type": "string"
        },
        "found": {
         "type": "boolean"
        },
        "level": {
         "type": "integer"
        },
        "country": {
         "type": "string"
        },
        "matches": {
         "type": "array",
         "items": {
          "type": "object",
          "required": [
           "code",
           "level",
           "country",
           "name_latn",
           "name_local"
          ],
          "properties": {
           "code": {
     
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "ok": true,
  "data": {
   "code": "NL32B",
   "found": true,
   "level": 3,
   "country": "NL",
   "parents": [
    {
     "code": "NL",
     "level": 0,
     "name_latn": "Nederland"
    },
    {
     "code": "NL3",
     "level": 1,
     "name_latn": "West-Nederland"
    },
    {
     "code": "NL32",
     "level": 2,
     "name_latn": "Noord-Holland"
    }
   ],
   "typology": {
    "urban": "1",
    "coastal": "1",
    "mountain": "4",
    "urban_label": "predominantly urban",
    "coastal_label": "coastal",
    "mountain_label": "non-mountain region"
   },
   "name_latn": "Groot-Amsterdam",
   "name_local": "Groot-Amsterdam"
  },
  "meta": {
   "sources": [
    {
     "id": "eurostat-nuts",
     "licence": "CC BY 4.0",
     "version": "NUTS 2024",
     "published": "2026-09-28",
     "attribution": "© European Union, Eurostat/GISCO"
    }
   ],
   "price_usd": "0.05",
   "disclaimer": "Factual output of a deterministic computation over public data. Provided as is, with no warranty of accuracy, completeness or availability. Not investment, financial, legal, tax, medical or any other professional advice, and not a recommendation. Verify before relying on it. Terms: https://api.duoleads.com/terms",
   "request_id": "01K6B7Q4ZC8H3F2M9WXR5TYN0D",
   "computed_at": "2026-09-28T12:00:00.000Z",
   "deterministic": true
  },
  "route": "/v1/ref/nuts",
  "version": "1.0.0"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/duo-data-utilities-nuts-region-lookup-0c40ce5f/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.duoleads.com](https://www.zero.xyz/host/api.duoleads.com/llms.txt)
