---
title: "ADR / UN Number Lookup"
method: GET
path: "/api/adr"
tags: ["Reference Data", "ADR"]
---

# ADR / UN Number Lookup

`GET /api/adr`

## Request

- Base URL: `https://www.freightutils.com`
- URL: `https://www.freightutils.com/api/adr`
- Auth: none declared

Look up ADR dangerous goods data by UN number, name search, or hazard class filter. Provide exactly one search parameter.

## Query parameters

- `un` string
- `search` string
- `q` string
- `class` string
- `offset` integer
- `limit` integer

## Response `200`

Matching ADR substance records.

- AdrLookupResponse
  - `count` integer, required: Number of matching results.
  - `results` AdrSubstance[], required
    - `un_number` string, required: UN number identifying the dangerous goods.
    - `proper_shipping_name` string, required: Official ADR proper shipping name.
    - `class` string, required: ADR hazard class.
    - `classification_code` string, required: ADR classification code.
    - `packing_group` string, required: Packing group (I, II, or III). Null when the entry has none — including Table A rows flagged not_subject_to_adr or carriage_prohibited.
    - `not_subject_to_adr` boolean: Present and true when ADR 2025 Table A lists the entry as NOT SUBJECT TO ADR — the entry is outside ADR scope (road) and the 1.1.3.6 exemption calculation does not apply. See conditions_ref for carriage conditions that still apply.
    - `carriage_prohibited` boolean: Present and true when ADR 2025 Table A lists the entry as CARRIAGE PROHIBITED — it may not be carried by road under ADR.
    - `conditions_ref` string: ADR section whose carriage conditions still apply to a not-subject entry (e.g. 5.5.3 for UN 1845 dry ice: ventilation, warning mark, documentation). Null when no conditions attach.
    - `table_a_remark` string: Verbatim ADR 2025 Table A column (4) remark for scope-flagged entries.
    - `decision_rationale` string: Data-integrity rationale recorded for this row, where present.
    - `labels` string, required: Required hazard labels.
    - `special_provisions` string, required: Applicable special provisions.
    - `limited_quantity` string, required: Limited quantity allowance.
    - `excepted_quantity` string, required: Excepted quantity code.
    - `transport_category` string, required: Transport category for 1.1.3.6 exemption (0-4).
    - `tunnel_restriction_code` string, required: Tunnel restriction code.
    - `hazard_identification_number` string, required: Kemler/HIN code for orange plates.
    - `variant_index` integer, required: Index of this variant (0-based) when a UN number has multiple entries.
    - `variant_count` integer, required: Total number of variants for this UN number.
    - `verified` union, required: Per-row verification state, ALWAYS present. true (or "partial") only when this row carries a row-level audit in the dataset; false otherwise. Silence is never verification.
      - boolean
      - 'partial'
    - `verification` object, required: Why `verified` says what it says. status verified/partial = a row-level audit (basis row: audited_at + cited source count); status unverified = no row-level audit, the row is transcribed from the UNECE ADR 2025 Table A and held by the dataset-level checks only (basis dataset).
      - `status` 'verified' | 'partial' | 'unverified', required
      - `basis` 'row' | 'dataset', required
      - `reason` string, required
      - `audited_at` string: ISO date of the row-level audit. Present only with status verified/partial.
      - `sources` integer: Number of cited sources on the row-level audit. Present only with status verified/partial.
    - `audited_at` string: ISO date of the row-level audit. Present only on audited rows.
    - `sources` object[]: The row-level audit's cited sources. Present only on audited rows.
  - `_source` SourceEnvelope: Additive provenance citation for the dataset or method behind this response, from FreightUtils' single provenance source of truth. Shapes: reference, methodology (calculators), or reference with provenance_status:'pending-verification'. Fields appear only when a real value exists.
    - `type` 'reference' | 'methodology', required
    - `authority` string
    - `dataset` string
    - `source_url` string
    - `data_vintage` string
    - `licence` string
    - `retrieved_via` string
    - `standard` string
    - `reference` string
    - `computed_by` string
    - `provenance_status` 'pending-verification'
    - `dataset_edition` string: Edition this response is served from (editioned reference datasets only), e.g. 'UN/LOCODE 2025-1'.
    - `authority_current_edition` string: The authority's current in-force edition at the last check. Differs from dataset_edition only when the served data lags the authority.
    - `checked_at` string: YYYY-MM-DD of the last served-vs-authority edition comparison (on-demand checker, staleness-guarded).

## Other responses

- `400`: Invalid or missing parameters.

---

[API](https://skmtc.dev/freightutils/apis/freightutils-api.md) · [All operations](https://skmtc.dev/freightutils/apis/freightutils-api/llms.txt) · [OpenAPI document](https://skmtc.dev/freightutils/apis/freightutils-api/revisions/6607bb3cea90?raw)
