Trade Intelligence

Landed Cost API — HS Subheading & Duty Range

Estimate the import duty on a product: 6-digit HS subheading, general duty rate range, and China Section 301 list exposure from a plain-English description.

The problem

Before a sourcing or procurement team commits to a supplier or a price, it needs a rough answer to one question: what will this cost to land? Answering it means knowing the product's HS subheading and the duty attached to it — and nearly every tool assumes you already know the code. The alternative is guesswork, or paying a customs broker for a classification on every SKU you are only considering.

Who it's for

Sourcing and procurement teams comparing suppliers across countries, importers of hardware, electronics, housewares, machinery, and similar manufactured goods, and 3PL or logistics product teams building landed-cost estimates into their own tools. It is a poor fit for apparel and footwear sellers — see "Where this works, and where it doesn't" below, which is measured, not a hedge.

Use cases

  • Estimating landed cost during sourcing, pricing, or margin planning
  • Comparing duty exposure across candidate suppliers in different countries
  • Checking China Section 301 list exposure for goods of Chinese origin
  • Pre-screening a catalog of SKUs before handing the real classification work to a broker

What it does

Send a plain-English product description — optionally with a country of origin — and get back the 6-digit international HS subheading, a confidence score (the AI model's own 0–1 rating of the match it picked, null when the model gives none; it is not a measured accuracy), an estimated general duty rate range across the U.S. tariff lines under that subheading (with the rate most of them carry and how many 8- and 10-digit numbers the schedule lists there), China Section 301 exposure for goods of Chinese origin, reported as whether all or only some of the subheading's rate lines appear on the China lists (Lists 1–4A), and alternate subheadings when the description is ambiguous. Reference data is the U.S. International Trade Commission's official Harmonized Tariff Schedule, chapters 1–97 (chapters 98 and 99 hold special and temporary provisions, not product classifications) — 23,193 8- and 10-digit numbers aggregated into 5,612 subheadings — bundled rather than read live per request, and the date our copy was taken is stated on each estimate.

Example

Request

POST /estimate
{
  "description": "stainless steel undermount kitchen sink",
  "country_of_origin": "CN"
}

Response

Captured live 2026-09-18 from the request above, values unedited and nothing omitted.

{
  "hs_code": "7324.10",
  "classification_level": "6-digit HS subheading (international Harmonized System)",
  "description": "Sanitary ware and parts thereof, of iron or steel > Sinks and wash basins, of stainless steel",
  "confidence": 0.95,
  "duty_estimate": {
    "basis": "Range of published USITC General (Column 1) rates across the U.S. tariff lines within this HS subheading. An estimate for landed-cost planning, not a duty determination.",
    "min_pct": 3.4,
    "max_pct": 3.4,
    "most_common_rate_pct": 3.4,
    "most_common_rate_text": "3.4%",
    "lines_at_most_common_rate": 3,
    "tariff_lines_in_subheading": 3,
    "distinct_published_rates": 1,
    "single_rate_across_subheading": true,
    "includes_non_ad_valorem_rates": false,
    "precision_note": "All 3 8- and 10-digit U.S. numbers listed under this subheading carry the same published general rate (3.4%), so this estimate is not a range — it is the rate for the whole subheading. It is still not an entry classification. These figures are General (Column 1) rates only: they EXCLUDE Section 301 and Section 232 additional duties, AD/CVD, and every other additional duty (see surcharge_coverage)."
  },
  "applicable_surcharges": [
    {
      "type": "section_301",
      "label": "Every duty-rate line under this subheading appears on Section 301 List 3 (25%) for products of China",
      "note": "A \"duty-rate line\" is one of the subdivisions the U.S. schedule creates below the 6-digit subheading; Section 301 lists are published against those. Membership is a fact about the subheading, not a determination that a particular shipment owes the duty: USTR grants product-specific exclusions narrower than a subheading. For a landed-cost estimate, add this rate on top of the general rate as the planning case, and verify exclusions and current rates at ustr.gov. This is the China-list duty only: the forced-labor action and any other Section 301 or Section 232 duty are additional and NOT assessed (see surcharge_coverage).",
      "coverage": "all",
      "lists": [
        {
          "list": "Section 301 List 3",
          "additional_rate": "25%"
        }
      ]
    }
  ],
  "alternate_subheadings": [
    {
      "hs_code": "7323.93",
      "description": "Table, kitchen or other household articles and parts thereof, of iron or steel; iron or steel wool; pot scourers and scouring or polishing pads, gloves and the like, of iron or steel > Other > Of stainless steel",
      "confidence": 0.35
    }
  ],
  "surcharge_coverage": "Section 301, China lists: every duty-rate line under this subheading appears on one or more of the China Section 301 lists (Lists 1, 2, 3 and 4A, U.S. Note 20); see applicable_surcharges. Product-specific USTR exclusions are NOT applied here. Section 301 forced-labor action: NOT ASSESSED for any origin. Effective 2026-07-24, it imposes duties of 10% or 12.5% on products of 60 economies, China included (for China, in addition to the China lists above; for EU member states, Japan, South Korea, Switzerland and Taiwan, as a combined rate with the column 1 rate), under the 9903.05 headings of HTSUS Chapter 99, subject to the exemptions in U.S. Note 52. Verify at https://content.govdelivery.com/accounts/USDHSCBP/bulletins/421d887 (CBP guidance \"Section 301 Forced Labor Import Duties\", issued 2026-07-23, read 2026-09-11). Section 232: NOT ASSESSED for any origin. Section 232 duties are product-specific and are not in this estimate; verify at cbp.gov. No other Section 301 action is assessed either. AD/CVD: NOT ASSESSED for any origin. Antidumping and countervailing duties are specific to the product, the country and the exporter, can far exceed the general rate, and are not in this estimate, so nothing here indicates whether an order applies; verify at access.trade.gov.",
  "tariff_schedule_snapshot": "2026-09-14",
  "disclaimer": "This is a general landed-cost estimate, not a customs-entry classification. Output is capped at the 6-digit international HS subheading; Aervik Labs does not determine the 8- or 10-digit U.S. tariff line, and this result must not be used as the classification on a customs entry. Duty figures are an estimate range across the U.S. tariff lines that sit under this subheading, taken from the USITC's Harmonized Tariff Schedule as it stood on the snapshot date shown (the date our copy was made), and are intended for landed-cost budgeting, sourcing comparison, and pricing — not for filing. The classification and duty actually applicable to a specific shipment must come from a licensed customs broker or your own qualified importer-of-record compliance staff.",
  "provider": "aervik-ai-v1"
}

Calling it directly — real, working requests you can paste and run:

cURL

curl -X POST "https://landed-cost-estimator-hs-code-import-duty-range-api.p.rapidapi.com/estimate" \
  -H "content-type: application/json" \
  -H "X-RapidAPI-Key: $RAPIDAPI_KEY" \
  -H "X-RapidAPI-Host: landed-cost-estimator-hs-code-import-duty-range-api.p.rapidapi.com" \
  -d '{"description": "stainless steel undermount kitchen sink", "country_of_origin": "CN"}'

Python

import os
import requests

RAPIDAPI_HOST = "landed-cost-estimator-hs-code-import-duty-range-api.p.rapidapi.com"

resp = requests.post(
    f"https://{RAPIDAPI_HOST}/estimate",
    json={
        "description": "stainless steel undermount kitchen sink",
        "country_of_origin": "CN",  # ISO 3166-1 alpha-2; enables the Section 301 check
    },
    headers={
        "X-RapidAPI-Key": os.environ["RAPIDAPI_KEY"],
        "X-RapidAPI-Host": RAPIDAPI_HOST,
    },
)
print(resp.json())

Node.js

const RAPIDAPI_HOST = 'landed-cost-estimator-hs-code-import-duty-range-api.p.rapidapi.com';

const res = await fetch(`https://${RAPIDAPI_HOST}/estimate`, {
  method: 'POST',
  headers: {
    'content-type': 'application/json',
    'X-RapidAPI-Key': process.env.RAPIDAPI_KEY,
    'X-RapidAPI-Host': RAPIDAPI_HOST,
  },
  // country_of_origin is ISO 3166-1 alpha-2 and enables the Section 301 check.
  body: JSON.stringify({
    description: 'stainless steel undermount kitchen sink',
    country_of_origin: 'CN',
  }),
});
console.log(await res.json());

Where this API's data comes from, how we read it, and each source's own update schedule: Data Sources & Freshness.

Machine-readable: the OpenAPI 3.1 document for this API, generated from its code — import it into Postman or a client generator. More on the developer page.

A ready-made Postman collection is also available: import it and the shared environment in Postman (Import, then select the file), then set RAPIDAPI_KEY to your RapidAPI key.

Key features

  • Plain-English input — no need to already know a starting HS chapter
  • Duty returned as an honest range, with a plain-language note on how tight or wide that range is
  • China Section 301 list exposure at subheading level: all, some, or none of the rate lines listed, with the one rate each list carries (25% or 7.5%)
  • Confidence score plus alternate candidate subheadings when a description is ambiguous
  • Hard-capped at 6 digits: never returns an 8- or 10-digit tariff line, by design

Pricing

Free to start: 500 requests a month, hard-capped, no card required — sized against what this category actually gives away. Every call to any endpoint counts as one request. Paid plans are $9.99 for 2,000 requests and $29.99 for 10,000, both hard-capped so calls stop at the limit rather than billing you; the top plan carries 50,000 requests on a soft limit with overage at 1¢ per additional request.

See exact current pricing tiers on RapidAPI →

This is an estimate, not a customs classification

Output is capped at the 6-digit international HS subheading. This API does not produce the 8- or 10-digit U.S. tariff line, and its output must not be used as the classification on a customs entry. Determining the tariff line for a shipment is a licensed customs broker’s work — this API deliberately does not do it. Use it to budget, compare sourcing options, and price. Use a broker to file.

That cap is enforced in the product, not just stated here: no 8- or 10-digit code can appear in any response field.

What to send

Describe what the product is, what it is made of and what it is used for, in up to 2,000 characters. The country of origin, if you send one, is used as you send it: this API never determines where goods were made, and the China Section 301 lists are matched only for CN.

Where this works, and where it doesn’t

Duty rates are published below the subheading level, so some subheadings are tight and some are wide — and each estimate tells you which one you got. Measured across the bundled schedule (USITC snapshot 2026-09-14, 5,612 subheadings): of the 5,253 with percentage rates, 74.4% have a spread of zero among those rates, so the “range” is one number, and 88.5% span five percentage points or less. 359 carry only specific or compound rates (per kilogram, per pair), which no percentage range can describe.

The wide ones are not spread evenly, and that decides who this is for. In knitted apparel, 38 of 106 subheadings span more than ten points; in woven apparel, 30 of 104; in footwear, 9 of 25 — and subheading 6402.99 has 65 tariff lines with 10 different published rates, its percentage rates running from 3% to 48% (lines counted as the 8- and 10-digit numbers the schedule lists).

So if you import hardware, electronics, housewares, machinery, or industrial goods, this is a number you can plan against. If you sell apparel or footwear, this product is not for you, and we would rather say that here than take the subscription. For those subheadings the response says outright that the bracket is too wide to plan a margin on and to get the line from a broker.

The full measurement, chapter by chapter, with the method and its limits: Is the 6-Digit HS Code Enough to Estimate U.S. Duty?

If you read USITC’s tariff schedule export from your own code, USITC’s HTS Export API: Nine Traps in the Tariff Schedule Data covers a range bound that drops lines, blank rates that are not Free, double counts and six more traps.

How accurate is it? We measured, against CBP. We gave this classifier the merchandise descriptions from 100 of CBP’s own published binding rulings — with the tariff number and every classification cue stripped out — and compared its answer to CBP’s: Six digits against CBP’s own rulings. Of the 98 that returned an answer, it matched the 6-digit subheading 23.5% of the time (95% CI 16.2–32.8%), was in the right 4-digit heading 38% of the time and the right chapter 58%. Binding rulings are hard cases by construction, so that is not accuracy on ordinary merchandise — but every miss, the method and the full test set are published.

Why it is hard, separately from any classifier. Across 140 of those rulings, a keyword search of the tariff schedule never surfaces the correct heading at all for 4–10% of products: the schedule and the seller describe the same object in different words. A pump-over system for wine fermentation belongs under machinery for the preparation of “drink”; cremation urns belong under “ornaments”. The measurement and every row are published in The headings a keyword search of the tariff schedule can never find.

What to do with the confidence score. It ranks but it is not calibrated: mean 0.82 when the answer was right, 0.60 when it was wrong, and the 0.70–0.80 band was correct only 13% of the time while 0.90+ was correct 64%. Treat it as a rough ordering, not a probability, and treat any single code as a candidate to verify — not an answer. (An earlier version of this line, published at 45 rulings, said nothing below 0.7 had ever been correct; at 100 that is 2 of 32, so that rule is withdrawn. The research page carries the correction.)

Try it without a key: the free landed-cost estimator runs on this product, 10 lookups a day with no sign-up.

Section 301 flags are advisory. China Section 301 list membership (Lists 1–4A, U.S. Note 20) comes from the published Chapter 99 lists and is reported when the country of origin is China. The rate shown is the one rate each list carries, 25% for Lists 1, 2 and 3 and 7.5% for List 4A, the same for each subheading on that list: a different rate set for particular products under another Chapter 99 heading is not read, so confirm the current rate for your product at ustr.gov. Antidumping and countervailing duty orders are not assessed: check access.trade.gov for your product and origin. Each estimate says so, so an empty surcharge list does not read as “clear.”

What the estimate leaves out. It is the general (Column 1) duty rate only. It does not include the Merchandise Processing Fee, the Harbor Maintenance Fee, freight, insurance or the customs value; it does not apply special program rates such as USMCA; and for goods from countries whose imports take the Column 2 rate, Russia and Belarus among them (CBP), it still shows the general rate.

What is not assessed. The Section 301 forced-labor duties in effect since 2026-07-24 — 10% or 12.5% on products of 60 economies, China included, under HTSUS 9903.05.20–9903.05.84 with the exemptions in U.S. Note 52 (CBP CSMS #69326983) — and Section 232 duties. Neither is in the duty range or the surcharge list. Budget them separately and confirm with a licensed customs broker.

Try Landed Cost API — HS Subheading & Duty Range on RapidAPI