OTHERAI

USITC HTS Tariff Search

Search the **US Harmonized Tariff Schedule (HTS)** for import duty rates, tariff classifications, and trade compliance data. Look up tariff rates by product keyword, HTS code, or chapter. Automatically detects **Section 301 (China)** and **Section 232 (steel/aluminum)** additional tariffs.

Try on Apify Store
$0.02per event
0
Users (30d)
0
Runs (30d)
90
Actively maintained
Maintenance Pulse
$0.02
Per event

Maintenance Pulse

90/100
Last Build
Today
Last Version
1d ago
Builds (30d)
8
Issue Response
N/A

Cost Estimate

How many results do you need?

result-returneds
Estimated cost:$2.00

Pricing

Pay Per Event model. You only pay for what you use.

EventDescriptionPrice
result-returnedCharged per result returned from the search/lookup.$0.02

Example: 100 events = $2.00 · 1,000 events = $20.00

Documentation

Search the US Harmonized Tariff Schedule (HTS) for import duty rates, tariff classifications, and trade compliance data. Look up tariff rates by product keyword, HTS code, or chapter. Automatically detects Section 301 (China) and Section 232 (steel/aluminum) additional tariffs.

No API key required. Just enter a keyword like coffee or lithium battery and get back structured tariff data with duty rates in seconds.

Why Use USITC HTS Tariff Search?

The USITC website is designed for browsing one tariff line at a time. Extracting structured data for cost analysis, tariff engineering, or compliance audits means manually navigating a multi-level hierarchy of 99 chapters and thousands of subheadings. This actor handles keyword search, chapter browsing, hierarchical description assembly, HTML stripping, footnote parsing, and Section 301/232 detection — giving you clean JSON with all three duty rate columns and tariff flags.

Features

  • Product keyword search — search by product name (e.g., "coffee", "steel pipe", "lithium battery", "solar panel", "semiconductor")
  • HTS code lookup — look up a specific code or browse all subheadings under a heading (e.g., "7304" returns all seamless steel tube classifications)
  • Chapter browsing — view all tariff lines within a specific HTS chapter (01–99)
  • Duty rate filtering — exclude category headers to show only tariff lines with actual rates
  • Section 301 detection — automatically flags items subject to additional tariffs on Chinese goods (Chapter 99, subheading 9903.88.xx)
  • Section 232 detection — automatically flags items subject to steel/aluminum tariffs (Chapter 99, subheading 9903.80.xx)
  • Footnote parsing — extracts and formats Chapter 99 references, statistical notes, and special provisions
  • Hierarchical descriptions — builds full product descriptions from parent categories for context (instead of just showing "Other")
  • HTML stripping — cleans raw API descriptions that contain embedded HTML tags
  • Three rate columns — general (MFN) rate, special program rates (FTA preferences), and Column 2 (non-NTR) rate

How to Use

  1. Choose your search mode — enter a product keyword, a specific HTS number, or a chapter number. Only one mode is used per run.

  2. Set filtering options — enable dutyRateFilter (default: true) to show only tariff lines with actual duty rates. Disable it to see the full hierarchy including category headers.

  3. Run and download — click "Start" and wait for the run to complete (typically 3–15 seconds). Download the structured JSON dataset.

  4. Check tariff flags — look at isSection301, isSection232, and hasAdditionalTariff fields to quickly identify items subject to extra duties.

Input Parameters

ParameterTypeRequiredDefaultDescription
keywordStringNo*Product keyword search (e.g., "coffee", "steel pipe")
htsNumberStringNo*Specific HTS code (e.g., "0901.11.00") or heading (e.g., "7304")
chapterStringNo*Browse entire HTS chapter by number (01–99)
dutyRateFilterBooleanNotrueOnly show lines with actual duty rates
includeFootnotesBooleanNotrueInclude full footnote text in output
maxResultsIntegerNo100Maximum results to return (1–5,000)

*Exactly one search mode (keyword, htsNumber, or chapter) is required.

Input Examples

Find tariff rates for solar panels:

{
    "keyword": "solar panel",
    "maxResults": 50
}

Look up all subheadings under HTS 8541 (semiconductor devices):

{
    "htsNumber": "8541",
    "dutyRateFilter": false,
    "maxResults": 200
}

Browse Chapter 72 (Iron and Steel):

{
    "chapter": "72",
    "maxResults": 500
}

Find lithium battery tariff classifications:

{
    "keyword": "lithium battery",
    "includeFootnotes": true,
    "maxResults": 100
}

Look up a specific tariff line:

{
    "htsNumber": "0901.11.00",
    "dutyRateFilter": false
}

Input Tips

  • Use keyword for product-level searches — it queries the USITC search API which matches against descriptions across all chapters.
  • Use htsNumber with a 4-digit heading (e.g., "7304") to browse all subheadings under that heading. Use a full 8- or 10-digit code for exact lookup.
  • Set dutyRateFilter: false when you need the full hierarchical structure including category headings — useful for understanding how a product fits into the classification tree.
  • Large chapters (72 Iron/Steel, 84 Machinery, 85 Electrical) can have thousands of tariff lines. Set a high maxResults or focus with a keyword or heading number.
  • Footnotes contain critical tariff information including Chapter 99 additional duty references. Keep includeFootnotes: true (default) for trade compliance work.

Output

{
    "htsNumber": "8541.40.60",
    "statisticalSuffix": "45",
    "description": "Light-emitting diodes (LEDs), other than laser diodes",
    "fullDescription": "Semiconductor devices > Photosensitive semiconductor devices > Light-emitting diodes (LEDs), other than laser diodes",
    "indent": 2,
    "chapter": "85",
    "heading": "8541",
    "subheading": "8541.40",
    "section": "XVI",
    "generalRate": "Free",
    "specialRate": "Free (A,AU,BH,CL,CO,D,E,IL,JO,KR,MA,OM,P,PA,PE,S,SG)",
    "otherRate": "35%",
    "units": "No.",
    "additionalDuties": "",
    "quotaQuantity": "",
    "effectivePeriod": "",
    "footnotes": [
        {
            "marker": "1/",
            "text": "See subheading 9903.88.03",
            "columns": ["general"],
            "type": "chapter99"
        }
    ],
    "footnotesSummary": "1/ See subheading 9903.88.03",
    "hasAdditionalTariff": true,
    "isSection301": true,
    "isSection232": false
}

Output Fields

Classification fields:

FieldTypeDescription
htsNumberStringFull HTS number (e.g., "8541.40.60")
statisticalSuffixStringTwo-digit statistical suffix
chapterStringHTS chapter number (01–99)
headingStringFour-digit heading (e.g., "8541")
subheadingStringSix-digit subheading (e.g., "8541.40")
sectionStringHTS section in Roman numerals (I–XXII)
indentIntegerNesting level in the HTS hierarchy (0 = chapter heading)

Description fields:

FieldTypeDescription
descriptionStringProduct description at this level (cleaned of HTML)
fullDescriptionStringHierarchical breadcrumb from parent categories (e.g., "Semiconductor devices > Photosensitive > LEDs")

Rate fields:

FieldTypeDescription
generalRateStringColumn 1 General (MFN) rate — the rate most importers pay
specialRateStringPreferential rates under FTAs. Letters indicate qualifying programs (A=GSP, AU=Australia, KR=Korea, etc.)
otherRateStringColumn 2 rate for non-NTR countries (Cuba, North Korea, etc.) — typically much higher
unitsStringUnit of quantity (kg, No., doz, m², etc.)
additionalDutiesStringAdditional duty provisions from Chapter 99
quotaQuantityStringTariff-rate quota quantities if applicable
effectivePeriodStringDate range when this rate is effective

Footnote fields:

FieldTypeDescription
footnotes[]ArrayIndividual footnotes with marker, text, columns, and type
footnotesSummaryStringAll footnotes concatenated with pipe separators

Tariff flag fields:

FieldTypeDescription
hasAdditionalTariffBooleantrue when any Chapter 99 additional duty applies
isSection301Booleantrue when subject to Section 301 China tariffs (9903.88.xx)
isSection232Booleantrue when subject to Section 232 steel/aluminum tariffs (9903.80.xx)

Understanding Duty Rates

  • Percentage rates (e.g., "3.7%") — ad valorem duty based on declared customs value
  • Specific rates (e.g., "32.8¢/kg") — fixed duty per unit of quantity
  • Compound rates (e.g., "5.3% + 1.2¢/kg") — combination of ad valorem and specific
  • "Free" — no duty applies under that column
  • Empty rate — this line is a statistical breakout or category header, not a dutiable line

Special Rate Program Codes

CodeProgramCodeProgram
AGSP (Generalized System of Preferences)MAMorocco FTA
AUAustralia FTAOMOman FTA
BHBahrain FTAPCAFTA-DR + Peru
CLChile FTAPAPanama FTA
COColombia FTAPEPeru FTA
DAfrican Growth & Opportunity ActSSingapore FTA
ECaribbean Basin InitiativeSGSingapore FTA
ILIsrael FTAJOJordan FTA
KRKorea (KORUS) FTA

Use Cases

  • Customs brokers and compliance officers classifying imported goods, verifying applicable duty rates, and identifying products subject to additional tariffs under Section 301 or 232
  • Import/export businesses calculating landed costs by combining duty rates with product values to determine total import costs before placing orders
  • Supply chain managers evaluating sourcing alternatives across countries by comparing general rates, FTA preferential rates, and additional tariff exposure
  • Trade attorneys researching tariff classifications for customs disputes, ruling requests, and tariff engineering strategies
  • Policy researchers and economists tracking tariff rate structures across product categories to model trade policy impacts and analyze tariff escalation patterns
  • Product designers and engineers exploring tariff engineering opportunities — modifying product specifications to achieve a more favorable HTS classification
  • E-commerce importers checking duty rates before sourcing products from international suppliers, especially for goods from China that may be subject to Section 301 tariffs

How to Use the API

Python

import requests
import time

run = requests.post(
    "https://api.apify.com/v2/acts/ryanclinton~usitc-hts-tariff-search/runs",
    params={"token": "YOUR_APIFY_TOKEN"},
    json={
        "keyword": "lithium battery",
        "maxResults": 50
    },
    timeout=30,
).json()

run_id = run["data"]["id"]
while True:
    status = requests.get(
        f"https://api.apify.com/v2/actor-runs/{run_id}",
        params={"token": "YOUR_APIFY_TOKEN"},
        timeout=10,
    ).json()
    if status["data"]["status"] in ("SUCCEEDED", "FAILED", "ABORTED"):
        break
    time.sleep(3)

dataset_id = status["data"]["defaultDatasetId"]
items = requests.get(
    f"https://api.apify.com/v2/datasets/{dataset_id}/items",
    params={"token": "YOUR_APIFY_TOKEN"},
    timeout=30,
).json()

for item in items:
    s301 = " [301]" if item["isSection301"] else ""
    print(f"{item['htsNumber']} | {item['generalRate']} | {item['description']}{s301}")

JavaScript

const response = await fetch(
    "https://api.apify.com/v2/acts/ryanclinton~usitc-hts-tariff-search/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN",
    {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({
            keyword: "lithium battery",
            maxResults: 50,
        }),
    }
);

const tariffs = await response.json();
tariffs.forEach(t =>
    console.log(`${t.htsNumber} | ${t.generalRate} | ${t.description} ${t.isSection301 ? "[301]" : ""}`)
);

cURL

curl -X POST "https://api.apify.com/v2/acts/ryanclinton~usitc-hts-tariff-search/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "keyword": "lithium battery",
    "maxResults": 50
  }'

How It Works

Input (keyword, htsNumber, or chapter)
  │
  ▼
┌──────────────────────────────────────────────────┐
│  Step 1: Route Search Mode                       │
│  keyword  → USITC search API (full-text)         │
│  htsNumber → USITC search API (code lookup)      │
│  chapter  → USITC chapter API (all lines)        │
└──────────────────────────────────────────────────┘
  │
  ▼
┌──────────────────────────────────────────────────┐
│  Step 2: Fetch & Parse                           │
│  Retrieve JSON from hts.usitc.gov REST API.      │
│  Strip HTML tags from descriptions.              │
│  Parse indent levels for hierarchy.              │
└──────────────────────────────────────────────────┘
  │
  ▼
┌──────────────────────────────────────────────────┐
│  Step 3: Build Hierarchical Descriptions         │
│  Track parent descriptions at each indent level. │
│  Construct fullDescription breadcrumbs:          │
│  "Chapter heading > Heading > Subheading > Item" │
│  Eliminates ambiguous "Other" descriptions.      │
└──────────────────────────────────────────────────┘
  │
  ▼
┌──────────────────────────────────────────────────┐
│  Step 4: Classify & Map                          │
│  Extract chapter, heading, subheading from code. │
│  Map chapter → HTS section (I–XXII) using        │
│  99-chapter lookup table.                        │
│  Apply dutyRateFilter if enabled.                │
└──────────────────────────────────────────────────┘
  │
  ▼
┌──────────────────────────────────────────────────┐
│  Step 5: Footnote Analysis & Tariff Detection    │
│  Parse footnote markers, text, and columns.      │
│  Detect Section 301: regex 9903.88 / "301"       │
│  Detect Section 232: regex 9903.80 / "232"       │
│  Set hasAdditionalTariff for any Chapter 99 ref. │
└──────────────────────────────────────────────────┘
  │
  ▼
Structured tariff records pushed to dataset

Data Sources

SourceAPI EndpointAuth Required
USITC HTShttps://hts.usitc.gov/reststop/searchNo
USITC HTShttps://hts.usitc.gov/reststop/getChapterNo

HTS Chapter Quick Reference

ChaptersSectionDescription
01–05I–IILive Animals, Animal Products
06–14II–IIIVegetable Products
15IIIFats & Oils
16–24IVFood, Beverages, Tobacco
25–27VMineral Products
28–38VI–VIIChemicals
39–40VIIPlastics & Rubber
44–46IXWood Products
47–49XPaper & Pulp
50–63XITextiles & Apparel
72–83XVBase Metals (Iron, Steel, Aluminum, Copper)
84XVIMachinery
85XVIElectrical Equipment
86–89XVIIVehicles & Transport
90–92XVIIIInstruments
97XXIWorks of Art
98–99XXIISpecial Classifications & Additional Duties

How Much Does It Cost?

ScenarioResultsEst. TimeEst. Cost
Single HTS code lookup1–53 sec< $0.001
Keyword search (100 results)1005 sec< $0.01
Full chapter browse (500+ results)50010 sec~$0.01

The actor uses 256 MB memory and makes lightweight REST API calls with no browser rendering. The Apify free tier covers thousands of runs per month.

Tips

  • Use product codes for Section 301 analysis — search for your product keyword, then check the isSection301 flag on each result to see which classifications are subject to China tariffs.
  • Browse by chapter for comprehensive coverage — if you import goods from a specific product category, browse the entire chapter to see all available tariff lines and rate options.
  • Check specialRate for FTA savings — if you source from a country with a US free trade agreement, the specialRate field shows whether preferential rates are available.
  • Disable dutyRateFilter for tariff engineering — seeing the full hierarchy helps identify where product modifications could shift a classification to a more favorable tariff line.
  • Read footnotes carefully — Chapter 99 footnotes often contain critical information about additional tariffs, quota requirements, and temporary duty modifications that aren't reflected in the base rate columns.
  • Combine with USITC DataWeb — this actor covers tariff rates and classifications. For actual import/export volume and value data by HTS code, use USITC's DataWeb tool.

Limitations

  • Keyword search relevance — the USITC search API returns results ranked by text relevance. Some results may be tangentially related to your keyword.
  • No import/export volume data — this actor covers tariff rates and classifications only. Trade volume statistics require USITC DataWeb or Census Bureau data.
  • Large chapters may be truncated — some chapters (72, 84, 85) have thousands of tariff lines. Set maxResults high enough to capture the full chapter.
  • Section 301/232 detection is regex-based — the actor identifies additional tariffs by matching footnote patterns (9903.88.xx for 301, 9903.80.xx for 232). Unusual footnote formatting may cause false negatives.
  • Rate column format varies — duty rates appear as percentages, specific rates (cents/kg), compound rates, or "Free". Parsing these into numeric values requires additional processing on your end.
  • No historical rates — the API returns the currently effective tariff schedule. Historical rate data is not available.
  • Hierarchical descriptions require context — the fullDescription field is constructed from parent indent levels in the API response. For keyword searches that return scattered results, some parent descriptions may be missing.

Responsible Use

  • All data is public — the Harmonized Tariff Schedule is published by the US International Trade Commission and is freely available without restrictions.
  • Respect USITC API limits — the actor makes lightweight requests to the USITC REST API. Avoid launching excessive concurrent runs.
  • Verify for official filings — this actor provides reference data for research and analysis. For customs entries and official classifications, always consult the official USITC HTS website or a licensed customs broker.

FAQ

Is an API key required? No. The USITC HTS REST API is free and does not require authentication.

How current are the tariff rates? The USITC updates the HTS regularly to reflect new trade agreements, tariff changes, and product classification decisions. Rates reflect the currently effective schedule.

Can I find out if my product is subject to Section 301 China tariffs? Yes. Search for your product keyword or HTS code and check the isSection301 boolean flag. The footnotes field will contain the specific Chapter 99 subheading reference.

What is the difference between General and Special rates? The General (MFN) rate applies to imports from most countries with Normal Trade Relations. The Special rate offers lower (often zero) rates for imports from countries with which the US has a free trade agreement (USMCA, KORUS, etc.) or preferential trade programs (GSP, AGOA).

Can I browse the entire HTS? You can browse one chapter at a time using the chapter parameter (01–99). Each chapter may contain hundreds to thousands of tariff lines.

Why do some results show empty rate fields? Lines with empty general/special/other rates are category headers or indent-0 descriptions in the HTS hierarchy. They provide context but are not independently dutiable. Set dutyRateFilter: true (default) to exclude these.

How do I find the right HTS code for my product? Start with a keyword search using your product name. Review the results and their fullDescription fields to identify the best-matching tariff line. For official classification, consult a customs broker or file a binding ruling request with CBP.

Integrations

  • Apify API — trigger runs programmatically for automated tariff rate checks in import cost calculators
  • Zapier — automatically look up tariff rates when new products are added to your inventory management system
  • Make (Integromat) — build workflows that check Section 301 exposure for new supplier quotes
  • Google Sheets — export tariff data directly for landed cost analysis spreadsheets
  • Webhooks — receive tariff data as soon as the run completes for real-time pricing engines
  • Scheduled Runs — monitor tariff rate changes by running periodic checks on your key HTS codes

Related Actors

ActorWhat it doesUse with HTS Tariff Search
CBP Customs RulingsCBP classification rulingsFind legally binding rulings on how products are classified under the HTS
UN COMTRADE Trade DataInternational trade statisticsGet import/export volumes by HS code to complement tariff rate data
Currency Exchange Rate TrackerLive exchange ratesCalculate landed costs in local currency alongside tariff rates
Senate Lobbying SearchFederal lobbying filingsTrack lobbying activity on tariff and trade policy issues
Federal Register SearchFederal Register noticesMonitor proposed tariff changes and trade policy announcements
OECD Economic StatisticsOECD trade dataBroader trade analysis context alongside HTS tariff rates

How it works

01

Configure

Set your parameters in the Apify Console or pass them via API.

02

Run

Click Start, trigger via API, webhook, or set up a schedule.

03

Get results

Download as JSON, CSV, or Excel. Integrate with 1,000+ apps.

Use cases

Sales Teams

Build targeted lead lists with verified contact data.

Marketing

Research competitors and identify outreach opportunities.

Data Teams

Automate data collection pipelines with scheduled runs.

Developers

Integrate via REST API or use as an MCP tool in AI workflows.

Ready to try USITC HTS Tariff Search?

Start for free on Apify. No credit card required.

Open on Apify Store