Jump to content

The EU customs tariff as an API and MCP server

Describe a product, get the CN code and its import duties. One key for REST and MCP.

Free: 30 AI units a day, no credit card

Or add it to your AI in one click

$ curl https://hscode.info/api/v1/classify \ -H "Authorization: Bearer $HSCODE_KEY" \ --json '{"mode":"accurate","text":""}'

CN code
6109 10 00 10
high confidence
Duty · Viet Nam
12 % 0 %
Decision 0753/20
On a €10,000 shipment
€0
saves €1,200
Origin
  • Official EU data European Commission TARIC
  • HTTPS only Encrypted in transit
  • Cloudflare network ISO 27001 · SOC 2 infrastructure
  • Hashed API keys Shown once, revocable
  • OAuth 2.1 Sign-in for AI agents
  • Private by default Descriptions not saved
declarable CN codes
16,742
declarable CN codes
yearly snapshots since 2016
11
yearly snapshots since 2016
languages: DE, EN, FR
3
languages: DE, EN, FR
test queries right first time
9 of 10
test queries right first time

Source: European Commission TARIC data. Accuracy from 10 sample queries with Precise AI.

What it replaces

Find the code Search 16,742 codes and read the chapter notes One description, the top 5 codes with a reason
Read the duty Dozens of measures per code, by origin Every measure in the same response, with legal base
Stay current Check which tariff year applies Each response names its snapshot

First CN code in five minutes

  1. 1. Sign in

    Email link, no password.

  2. 2. Create a key

    Account › API keys.

  3. 3. Call the API

    Send the key as a Bearer token.

One call, description to code

Any language in, the top 5 codes out, each with its path and import duties.

  • HTTPS only
  • Keys stored hashed and shown once
  • One key per app, up to 10, revocable any time
  • Every duty with its legal base
curl -X POST https://hscode.info/api/v1/classify \
  -H "Authorization: Bearer $HSCODE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "frozen shrimp, peeled", "mode": "accurate"}'
Response (shortened)
{
  "snapshot": "2026-10",
  "mode": "accurate",
  "reranked": true,
  "results": [
    {
      "goods_code": "0306179290",
      "description": "Other",
      "path": ["FISH AND CRUSTACEANS, …", "Crustaceans, …", "Frozen",
               "Other shrimps and prawns", "Shrimps of the genus Penaeus", "Other"],
      "confidence": 0.78,
      "reasoning": "Frozen peeled shrimp of the genus Penaeus is most likely classified as frozen other shrimps and prawns under 0306 …",
      "duties": [
        {
          "origin": "ERGA OMNES",
          "duty": "12.000 %",
          "measure_type": "Third country duty",
          "legal_base": "Regulation 1006/11"
        }
      ]
    }
  ],
  "disclaimer": "Advisory result generated automatically from the EU TARIC nomenclature. It is not a Binding Tariff Information (BTI) decision; verify the classification before declaring goods."
}

Endpoints

Versioned under /api/v1.

EndpointReturnsCounts as
POST/api/v1/classifyTop 5 codes for a description, with duties1 AI unit (fast) or 5 (accurate)
GET/api/v1/{lang}/{year}/codes/{code}One code with hierarchy and dutiesLookup
GET/api/v1/{lang}/{year}/search?q=Search codes and descriptionsLookup
GET/api/v1/{year}/duties/{code}Import duties of a codeLookup
GET/api/v1/{lang}/{year}/chaptersChapter listLookup
GET/api/v1/{lang}/{year}/chapters/{chapter}All rows of a chapterLookup
GET/api/v1/snapshotsLanguages and yearly snapshotsLookup
Full reference with schemas and errors

Give your AI the EU tariff

Sign in once in the browser. No key to copy.

Cursor and VS Code install directly. The others copy the URL, a command or a prompt.

  • OAuth 2.1 sign-in
  • You approve each app
  • Or use an API key

Tools your agent gets

classify
Description to the top 5 codes
lookup_code
One code with its duties
search_codes
Keyword or partial-code search
duty_history
Duties of a code since 2016

Manual setup

Run in your terminal

claude mcp add --transport http hscode https://hscode.info/mcp

Trust and security

Official EU source

The European Commission's TARIC data, not scraped.

Dated

Each response names its snapshot, for example 2026-10.

Duties included

Per origin, with preferences, quotas and legal base.

Advisory

Only a Binding Tariff Information (BTI) from customs is binding.

Measured

Precise AI 9 of 10, Quick AI 8 of 10 on sample queries.

Your keys

Stored hashed, shown once, revocable any time.

Pricing

Quick AI costs 1 unit, Precise AI 5. Lookups are counted separately.

Free

Try it out

€0

  • 30 AI units a day
  • 100 code lookups a day
  • REST API and MCP server
Create free account

Starter

Occasional importers

€19 / month

  • 1,500 AI units
  • 25,000 code lookups
  • REST API and MCP server
Start free

Pro

Importers and shops

€39 / month

  • 3,500 AI units
  • 50,000 code lookups
  • REST API and MCP server
Start free

Business

Forwarders and brokers

€109 / month

  • 10,000 AI units
  • 500,000 code lookups
  • REST API and MCP server
Start free

Larger volumes

Scale

Platforms and ERPs

24,000 AI units

2,000,000 code lookups

€249 / month

Start free

Bulk

Catalogue enrichment

55,000 AI units

5,000,000 code lookups

€599 / month

Start free

Enterprise

Committed volume

from 250,000 AI units

Unlimited lookups

Custom

Contact us

Prices in EUR. Yearly billing: two months free.

Upgrade any time on your account page, paid by card right there. Your API key keeps working.

Who it is for

Importers

Know the code and duty before you order.

Forwarders and brokers

Pre-classify client product lists.

Shops and ERPs

Fill missing CN codes in your catalogue.

AI agents

Real codes instead of guesses.

Questions

Is there a free plan?

Yes. 30 AI units and 100 lookups a day, with the API and the MCP server.

What is an AI unit?

Quick AI costs 1 unit and takes a few seconds. Precise AI costs 5, takes 10 to 30 seconds and adds a confidence and a reason.

What happens at my limit?

Free returns HTTP 429 until the next UTC day, paid plans until the 1st of the next month (UTC). Nothing is billed beyond your plan.

Are the results legally binding?

No. Only a Binding Tariff Information (BTI) from customs is binding.

How current is the data?

Every year since 2016. The current year uses the latest TARIC extraction, October 2026.

Which languages?

Results in German, English and French. Queries in any language.

Your first CN code is five minutes away

Free account, no credit card.