← Docs

HTS Code Lookup API

An HTS code in. Duty rates and tariff measures out.

Look up a US Harmonized Tariff Schedule code. 4 to 10 digits, dots optional. You get the schedule line verbatim: description, the general, special, and column 2 duty rates, units, and the parent lineage so a leaf that says Other is never alone. Every response carries revision, the official release that answered. Rates changed all year, so an answer without a release name is a guess. 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 composes only when the base rate and every duty-imposing measure are clean ad valorem percentages that stack. Anything compound or conditional ships as rows with the rate null. This is the schedule as published, not a customs ruling. Your broker files the entry.

Lookup

GET
api.parseapi.com/hts/{code}
The schedule line verbatim: rates, units, lineage, and the serving revision
curl "https://api.parseapi.com/hts/8471.30.01.00" \
  -H "X-API-Key: YOUR_API_KEY"
{
  "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:"
  ],
  "units": [
    "No."
  ],
  "general": "Free",
  "special": null,
  "other": "35%",
  "revision": "2026HTSRev17"
}

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
units
Units of quantity (No., kg, doz.). Empty when the schedule lists none
general
Column 1 general rate of duty, verbatim. Most countries
special
Column 1 special rate, verbatim. Free trade agreements and preference programs
other
Column 2 rate, verbatim. The statutory rate
revision
The official release that answered (2026HTSRev17). Rates change between releases, so every answer says which release is talking
deep.origin
The origin country the measures were resolved for
deep.effective_rate
Composed ad valorem percent, only when the base rate and every duty-imposing measure compose cleanly. Anything compound or conditional is null with the rows below. Null beats a guess
deep.measures
Every Chapter 99 tariff measure that applies to this code from this origin, verbatim. heading, description, rate, from, until. Exclusions and carve-outs ride as rows with their expiry
codes
Search results for ?q=. Up to 20 lines, best match first, each with hts, description, and general

Search

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/hts?q={query}
Search the tariff schedule by product
curl "https://api.parseapi.com/hts?q=sunglasses" \
  -H "X-API-Key: YOUR_API_KEY"
{
  "q": "sunglasses",
  "revision": "2026HTSRev17",
  "codes": [
    {
      "hts": "9004.10.00.00",
      "description": "Sunglasses",
      "general": "2%"
    }
  ]
}

Deep

Paid. Pass ?deep=true&origin= with an ISO country code. deep.measures lists every applicable Chapter 99 measure verbatim. deep.effective_rate is the composed ad valorem percent, or null when the components do not compose cleanly. Null beats a guess. New trade actions can land by Federal Register notice between schedule revisions.

curl "https://api.parseapi.com/hts/8471.30.01.00?deep=true&origin=CN" \
  -H "X-API-Key: YOUR_API_KEY"
{
  "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:"
  ],
  "units": [
    "No."
  ],
  "general": "Free",
  "special": null,
  "other": "35%",
  "revision": "2026HTSRev17",
  "deep": {
    "origin": "CN",
    "effective_rate": 22.5,
    "measures": [
      {
        "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
      },
      {
        "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
      }
    ]
  }
}

Questions? Email