Customs Duty Lookup
Look up EU customs duty by HS code and origin country: the duty rate, preferential rates and anti-dumping status.
customs-duty-lookup Example
{
"notes": "The provided page content does not contain information for HS code 847130. The page displays TARIC measure information for Chapter 1 (Live Animals) codes only, specifically codes in the 0101-0102 range. HS code 847130 falls under Chapter 84 (Machinery) and is not present in the displayed content.",
"hs_code": "847130",
"vat_rate": null,
"duty_rate": null,
"duty_type": null,
"description": null,
"destination": null,
"anti_dumping": false,
"origin_country": "not specified",
"additional_duties": [],
"preferential_rates": []
} Inputs
| Field | Type | Required | What it is |
|---|---|---|---|
hs_code | string | Yes | — |
origin_country | string | No | — |
destination_country | string | No | — |
Output fields
How reliably each field appears in a successful answer.
| Field | Type | Appears |
|---|---|---|
duty_rate | string | Always (present in every successful answer) |
duty_type | string | Always (present in every successful answer) |
anti_dumping | boolean | Always (present in every successful answer) |
preferential_rates | array | Always (present in every successful answer) |
How to call it
The same tool through each route. MCP clients reach it through Strale’s server at https://api.strale.io/mcp; the call below is what the agent sends.
# Needs an API key. max_price_cents caps what this call may cost.
curl -X POST https://api.strale.io/v1/do \
-H "Authorization: Bearer $STRALE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"capability_slug": "customs-duty-lookup",
"inputs": {
"hs_code": "8471.30",
"destination_country": "US"
},
"max_price_cents": 20
}' {
"tool": "strale_execute",
"arguments": {
"slug": "customs-duty-lookup",
"inputs": {
"hs_code": "8471.30",
"destination_country": "US"
},
"max_price_cents": 20
}
} import { Strale } from "straleio";
const strale = new Strale({ apiKey: process.env.STRALE_API_KEY! });
const result = await strale.do({
capability_slug: "customs-duty-lookup",
inputs: {
"hs_code": "8471.30",
"destination_country": "US"
},
max_price_cents: 20,
}); import os
from straleio import Strale, DoRequest
strale = Strale(api_key=os.environ["STRALE_API_KEY"])
result = strale.do(DoRequest(
capability_slug="customs-duty-lookup",
inputs={
"hs_code": "8471.30",
"destination_country": "US",
},
max_price_cents=20,
)) # No account. The first request answers 402 with the price in USDC;
# an x402 client pays it from your wallet and repeats the request.
curl -i 'https://api.strale.io/x402/v2/customs-duty-lookup?hs_code=8471.30&destination_country=US' Limitations
Rates depend on the HS code and country of origin
Duty rates come from TARIC and depend on the correct HS code classification and declared country of origin.
What to do instead: Verify extracted duty rates against the official TARIC database and consult a customs broker for complex classifications
Output size cap per call
Structured output is limited to about 2000 output tokens per call; requests exceeding this limit are refused rather than returned truncated. Requests with large results can exceed this limit, and repeating the same request does not help.
What to do instead: Check the duty page directly in the official TARIC database.
Related tools
- Address Geocoding €0.02
- Barcode Lookup €0.05
- Container Tracking €0.05
- Country Lookup €0.02
- Country Tax Rates €0.02
- Country Trade Data €0.20