← Docs

Tariff API

US import duty. An HTS code in. The rate and the measures that hit it.

US import duty. Pass an HTS code, 4 to 10 digits, dots optional. Other countries keep their own tariffs. You get the schedule line verbatim: description, general duty rate and parent lineage. Paid deep adds statistical units, special and column 2 rates. Every response carries revision, the official release that answered. An unknown code is a 404. Have a product instead of a code? Search the schedule with ?q=.

On paid plans, ?deep=true&origin= resolves duty: every Chapter 99 tariff measure that applies to this code from that origin country, verbatim, with effective dates and expiries. effective_rate is the composed ad valorem percent when the base rate and every duty-imposing measure are clean percentages that stack. Compound or conditional parts leave the rate null. The measure rows still ship.

Lookup

GET
api.parseapi.com/tariff/{code}
Schedule description, general rate, lineage and serving revision
Explore
Parameters 3
codestring · path · required

4 to 10 digits, dots optional (0101, 0101.21.00.10)

originstring · query · optional

ISO 3166-1 country of origin for duty resolution. Only read with deep=true

deepboolean · query · optional

Additional schedule columns and statistical units. Add origin for applicable tariff measures. Included on paid plans.

Run uses the free demo on API 2.0.0. Copied code uses your API key when signed in, or YOUR_API_KEY when signed out.

import { parseAPI } from '@parseapi/sdk';

const parse = parseAPI("YOUR_API_KEY");
const result = await parse.tariff("8471.30.01.00");
console.log(result);

Run on your server with a secret key. Calling from a browser or app?

Example response
{
  "hts": "8471.30.01.00",
  "description": "Portable automatic data processing machines, weighing not more than 10 kg, consisting of at least a central processing unit, a keyboard and a display",
  "lineage": [
    "Automatic data processing machines and units thereof; magnetic or optical readers, machines for transcribing data onto data media in coded form and machines for processing such data, not elsewhere specified or included:"
  ],
  "general": "Free",
  "revision": "2026HTSRev18"
}

Response fields

hts
The code you asked about, normalized with dots (8471.30.01.00)
description
The schedule line, verbatim
lineage
Parent descriptions from the schedule outline, outermost first. Empty for top-level headings
general
Column 1 general rate of duty, verbatim. Most countries
revision
The official schedule revision used for this answer
lines
Search results for ?q=. Up to 20 tariff lines, best match first, each with hts, description, and general

Search schedule descriptions by product. Matches include outline context, so horses finds Purebred breeding animals. Chapter 99 is duty measures, resolved on deep, so it is not in this index. Up to 20 lines, best match first, each with its general rate.

GET
api.parseapi.com/tariff?q={query}
Search the tariff schedule by product
Explore
Parameters 1
qstring · query · required

Product words (laptop, sunglasses, coffee)

Run uses the free demo on API 2.0.0. Copied code uses your API key when signed in, or YOUR_API_KEY when signed out.

import { parseAPI } from '@parseapi/sdk';

const parse = parseAPI("YOUR_API_KEY");
const result = await parse.tariff.search("sunglasses");
console.log(result);

Run on your server with a secret key. Calling from a browser or app?

Example response
{
  "q": "sunglasses",
  "revision": "2026HTSRev18",
  "lines": [
    {
      "hts": "9004.10.00.00",
      "description": "Sunglasses",
      "general": "2%"
    }
  ]
}

Deep

Paid. ?deep=true adds units, special and other rates. Add origin= with an ISO country code. deep.measures lists every applicable Chapter 99 measure verbatim. deep.effective_rate is the composed ad valorem percent when the parts stack. Compound or conditional parts leave it null.

Deep examples run with your own key. Check this API’s included units and pricing before running.

import { parseAPI } from '@parseapi/sdk';

const parse = parseAPI("YOUR_API_KEY");
const result = await parse.tariff("8471.30.01.00", { deep: true, origin: "CN" });
console.log(result);

Run on your server with a secret key. Calling from a browser or app?

Example response
{
  "hts": "8471.30.01.00",
  "description": "Portable automatic data processing machines, weighing not more than 10 kg, consisting of at least a central processing unit, a keyboard and a display",
  "lineage": [
    "Automatic data processing machines and units thereof; magnetic or optical readers, machines for transcribing data onto data media in coded form and machines for processing such data, not elsewhere specified or included:"
  ],
  "general": "Free",
  "revision": "2026HTSRev18",
  "deep": {
    "origin": "CN",
    "effective_rate": null,
    "measures": [
      {
        "heading": "9903.01.22",
        "description": "Articles the product of China and Hong Kong that are informational materials, including but not limited to, publications, films, posters, phonograph records, photographs, microfilms, microfiche, tapes, compact disks, CD ROMs, artworks, and news wire feeds",
        "rate": "The duty provided in the applicable subheading",
        "from": null,
        "until": null,
        "conditional": false
      },
      {
        "heading": "9903.01.24",
        "description": "Except for products described in headings 9903.01.21, 9903.01.22, 9903.01.23, articles the product of China and Hong Kong, as provided for in U.S. note 2(u) to this subchapter",
        "rate": "The duty provided in the applicable subheading + 10%",
        "from": null,
        "until": null,
        "conditional": false
      },
      {
        "heading": "9903.01.28",
        "description": "Articles the product of any country that (1) were loaded onto a vessel at the port of loading and in transit on the final mode of transit prior to entry into the United States, before 12:01 a.m. eastern daylight time on April 5, 2025; and (2) are entered for consumption, or withdrawn from warehouse for consumption after 12:01 a.m. eastern daylight time on April 5, 2025",
        "rate": "The duty provided in the applicable subheading",
        "from": null,
        "until": null,
        "conditional": true
      },
      {
        "heading": "9903.01.32",
        "description": "Articles the product of any country, classified in the subheadings enumerated in subdivision (v)(iii)(a) of U.S. note 2 to this subchapter",
        "rate": "The duty provided in the applicable subheading",
        "from": null,
        "until": null,
        "conditional": false
      },
      {
        "heading": "9903.01.34",
        "description": "The U.S. content of articles the product of any country, in which the U.S. content of the article provides at least 20 percent of the Customs value of the imported article, as provided for in subdivision (v)(xvii) of U.S. note 2 to this subchapter",
        "rate": "The duty provided in the applicable subheading",
        "from": null,
        "until": null,
        "conditional": false
      },
      {
        "heading": "9903.02.01",
        "description": "Articles the product of any country determined by U.S. Customs and Border Protection to have been transshipped to evade applicable duties under section 2 of Executive Order [Insert EO number], as amended [Compiler's note: [Insert EO Number] refers to Executive Order 14326, 90 Fed. Reg. 37963.]",
        "rate": "The duty provided in the applicable subheading + 40%",
        "from": null,
        "until": null,
        "conditional": true
      },
      {
        "heading": "9903.02.78",
        "description": "Articles the product of any country, as provided for in subdivision (v)(iii)(b) of U.S. note 2 to this subchapter",
        "rate": "The duty provided in the applicable subheading",
        "from": null,
        "until": null,
        "conditional": false
      },
      {
        "heading": "9903.03.04",
        "description": "Articles the product of any country, as provided for in subdivision (aa)(iii) of U.S. note 2 to this subchapter",
        "rate": "The duty provided in the applicable subheading",
        "from": null,
        "until": null,
        "conditional": false
      },
      {
        "heading": "9903.05.31",
        "description": "Except for products described in headings 9903.05.85–9903.05.92, articles the product of China, as provided for in U.S. note 52 to this subchapter",
        "rate": "The duty provided in the applicable subheading + 12.5%",
        "from": null,
        "until": null,
        "conditional": false
      }
    ],
    "units": [
      "No."
    ],
    "special": null,
    "other": "35%"
  }
}

Questions? Email