The US duty and tariff API for landed cost.
One REST call returns the fully-stacked rate for any HTS code and country of origin, resolved in the right legal order.
Not a developer? Look up any code in the dashboard.
Used in production by importers, customs brokers, and supply-chain platforms.
From signup to first call
in under 10 minutes.
Every layer of the US tariff stack. One source of truth.
Harmonized Tariff Schedule
All 17,000+ 10-digit subheadings. Column 1 General, Column 1 Special (FTAs), Column 2.
China lists + forced-labor duty
China Lists 1-4A and exclusions, plus the country-wide forced-labor duty that added ~55 origins on 24 July 2026.
Steel, aluminum, derivatives
The merged 2026 metals regime plus autos, trucks, timber, and semiconductors. Country quotas and exemptions included.
Struck down Feb 2026
The Supreme Court held IEEPA does not authorise tariffs. Not applied to a current lookup; the country and product scope stays readable by as_of date, for refund research.
Modifiers & overrides
Every Chapter 99 subheading that layers on top, with stacking order respected.
Safeguard quotas
Quartz surface products under Proclamation 11051, in-quota and over-quota lanes, with the quota year step-down modeled.
Canada, from 22 Aug 2026
An additional 50% on Canadian autos, alcohol, and dairy under a 1930 authority last used in the 1940s. Scope modeled from the proclamation annexes, so as_of queries on or after 22 August 2026 return it.
The tariff API — one endpoint, deterministic JSON.
GET /api/v1/tariffs/resolve?hts=…&origin=… returns the base duty, every applicable Chapter 99 measure, a confidence score, and attempted candidates when the match isn't exact. Bulk endpoint accepts up to 200 codes per request. REST + JSON. No SDK required.
GET /api/v1/tariffs/resolve?hts=8541.10.00.80&origin=CN
// deterministic, no AI guessing
{
"hts": "8541.10.00.80",
"origin": "CN",
"match_type": "exact",
"match_level": "10",
"confidence": 1.0,
"base_duty": { "rate": "0%", "rate_type": "general" },
"additional_measures": [
{ "program": "Section 301", "rate": "50%", "chapter_99_ref": "9903.91.05" }
],
"warnings": [],
"attempted_candidates": []
}
Public pricing. Start today.
14-day free trial. Card required at signup, cancel any time before day 14 and pay nothing. White-label, reseller and high-volume terms are priced on a call.
- ✓Unlimited watched HTS codes
- ✓Change alerts by email when a rate moves
- ✓Duty exposure totalled across your codes
- ✓Section 301, 232, 338, Chapter 99 stacking
- ✓Historical rates with as_of
- ✓Terminal: live lane monitor and expiry calendar
- ✓Tariff sheet PDF for any code
- ✓Bulk CSV import with column mapping
- ✓15 AI assistant messages / mo
- ✓No code required
- ✓10,000 API calls per month
- ✓Single + bulk /resolve (up to 200 HTS per request)
- ✓Section 301, 232, 338, Chapter 99 stacking
- ✓Historical rates with as_of
- ✓Terminal: live lane monitor and expiry calendar
- ✓Confidence scores, warnings, match metadata
- ✓100 watched codes + change alerts
- ✓Bulk CSV import with column mapping
- ✓MCP server access
- ✓2 team seats
- ✓250 AI assistant messages / mo
- ✓Standard rate limits
- ✓White-label and reseller terms: our data inside your product
- ✓Your import lanes pinned in our regression suite and canaried against production
- ✓Volume beyond the 10,000 calls on the standard plan
- ✓Annual contract, invoicing, and PO / procurement
- ✓Custom SLA and a direct line for rate questions
- ✓Onboarding, integration review, and vendor security review
Verified at every step.
Every rate we publish is pulled from official US trade publications, kept beside its raw source, audited by a separate AI pass, and re-tested before it ships. Traceable, audited, continuously tested.
-
1Ingestion Pulled from source
Pulled directly from official publications. No spreadsheets. No scraping third-party sites. Every source row is preserved exactly as published.
-
2Source archive Kept unchanged
Raw kept beside structured. Tagged to a numbered revision. We can reconstruct the rate on any past date.
-
3Structured parse Made machine-readable
Raw duty text becomes structured rates. Every parsed value records how it was derived. Clean extractions stand apart from anything that needs review.
-
4Independent audit Second pass, AI
A separate AI re-reads the source. Anything that does not match what we published gets flagged. Not the same system checking its own work.
-
5Regression tests Caught before ship
Known lookups re-run on every update. Any failure is caught before it reaches a single customer.
Every rate is provable, audited, and continuously tested.
Stake a customs filing on it. We keep the receipts.
-
Sep 11RegulatoryUnmanned aircraft (8806): two possible Section 232 duties, no single totalFor six unmanned aircraft subheadings (8806.21, .22, .23, .91, .92 and .93) from any origin other than the United States, the Section 232...
-
Sep 07RegulatoryBrazil Section 301: note 50 exemptions now applied (9903.05.03)Brazilian-origin goods on the U.S. note 50(a)(ii) exemption list (864 tariff lines, heading 9903.05.03) were being charged the 25% Sectio...
-
Sep 07RegulatoryGuatemala and El Salvador now receive their DR-CAFTA duty-free rateGoods originating in Guatemala and El Salvador were being quoted the Column 1 general duty rate instead of the DR-CAFTA preferential rate...
-
Aug 30RegulatoryCanada Section 338 duties: start date corrected to August 22, 2026Proclamation 11056 temporarily suspended the Section 338 duties on Canadian alcohol, dairy, and motor vehicles, moving their start from A...
-
Aug 26Regulatory2026 Review of Notorious Markets for Counterfeiting and Piracy: Comment RequestVerdict: NO DATA IMPACT — USTR comment request for the 2026 Notorious Markets List review (Special 301 IP program, 19 USC 2242); no tarif...
You ask. We answer.
Can I calculate tariffs programmatically?
Yes. GET /api/v1/tariffs/resolve takes an HTS code and country of origin and returns the base duty plus every applicable Chapter 99 measure with rates, effective dates, and confidence scores. Bulk endpoint handles up to 200 codes per request. Pass as_of for historical rates. See /api-documentation.
Where does the data come from?
Every rate returned by Tariffs API comes from the official US Harmonized Tariff Schedule published by USITC, combined with USTR, CBP, and Federal Register notices for the Chapter 99 trade measures, including ones that have since ended. We never invent numbers.
How often is it updated?
Base HTS data is refreshed weekly against USITC's published schedule. Chapter 99 and trade-measure updates are captured daily from USTR and CBP notices. Breaking changes (new Section 301 rounds, new Section 232 or Section 338 proclamations) are applied within 24 hours of publication.
Which trade measures do you cover?
Section 301 (China), Section 232 (steel, aluminum, autos, semiconductors) and Section 338 (Canada) are resolved and stacked correctly on top of base HTS rates. Chapter 99 reference codes are resolved to numeric rates when available. Measures that are no longer in force, including the IEEPA tariffs and the Section 122 surcharge, are not applied to a current lookup; pass an as_of date inside the period they were in force and the historical rate is returned.
How does the 14-day free trial work?
Sign up with email and a card. You get full access to the API and every endpoint for 14 days. Cancel any time before day 14 and you're not charged. After day 14 the plan is $199/month. No long-term contract, cancel from the customer portal at any point.
What are the rate limits and infrastructure?
Pro is 500 requests per minute. Bulk /resolve handles up to 200 HTS per request with deduplication and caching, so a single bulk call counts as one API call against your monthly quota. Served from US-East on PostgreSQL with Redis caching. Enterprise customers get a contractual SLA.
How should I interpret the confidence score?
Every resolved measure includes a confidence score and a match type (exact, prefix, inherited). High confidence means the HTS code matched a measure directly. Medium or low means we inferred the match from a parent heading or a normalized variant — the JSON response includes attempted_candidates so you can verify. For anything low-confidence, cross-check with your broker or CBP.
Does Tariffs API replace a customs broker?
No. Tariffs API gives you accurate rate data and landed-cost calculations, but does not file entries, issue binding classification rulings, or act as a customs broker. Use it for checkout pricing, catalog pricing, compliance planning, and audit trails. Final classification and entry filing should go through a licensed customs broker.
Is this legal advice or a binding classification?
No. Data is for informational purposes. Final classification and duty determinations are made by US Customs and Border Protection (CBP). For binding rulings, request a CBP ruling letter. We tell you what the schedule says — CBP tells you what applies to your specific entry.
Ship landed cost at checkout this week.
Start your 14-day trial. Full access, all endpoints. Cancel before day 14 and pay nothing.
Higher volume or want a walkthrough first? Book a call.