I recently launched with just the US HTS schedule. I've now added the full 2026 Canadian Customs Tariff — 22,461 records, all 23 preferential rate columns, nightly updates.
The Canada timing is not accidental. The US-Canada tariff situation means a lot of teams are suddenly building things that need both schedules simultaneously. The UST column (United States Tariff — the CUSMA/USMCA preferential rate for US-origin goods) is the one most people are asking about right now.
What the API does:
Full US HTS (32,295 records) and Canada CCT (22,461 records), normalized to a stable JSON schema
Nightly change detection — diff endpoint shows exactly what changed and when
Webhook push on change (Tier 3) so you don't poll
Pipeline safety: aborts if incoming record count drops below threshold, so a partial upstream response never overwrites live data
Single API key, same auth for both datasets
The problem I'm solving: USITC has a public API but the schema shifts without notice. The CBSA publishes the Canadian schedule as a zipped Access database. Neither gives you change history. Both require you to maintain your own pipeline.
Endpoints follow the same pattern for both datasets: GET /api/hts/{code} and GET /api/ca/{code}, same schema shape, same auth.
Pricing: $199/month (US only), $299/month (US + Canada), $399/month (US + Canada + webhooks). 30-day free trial, no credit card.
Docs: https://tradefacts.io/docs.html
Happy to get into the pipeline architecture, the CBSA Access database extraction, or the HTS schema inconsistencies that make this annoying to maintain yourself.
PowMan•1h ago
Full US HTS (32,295 records) and Canada CCT (22,461 records), normalized to a stable JSON schema Nightly change detection — diff endpoint shows exactly what changed and when Webhook push on change (Tier 3) so you don't poll Pipeline safety: aborts if incoming record count drops below threshold, so a partial upstream response never overwrites live data Single API key, same auth for both datasets
The problem I'm solving: USITC has a public API but the schema shifts without notice. The CBSA publishes the Canadian schedule as a zipped Access database. Neither gives you change history. Both require you to maintain your own pipeline. Endpoints follow the same pattern for both datasets: GET /api/hts/{code} and GET /api/ca/{code}, same schema shape, same auth. Pricing: $199/month (US only), $299/month (US + Canada), $399/month (US + Canada + webhooks). 30-day free trial, no credit card. Docs: https://tradefacts.io/docs.html Happy to get into the pipeline architecture, the CBSA Access database extraction, or the HTS schema inconsistencies that make this annoying to maintain yourself.