Data drift detected in some tariff records — we're working on it. Check data status →
Data integrity

How we source and verify every tariff rate.

A tariff rate is only worth as much as the proof behind it. Every number we publish is pulled from an official US publication, kept beside its raw source, audited by an independent pass, and re-tested before it ships. Here is the full trail.

  1. 1
    Ingestion Pulled from source

    Pulled directly from official publications. No spreadsheets. No scraping third-party sites. Every source row is preserved exactly as published.

  2. 2
    Source archive Kept unchanged

    Raw kept beside structured. Tagged to a numbered revision. We can reconstruct the rate on any past date.

  3. 3
    Structured 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.

  4. 4
    Independent 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.

  5. 5
    Regression tests Caught before ship

    Known lookups re-run on every update. Any failure is caught before it reaches a single customer.

The trust trail

Every rate is provable, audited, and continuously tested.

Stake a customs filing on it. We keep the receipts.

Live freshness layer
All systems green Synced 5 hours ago Audit pass rate 95.37%
USTR · trade remedies CBP · CSMS & rulings ITC · HTS revisions ITA · ADCVD Federal Register
Why it matters

Data integrity is the product.

Importers stake real money on a duty rate. A wrong number flows straight into a customs entry, a landed-cost quote, or a checkout total. So the question that matters is not "do you have the data" but "can you prove it."

Most tariff data floating around the web is a copy of a copy: a spreadsheet someone exported, a PDF someone scraped, a figure typed in by hand months ago. Each hop loses the link back to the source. We built the opposite. Every rate stays connected to the exact published text it came from, on the exact date it was published.

That connection is what lets us audit our own output, reconstruct any historical rate, and catch a regression before it reaches a single customer. It is the difference between a number and a number you can defend.

The pipeline

Five stages, every update.

01

Ingestion

Data is pulled directly from official US trade publications: the USTR, CBP CSMS messages and rulings, the ITC Harmonized Tariff Schedule, Federal Register proclamations, and the ITA's ADCVD database. No intermediary spreadsheets, no third-party scraping. Every source row is captured exactly as published.

02

Source archive

The raw source record is kept beside the structured rate we derive from it, and both are tagged to a numbered revision. Nothing is ever overwritten. When a tariff changes, a new revision is created, so we can reconstruct the rate that applied on any past date.

03

Structured parsing

Raw duty text is turned into machine-readable rates: a percentage, a per-unit amount, an origin, an effective date. Every parsed value records how it was derived, so a clean extraction is visibly distinct from anything that needs a human to look at it.

04

Independent audit

A separate AI pass re-reads the original source text and compares it against the rate we published. Because it is a different system from the one that did the parsing, it is a genuine second opinion. Anything that does not match gets flagged rather than shipped.

05

Regression testing

A suite of known HTS-and-origin lookups, each with an expected rate, is re-run on every revision. If an update would change a result that should not have changed, the suite fails and the revision is held back before it can affect a customer.

The math

A correct rate is also a correctly stacked rate.

A single HTS code can attract several duties at once: the MFN base rate, a Section 232 product duty, a Section 301 country list, the Section 122 reciprocal surcharge, and historically the IEEPA tariffs. Order matters; carve-outs matter; some duties suppress others by law. Get the stack wrong and the landed cost is off by tens of percentage points.

We stack in the order proclaimed: MFN → Section 232 → Section 301 → Section 122. Section 232 takes primacy over Section 122 on goods covered by 232. Annex II of EO 14257 carves a long list of HTSes out of Section 122 entirely, including most of chapter 84 and 85. IEEPA tariffs were invalidated by the Supreme Court on 2026-02-20; we stopped applying them as of the proclamation date and preserve the historical rate for any pre-cutoff as_of query.

Every carve-out and primacy rule is in the regression corpus. When a proclamation changes the rules, the corpus fails first, the data follows.

Worked example

Smartphones from China — HTS 8517.13.00.00

Asked for HTS 8517.13.00.00, origin CN, as of today. Here is what the resolver returns and why.

Program Chapter 99 Rate Why
MFN base 0.0% USITC general rate; smartphones enter duty-free.
Section 301 (List 4A) 9903.88.15 + 7.5% CN origin on USTR's List 4A; applied.
Section 122 9903.01.80 15% Suppressed: 8517.13 is in the Annex II carve-out under 9903.01.32. Not applied.
IEEPA 9903.01.25 Invalidated by SCOTUS on 2026-02-20; not applied to current dates.
Total 7.5% Not 22.5%, and not 40%. The right number is the one the law actually requires.

Want the inapplicable rows back for invoicing? Pass ?include_inapplicable_measures=true and each suppressed measure returns with applies_to_origin: false.

Where the line is

What Tariffs API does not do.

We report the duty rates and trade measures that apply to an HTS code you already know. We do not classify products under HTS codes; that is the work of a licensed customs broker, and getting it wrong has legal consequences. Tariffs API is an informational tool, not customs-broker advice. When you bring the code, we make the rate behind it provable.

FAQ

Questions about our data.

Where does Tariffs API get its tariff data? +

Every rate is pulled directly from official US trade publications: the USTR, US Customs and Border Protection, the ITC Harmonized Tariff Schedule, Federal Register proclamations, and the ITA's antidumping and countervailing duty database. We do not buy spreadsheets or scrape third-party sites.

How do you verify that a published rate is correct? +

Each parsed rate is checked by a separate, independent AI pass that re-reads the original source text and compares it against what we published. Anything that does not match is flagged for review. It is not the same system grading its own work.

Can I see the original source a rate came from? +

Yes. We keep the raw source record beside every structured rate and tag both to a numbered revision. Given an HTS code and a date, we can reconstruct the rate exactly as it stood in that revision.

What happens when a tariff changes? +

A new revision is created. Nothing is overwritten. A regression suite of known HTS-and-origin lookups is re-run on the new revision, and any failure is caught before the update reaches customers.

Does Tariffs API classify my product under an HTS code? +

No. Classifying a product under an HTS code is the work of a licensed customs broker. Tariffs API reports the duty rates and trade measures that apply to an HTS code you already know. It is an informational tool, not customs-broker advice.

Look up a rate you can defend.

Every number comes with the trail behind it: official source, numbered revision, independent audit, regression-tested.