REST API — JSON — US & Canada

HTS Code Lookup API
for US & Canada

Search and retrieve tariff classifications, duty rates, and preferential treatment across 58,000+ records in both the US HTS and Canadian Customs Tariff schedules. Nightly sync. No scraping.

No credit card · Full access · Cancel anytime

58,000+
Total records across US HTS and Canadian Customs Tariff
Nightly
Change detection runs every night against both official sources
<200ms
Median API response time on direct code lookups

Try it — live data, no key required

This is the actual production API. Search either schedule by keyword and see real results.

Up to 5 results shown. Get a trial key for full access.

Clean endpoints. Consistent schema.

Every response is a structured JSON object with the same fields whether you're querying US or Canadian records.

GET /api/hts/{hts_code}
# Full US HTS record — description, MFN rate, special rates, units

GET /api/search?q=aluminum+sheet
# Keyword search across all 35,000+ US HTS records

GET /api/ca/{code}
# Full Canadian record including all preferential rate columns (UST, CPTPT, CCCT...)

GET /api/ca/search?q=cotton+yarn
# Keyword search across all 22,461 Canadian records

GET /api/changes
# Every detected change to the US schedule since monitoring began
// GET /api/hts/7606.12.30 — actual API response { "htsno": "7606.12.30", "description": "Not clad", "general": "3%", "special": "Free (A*,AU,BH,CL,CO,D,E,IL,JO,KR,MA,OM,P,PA,PE,S,SG)", "other": "13.5%", "units": [], "indent": "3", "superior": null, "quotaQuantity": null, "additionalDuties": null, "footnotes": [...] }

What you get with a trial key

🔍

Search & direct lookup

Query by keyword or retrieve a specific code directly. Both endpoints return the same structured JSON. Works for US HTS and Canadian Customs Tariff.

🇨🇦

Both schedules, one key

Your trial key authenticates against both the US and Canadian datasets. No separate credentials, no separate billing for each dataset.

📌

Nightly change detection

The changelog endpoints expose every detected amendment. Poll /changelog daily and you know about every rate or description change the morning after publication.

📄

Full preferential rate columns

Canadian records include all applicable treatment columns — UST, CPTPT, CCCT, GPT, and others. Not just MFN, not a flat table.

Webhook push (Tier 3)

Skip polling entirely. Subscribe to change events and receive a POST payload the same night CBSA or USITC publishes an amendment.

📊

Stable schema

We don't restructure the API between data updates. Your integration runs the same query tomorrow as today; the data behind it changes, the contract doesn't.

Why not just use the USITC free API?

Fair question. The USITC API covers US HTS only and has no Canadian data, no change detection, and no changelog. If your use case is cross-border — or if you need to know when rates change — it doesn't cover you.

FeatureUSITC Free APITradeFacts.io
US HTS data
Canadian Customs Tariff
Nightly change detection
Changelog API endpoint
Webhook on change eventsTier 3
Preferential rate columns (UST, CPTPT...)

Try it free for 30 days

Full access to both schedules, all endpoints, nightly change data. No credit card required.

Start free trial → Tier 1 — $199/mo — US HTS + US changelog
Tier 2 — $299/mo — US + Canada + CA changelog
Tier 3 — $399/mo — adds webhook push on every change

Tariff Wire

Weekly digest of US & Canadian tariff changes — plain English, no noise.
Free. For compliance teams and developers who need to stay current.

No spam. Unsubscribe any time.