The dataset behind the pages, as comma-separated files. Each is regenerated with the site, so the figures in a file are the figures on the page on the day it is taken. Every rate carries the document that imposed it, and every retired layer carries the date collection ended. The schedule was last verified against its sources on 2026-09-06; the last substantive change to what is collected was 2026-08-22.
Duty layers
239 rows.
Every trade-remedy layer the site resolves with, one row each: 139 published and 100 retired. The Chapter 99 heading, the rate as the schedule prints it and as parsed, how it applies, what it reaches by classification and by origin, the window it was or is collected in, the verification method, and the document behind it. Column 1 rates are not in it; USITC publishes those in machine-readable form.
layer_id · program · action_id · chapter_99_heading · rate_kind · application · ad_valorem · rate_as_printed · hts_scope · hts_scope_value · country_scope · countries · effective_from · effective_to · status · verified_at · verification_method · source_authority · source_title · source_citation · source_url · source_date · notes
Program status
18 rows.
One row per trade action, 18 in all, with whether it is collected today: in force, struck down, expired or announced. The tariff schedule retains a heading after the action behind it stops being collected, so a reader of Chapter 99 alone cannot tell a live duty from a dead one. This table is the missing column.
action_id · action · statute · reported_under · effective_from · collected_until · status · layers · source_title · source_citation · source_url · source_date · as_of · hts_revision
Actions record
6 rows.
Every dated change to what is collected since February 2026, with the document that made it. The same record as the RSS feed and the actions page.
effective · slug · kind · pending · title · summary · programs · source_title · source_citation · source_url · source_date · url · as_of
Countries
120 rows.
One row per country of origin facing any action, 120 in all: the country-wide duty in force, how it applies, the heading it is reported under, the IEEPA reciprocal rate it carried until 23 February 2026, and the number of product-specific actions reaching it.
country · iso3 · country_wide_duty · mode · reported_under · ieepa_rate_to_2026-02-23 · product_actions · as_of · hts_revision · source_url
Taxed goods
18 rows.
One row per taxed product category, 18 in all: the statute, the headline rate, the Chapter 99 heading group, the HTS prefixes in scope and the status.
category · statute · headline_rate · chapter_99 · hts_prefixes · status · in_force_from · as_of · hts_revision · source_url
Reading the files
What the columns mean.
Dates are ISO, year first. A window is effective_from inclusive to effective_to exclusive; an empty effective_to is open-ended. Rates are ad valorem percentages of the customs value unless rate_kind says otherwise, and rate_as_printed is the duty column of the schedule verbatim. application is how the layer combines with Column 1: additive, or in lieu of it, or a cap on the combined rate. A status of retired means the layer resolves for an entry dated inside its window and never for one dated after; the heading may still be printed in the schedule.
Scope is stated by classification and by origin separately. A list scope names an enumerated annex and gives its length; the codes themselves are on the heading pages and through the methodology. Duty is assessed at the ten-digit line, and a rate on a four-digit heading is that of a representative line beneath it.
Reuse
The conditions in the terms, restated.
The rates and the source citations are drawn from United States government publications, which are not subject to copyright. The compilation, structure and presentation are Attoscale LLC's. The files may be quoted and reused on the conditions the terms set: attribute Tariff Watch and link to the page or file the figure came from, include the retrieval date, do not present the figures as an independent verification or as authoritative, and do not remove the provenance that accompanies a rate. Bulk access is not to be resold as a substitute product.
Cite as: Tariff Watch, https://tariffwatch.io/data, retrieved {date}. The retrieval date is asked for because a tariff figure without one cannot be checked.
Machine-readable
The same data, live.
/api/public/changes, /api/public/country/{iso3} and /api/public/hts/{heading} return JSON, rate limited to sixty requests a minute per address, each response carrying an attribution field. The RSS feed carries the actions record. llms.txt describes the site for language models, including how to cite it.
Tariff Watch