Skip to content
Master Plan Tariffs Tool

Free US Tariff Data API

The data behind our calculators, as JSON: current US tariff rates by country and product sector with the current stacking regime applied (Section 301 forced-labor or an EU bilateral ceiling, China Section 301, and Section 232), and a dated feed of tariff-regime changes, plus a landed-cost estimate that uses the same stack as the tariff calculator. The same estimate is available to MCP clients at /api/mcp. Curated static snapshot compiled from the USITC Harmonized Tariff Schedule, USTR Section 301 notices, and presidential proclamations. Not a live USITC feed. Rate tables last verified 2026-10-09. The change log’s newest effective event is 2026-10-09; that date does not by itself revise these tables. Verify binding rates at https://hts.usitc.gov/. No key, no signup — attribution is the only requirement. The human-readable timeline is the tariff change log.

Download the full dataset

Prefer a plain file over the API? Download the whole dataset directly as CSV or JSON — no key, no code, just click. Files are generated from the same curated snapshot as the API (rate tables last verified 2026-10-09; newest effective change-log event 2026-10-09). Attribution to TariffsTool.com is the only requirement.

Country tariff rates

One row per country: base regime, forced-labor tier / ceiling, Section 301 & 232 layers, trade agreement, de minimis.

Rates by country × sector

Effective rate for every country across all 14 product sectors.

Tariff regime changes

Dated feed of every US tariff-regime change since 2025, with sources.

API endpoints

The same snapshot is available as a keyless JSON API. meta.last_updated and meta.rates_last_verified are the rate-table date (2026-10-09). meta.changes_through is the newest effective change-log event (2026-10-09) and does not mean the rates were re-verified that day.

1. Rates catalogue

GET https://www.tariffstool.com/api/v1/rates

Lists every country with a full rate profile (41) and every product sector (14).

2. Rates by country

GET https://www.tariffstool.com/api/v1/rates?country=china

{
  "country": { "code": "CN", "name": "China", "slug": "china" },
  "profile": {
    "mfn_avg_pct": 3.4,
    "base": {
      "regime": "section-301-forced-labor",
      "forced_labor_pct": 12.5,
      "legacy_regime": "section-122",
      "section_122_pct": 12.5,
      "note": "Legacy section_122_pct mirrors forced_labor_pct. Section 122 expired 2026-07-24."
    },
    "section_301_pct": 25,
    "section_232_steel_pct": 50,
    "de_minimis_usd": 0,
    ...
  },
  "sector_rates": [
    { "sector": "electronics", "effective_rate_pct": "<calculated>" },
    ...
  ]
}

3. Rate by country + sector

GET https://www.tariffstool.com/api/v1/rates?country=china&sector=electronics

Single effective rate with the breakdown (base, surcharge, notes) and the country profile. A Canada response also includes import_bans: headings 2202, 2203, 2204, 2208, and 8711 with status: "prohibited" and effective_rate_pct: null.

3b. Rate by country + HTS

GET https://www.tariffstool.com/api/v1/rates?country=canada&hts=2208
GET https://www.tariffstool.com/api/v1/rates?country=india&hts=3004.10.1010

Same stacking as the calculator. A banned Canadian heading returns status: "prohibited" and effective_rate_pct: null. A U.S. note 40(c) pharmaceutical line stacks an extra 100% Section 232 layer.

4. Regime-change feed

GET https://www.tariffstool.com/api/v1/changes
GET https://www.tariffstool.com/api/v1/changes?since=2026-06-01
GET https://www.tariffstool.com/api/v1/changes?tag=de-minimis

Dated, curated log of US tariff-regime changes — SCOTUS ruling, Section 122, the EU ceiling, de minimis, CAPE refund milestones — each with status (effective/pending/announced/proposed) and tags. Proposed means a rule has been published for comment and is not in force.

5. Landed cost (for sourcing agents)

POST or GET /api/v1/landed-cost. Pass an HTS code (4–10 digits, dots optional), an origin (ISO country code or a slug from the rates catalogue), and customs_value in USD. Optional mode is ocean, air, truck, or rail — the Harbor Maintenance Fee is estimated only for ocean. Optional freight, insurance, and other_fees are added to the total and are not dutiable (same default as the calculator). quantity is echoed and does not change the math. Codes longer than the heading are passed through, so a listed line matches the calculator (including the 100% patented-pharmaceuticals Section 232 layer). When the calculator marks an import ban, status is prohibited, import_ban is true, and duty, rate, landed cost, MPF, and HMF are null. A layer's citation is copied from the site's Federal Register table for that program and code, or from a program-wide row when the table has one. Otherwise citation is null and citation_status is pending. Responses send Cache-Control: no-store. Anonymous callers are limited to about 60 requests a minute per server instance; a self-issued x-api-key of the form tt_free_ plus at least 8 characters gets a higher per-instance limit. There is no key signup. OpenAPI: /api/v1/openapi.json.

curl -s -X POST https://www.tariffstool.com/api/v1/landed-cost \
  -H 'content-type: application/json' \
  -d '{"hts":"7208","origin":"china","customs_value":10000,"mode":"ocean"}'

China hot-rolled steel (HTS 7208), $10,000, ocean — the same stack the calculator shows for that heading (50% Section 232 + 25% China Section 301 = 75%). Estimate only. Not customs, legal, or tax advice. Verify with a licensed customs broker.

{
  "input": {
    "hts": "7208",
    "hts_title": "Hot-rolled flat products of iron or non-alloy steel",
    "origin": "CN",
    "origin_name": "China",
    "origin_slug": "china",
    "customs_value": 10000,
    "mode": "ocean",
    "quantity": null,
    "freight": 0,
    "insurance": 0,
    "other_fees": 0
  },
  "status": "duty",
  "import_ban": false,
  "total_duty": 7500,
  "effective_rate_pct": 75,
  "total_landed_cost": 17547.14,
  "layers": [
    {
      "name": "Section 232 tariff",
      "legal_authority": "Section 232",
      "program": "section-232-steel",
      "rate_pct": 50,
      "amount_usd": 5000,
      "struck_down": false,
      "citation": null,
      "citation_status": "pending"
    },
    {
      "name": "Section 301 tariff (China)",
      "legal_authority": "Section 301",
      "program": "section-301-china",
      "rate_pct": 25,
      "amount_usd": 2500,
      "struck_down": false,
      "citation": {
        "federal_register": "91 FR 64212",
        "document_number": "2026-20510",
        "url": "https://www.federalregister.gov/documents/2026/10/07/2026-20510/continuation-of-actions-chinas-acts-policies-and-practices-related-to-technology-transfer",
        "pdf_url": "https://www.govinfo.gov/content/pkg/FR-2026-10-07/pdf/2026-20510.pdf",
        "effective_date": "2026-07-06",
        "hts": ""
      },
      "citation_status": "cited"
    },
    {
      "name": "Former IEEPA tariff (was 20%)",
      "legal_authority": "IEEPA",
      "program": "ieepa",
      "rate_pct": 20,
      "amount_usd": 0,
      "struck_down": true,
      "citation": null,
      "citation_status": "pending"
    }
  ],
  "mpf": {
    "amount_usd": 34.64,
    "label": "Estimated MPF (formal entry)",
    "note": "Formal-entry estimate: 0.3464% of customs value, FY2026 floor $33.58 and ceiling $651.50. Qualifying USMCA goods can be MPF-exempt — this estimate does not apply that exemption."
  },
  "hmf": {
    "amount_usd": 12.5,
    "label": "Estimated HMF (ocean, 0.125%)",
    "applies": true
  },
  "note": null,
  "meta": {
    "rates_last_verified": "2026-10-09",
    "changes_through": "2026-10-09",
    "data_source": "curated static snapshot, not a live USITC feed",
    "api_version": "v1",
    "attribution": "Free to use with attribution: link to https://www.tariffstool.com when displaying this data.",
    "attribution_html": "<a href=\"https://www.tariffstool.com\">Tariff data by Tariffs Tool</a>",
    "docs": "https://www.tariffstool.com/developers",
    "openapi": "https://www.tariffstool.com/api/v1/openapi.json"
  },
  "disclaimer": "Estimate only. Not customs, legal, or tax advice. Verify with a licensed customs broker."
}

6. MCP server

A free remote MCP server for agents. Streamable HTTP, no signup. calculate_landed_cost calls the same function as /api/v1/landed-cost, so the duty stack matches the tariff calculator. Anonymous callers share the landed-cost limit of about 60 requests a minute per server instance. A self-issued Authorization: Bearer tt_free_… key (the tt_free_ prefix plus at least 8 letters, numbers, underscores, or hyphens) raises that per-instance limit. The raw key is not logged. Estimate only. Not customs, legal, or tax advice. Verify with a licensed customs broker.

https://www.tariffstool.com/api/mcp
https://www.tariffstool.com/mcp

Tools: calculate_landed_cost, get_duty_layers, lookup_hts (keyword search of the public HTS duty index), check_import_ban, list_recent_tariff_changes, and estimate_tariff_refund (the refund estimator's IEEPA illustration). Every tool result includes source citations, the rate-table last_updated date, the disclaimer, and a link to the matching TariffsTool page.

{
  "mcpServers": {
    "tariffstool": {
      "url": "https://www.tariffstool.com/api/mcp"
    }
  }
}

Optional higher limit — replace the example key with any self-issued tt_free_ key:

{
  "mcpServers": {
    "tariffstool": {
      "url": "https://www.tariffstool.com/api/mcp",
      "headers": { "Authorization": "Bearer tt_free_examplekey" }
    }
  }
}

One-shot check with curl. A Streamable HTTP client should send both Accept types:

curl -s https://www.tariffstool.com/api/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"calculate_landed_cost","arguments":{"hts":"7208","origin":"china","customs_value":10000,"mode":"ocean"}}}'

Server card: /.well-known/mcp.json (also /server-card and /api/mcp/server-card). Domain catalog: /.well-known/ai-catalog.json.

Attribution (required)

The API is free in exchange for a visible, crawlable credit link wherever the data is shown. Paste this snippet as-is — it must be a real <a href> link (please don’t add rel="nofollow"). Every API response also returns it ready-made in meta.attribution_html.

<a href="https://www.tariffstool.com">Tariff data by Tariffs Tool</a>

Terms

  • Attribution required: display “Data: TariffsTool.com” with a link to https://www.tariffstool.com wherever the data appears.
  • Fair use: the rates and changes responses are cached (1h); please cache those on your side too. The landed-cost endpoint is not cached and is rate limited per server instance. For production or high-volume use, contact us — we’re happy to support real integrations.
  • Disclaimer: sector rates are representative, and the landed-cost endpoint is the same HTS estimate as the calculator, including listed-line layers and import bans. Neither is a binding HTS classification or customs, legal, or tax advice. Verify with a licensed customs broker.

Built by Master Plan — the team behind the tariff calculator, duty drawback calculator, and the tariff guide library.

15% of CAPE claims rejected. Is yours at risk?

Get Pre-Filing Audit →