curl --request GET \
--url https://api.worldmonitor.app/api/trade/v1/get-us-import-duty \
--header 'X-WorldMonitor-Key: <api-key>'import requests
url = "https://api.worldmonitor.app/api/trade/v1/get-us-import-duty"
headers = {"X-WorldMonitor-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-WorldMonitor-Key': '<api-key>'}};
fetch('https://api.worldmonitor.app/api/trade/v1/get-us-import-duty', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.worldmonitor.app/api/trade/v1/get-us-import-duty",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-WorldMonitor-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.worldmonitor.app/api/trade/v1/get-us-import-duty"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-WorldMonitor-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.worldmonitor.app/api/trade/v1/get-us-import-duty")
.header("X-WorldMonitor-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.worldmonitor.app/api/trade/v1/get-us-import-duty")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-WorldMonitor-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"additionalDutiesLoaded": true,
"hsCode": "870380",
"htsRelease": "2026HTSRev21",
"lines": [
{
"additionalDuties": [
{
"addedRate": 100,
"authority": "US_DUTY_AUTHORITY_SECTION_301",
"condition": "",
"effectiveFrom": "2024-09-27",
"heading": "9903.91.03",
"legalNote": "U.S. note 31(d)",
"program": "China four-year review",
"status": "US_ADDITIONAL_DUTY_STATUS_APPLIES",
"topUpTo": 0
},
{
"addedRate": 25,
"authority": "US_DUTY_AUTHORITY_SECTION_232",
"condition": "Section 232 rates vary by origin deal and, for some derivatives, apply to metal content only.",
"effectiveFrom": "",
"heading": "9903.94.01",
"legalNote": "U.S. note 33(b)",
"program": "Passenger vehicles and light trucks",
"status": "US_ADDITIONAL_DUTY_STATUS_CONDITIONAL",
"topUpTo": 0
}
],
"baseAdValorem": 2.5,
"baseNonAdValorem": false,
"baseRate": "2.5%",
"basis": "US_DUTY_BASIS_MFN",
"column2Rate": "10%",
"description": "Other vehicles, with only electric motors for propulsion",
"estimateComplete": false,
"estimatedRate": 102.5,
"generalRate": "2.5%",
"htsCode": "8703.80.00",
"preferenceProgram": "",
"specialRate": "Free (A+,AU,B,BH,CL,CO,D,E,IL,JO,KR,MA,OM,P,PA,PE,S,SG)",
"unresolvedPrograms": [
"D",
"E"
]
}
],
"partnerCountry": "156",
"source": "USITC Harmonized Tariff Schedule",
"sourceUrl": "https://hts.usitc.gov/search?query=8703.80",
"upstreamUnavailable": false
}{
"violations": [
{
"field": "<string>",
"description": "<string>"
}
]
}{
"error": "<string>"
}{
"error": "<string>",
"code": "subscription_lapsed",
"requiredTier": 123,
"currentTier": 123,
"planKey": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"code": "renewal_verification_pending",
"requiredTier": 123
}{
"message": "<string>"
}GetUsImportDuty
Current US duty on one product from one country (USITC HTS). PRO-gated. Requires entitlement tier >= 1.
curl --request GET \
--url https://api.worldmonitor.app/api/trade/v1/get-us-import-duty \
--header 'X-WorldMonitor-Key: <api-key>'import requests
url = "https://api.worldmonitor.app/api/trade/v1/get-us-import-duty"
headers = {"X-WorldMonitor-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-WorldMonitor-Key': '<api-key>'}};
fetch('https://api.worldmonitor.app/api/trade/v1/get-us-import-duty', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.worldmonitor.app/api/trade/v1/get-us-import-duty",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-WorldMonitor-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.worldmonitor.app/api/trade/v1/get-us-import-duty"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-WorldMonitor-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.worldmonitor.app/api/trade/v1/get-us-import-duty")
.header("X-WorldMonitor-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.worldmonitor.app/api/trade/v1/get-us-import-duty")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-WorldMonitor-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"additionalDutiesLoaded": true,
"hsCode": "870380",
"htsRelease": "2026HTSRev21",
"lines": [
{
"additionalDuties": [
{
"addedRate": 100,
"authority": "US_DUTY_AUTHORITY_SECTION_301",
"condition": "",
"effectiveFrom": "2024-09-27",
"heading": "9903.91.03",
"legalNote": "U.S. note 31(d)",
"program": "China four-year review",
"status": "US_ADDITIONAL_DUTY_STATUS_APPLIES",
"topUpTo": 0
},
{
"addedRate": 25,
"authority": "US_DUTY_AUTHORITY_SECTION_232",
"condition": "Section 232 rates vary by origin deal and, for some derivatives, apply to metal content only.",
"effectiveFrom": "",
"heading": "9903.94.01",
"legalNote": "U.S. note 33(b)",
"program": "Passenger vehicles and light trucks",
"status": "US_ADDITIONAL_DUTY_STATUS_CONDITIONAL",
"topUpTo": 0
}
],
"baseAdValorem": 2.5,
"baseNonAdValorem": false,
"baseRate": "2.5%",
"basis": "US_DUTY_BASIS_MFN",
"column2Rate": "10%",
"description": "Other vehicles, with only electric motors for propulsion",
"estimateComplete": false,
"estimatedRate": 102.5,
"generalRate": "2.5%",
"htsCode": "8703.80.00",
"preferenceProgram": "",
"specialRate": "Free (A+,AU,B,BH,CL,CO,D,E,IL,JO,KR,MA,OM,P,PA,PE,S,SG)",
"unresolvedPrograms": [
"D",
"E"
]
}
],
"partnerCountry": "156",
"source": "USITC Harmonized Tariff Schedule",
"sourceUrl": "https://hts.usitc.gov/search?query=8703.80",
"upstreamUnavailable": false
}{
"violations": [
{
"field": "<string>",
"description": "<string>"
}
]
}{
"error": "<string>"
}{
"error": "<string>",
"code": "subscription_lapsed",
"requiredTier": 123,
"currentTier": 123,
"planKey": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"code": "renewal_verification_pending",
"requiredTier": 123
}{
"message": "<string>"
}Authorizations
User-issued WorldMonitor API key.
Query Parameters
HTS code: 6, 8 or 10 digits, no dots ("870323").
^[0-9]{6}([0-9]{2}){0,2}$Exporter, 3-digit UN M49 ("156").
^[0-9]{3}$Optional JMESPath expression applied server-side to project or reduce the JSON response before it is returned (mirrors the MCP jmespath argument). Invalid expressions, expressions larger than 1024 UTF-8 bytes, or projections that exceed the 256 KB output cap return HTTP 400 with a {_jmespath_error, original_keys} envelope. Grammar and worked examples: https://www.worldmonitor.app/docs/mcp-jmespath.
Response
Successful response
Current US duty on a product from one country.
HTS code, as requested.
Exporter code, as requested.
HTS release of the chapter 99 index ("2026HTSRev21").
Show child attributes
Show child attributes
False when the chapter 99 index was unavailable.
Data source.
HTS search page for the code.
True on a fault, false on a coverage answer.
Why no line was served. NOT_COVERED is final; UPSTREAM_UNAVAILABLE is a fault.
US_IMPORT_DUTY_UNAVAILABLE_REASON_UNSPECIFIED, US_IMPORT_DUTY_UNAVAILABLE_REASON_INVALID_REQUEST, US_IMPORT_DUTY_UNAVAILABLE_REASON_NOT_COVERED, US_IMPORT_DUTY_UNAVAILABLE_REASON_UPSTREAM_UNAVAILABLE Was this page helpful?
