API Documentation

Base URL: https://api.dgdataapi.com · All endpoints are GET · JSON responses · Free during launch, rate-limited 60 requests/min per IP · OpenAPI spec

Every response includes a disclaimer, a source, and (where relevant) a carrier_note reminding you that carriers can be stricter than the federal regulations. Data-backed answers carry citations pointing at the exact CFR paragraphs, so you can verify anything against the eCFR directly. See Terms of Use — this is reference data, not compliance advice.

GET /v1/health

Service status, row count, and the eCFR issue date the data was parsed from.

curl https://api.dgdataapi.com/v1/health

{"data_issue_date":"2026-08-04","hmt_rows":3687,"status":"ok"}

GET /v1/materials/{un}

The full §172.101 Hazardous Materials Table entry (or entries — many UN numbers have several rows for different shipping names and packing groups). Accepts UN3481, NA1993, ID8000, or bare digits like 3481.

curl https://api.dgdataapi.com/v1/materials/UN1263

Returns, per entry: proper shipping name, hazard class, packing group, label codes, special provision codes, packaging section references (exceptions / non-bulk / bulk), passenger & cargo aircraft quantity limits, and vessel stowage.

GET /v1/materials/search?q=

Case-insensitive substring search on shipping names. limit optional (default 25, max 100). Cross-reference entries ("Accellerene, see p-Nitrosodimethylaniline") include a cross_reference field.

curl "https://api.dgdataapi.com/v1/materials/search?q=perfume"

GET /v1/materials/{un}/shipping-description

The correctly sequenced §172.202 basic description for each entry — ID number, proper shipping name, hazard class (subsidiary hazards in parentheses), packing group — plus a technical_name_required flag for "G"-symbol n.o.s. entries.

curl https://api.dgdataapi.com/v1/materials/UN1263/shipping-description

"basic_description": "UN1263, Paint (including paint, lacquer, ...), 3, PG II"

GET /v1/materials/{un}/limited-quantity

Whether column 8A of the table authorizes packaging exceptions for the entry. not_eligible when the column reads "None"; otherwise exceptions_section_applies with the governing §173.xxx section to read. (Full per-section inner/outer-package logic is on the roadmap; this endpoint won't guess beyond what the table states.)

curl https://api.dgdataapi.com/v1/materials/UN1263/limited-quantity

GET /v1/special-provisions/{code}

Full text of any §172.102 special provision referenced in column 7 — numeric (multi-modal), A (aircraft), B (bulk), IB/IP (IBCs), N (non-bulk), T/TP (portable tanks), W (water), R (rail).

curl https://api.dgdataapi.com/v1/special-provisions/181

GET /v1/lithium-batteries/classify

Ground (highway/rail) classification per §173.185. Returns the UN number, exception status, requirements list, shipper-certified conditions, and the citation chain.

paramvalues
chemistryion | metal (required)
unitcell | battery (required — a single-cell battery counts as a cell per §173.185(a)(1))
watt_hoursnumber (ion)
lithium_gramsnumber (metal)
configurationalone | with_equipment | in_equipment
units_per_package, package_gross_kg, batteries_net_kg, packages_in_consignmentoptional; enable the mark-exemption and weight-cap checks
damaged, hybrid, vehicletrue to route to the structured out-of-scope responses (§173.185(f), SP 388, SP 360)
curl "https://api.dgdataapi.com/v1/lithium-batteries/classify?chemistry=ion&unit=battery&watt_hours=250&configuration=with_equipment"

"status": "excepted_ground_extended"   // the §173.185(c)(1)(iv) ground tier

Statuses: excepted (base small-battery exception) · excepted_ground_extended (ground-only tier up to 300 Wh / 25 g — carrier check required) · fully_regulated · refused (out-of-scope cases, with the governing citation).

Data provenance & changelog

Source: eCFR Title 49, Parts 172–173, parsed from the official XML. Verification: derived logic tested against ~200,000 generated input combinations and cross-checked against every scenario in PHMSA's Lithium Battery Guide for Shippers (Rev. Oct 2024) — full agreement. The dataset is diffed against eCFR amendments quarterly; changes ship with a changelog entry here.

datechange
2026-08-17Docs, terms, and privacy pages published.
2026-08-11API v0.1 live: full HMT (3,687 rows incl. all packing-group variants), 419 special provisions, 6 endpoint families. Data issue date 2026-08-04.

← back to dgdataapi.com · Terms · Privacy · hello@dgdataapi.com