1 pointby PowMan6 hours ago1 comment
  • PowMan6 hours ago
    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.