UK Global Tariff API Reference
HMRC commodity hierarchy and baseline MFN/third-country duties from the latest electronic tariff reporting snapshot.
Base URL: https://api.govdata.dev/v1
Search commodities
Search declarable ten-digit commodities by a code prefix, description text, or both. Results always come from the newest successfully imported snapshot.
/v1/tariff/commodities
Waiting for request...
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
code |
string | No | — | Leading digits of a ten-digit commodity code. |
description |
string | No | — | Case-insensitive description substring. |
page |
integer | No | 1 | One-based page. |
per_page |
integer | No | 25 | Rows per page, clamped to 1–100. |
curl -H "Authorization: Bearer YOUR_API_KEY" "https://api.govdata.dev/v1/tariff/commodities?code=0101"
Net::HTTP.get(URI("https://api.govdata.dev/v1/tariff/commodities?code=0101"))
requests.get("https://api.govdata.dev/v1/tariff/commodities", params={"code": "0101"})
await fetch("https://api.govdata.dev/v1/tariff/commodities?code=0101")
Verified response example
{"data":[{"code":"0101210000","product_line_suffix":"80","description":"Pure-bred breeding animals","indent":2,"classification":"Commodity","hierarchy":"0100000000_80 0101000000_80 0101210000_10","valid_from":"2012-01-01T00:00:00.000Z","valid_to":null,"snapshot_date":"2026-08-11"}],"meta":{"source":"HMRC UK Global Tariff","last_updated":"2026-08-11","api_version":"v1","licence":"Open Government Licence v3.0"},"pagination":{"total":1,"page":1,"per_page":25,"total_pages":1}}
Errors
Invalid pagination uses the standard 400 response. An empty search is valid and lists the latest declarable snapshot.
Get commodity
Returns one declarable classification with its baseline third-country duty, raw published expression, parsed ad-valorem decimal when clean, units, and geographical scope.
/v1/tariff/commodities/:code
Waiting for request...
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
code |
string | Yes | — | Exact ten-digit declarable commodity code. |
curl -H "Authorization: Bearer YOUR_API_KEY" "https://api.govdata.dev/v1/tariff/commodities/0101210000"
Net::HTTP.get(URI("https://api.govdata.dev/v1/tariff/commodities/0101210000"))
requests.get("https://api.govdata.dev/v1/tariff/commodities/0101210000")
await fetch("https://api.govdata.dev/v1/tariff/commodities/0101210000")
Verified response example
{"data":{"code":"0101210000","description":"Pure-bred breeding animals","duty_rate":{"raw":"0.00 %","ad_valorem_rate":"0.0","units":"Number of items (p/st)","geographical_area_id":"1011","geographical_scope":"ERGA OMNES"}},"meta":{"source":"HMRC UK Global Tariff","last_updated":"2026-08-11","api_version":"v1","licence":"Open Government Licence v3.0"}}
Errors
An unknown or non-declarable code returns 404.
{"error":{"code":"not_found","message":"Tariff commodity not found.","documentation_url":"https://docs.govdata.dev/errors/not_found"}}
Data notes
Source: HMRC Trade Tariff reporting bucket, Open Government Licence v3.0 and Crown copyright. Snapshots are discovered daily and imported weekly.
Rates: raw expressions are authoritative. A decimal fraction is supplied only for a wholly ad-valorem expression; compound and specific duties remain null. Scope is the baseline ERGA OMNES third-country duty.
Snapshot semantics: historical snapshots are retained; the API serves only the latest successfully loaded snapshot, so withdrawn codes cannot linger. Preferential measures, quotas, prohibitions, conditions and additional codes are excluded.