Measured comparison · refreshed 2026-10-15

Tariff Accuracy Check

On 2026-10-15 we sent the same six live queries to four competing tariff tools and to our own production endpoint, archived every raw response, and checked each answer line-by-line against the official USITC schedule. No marketing numbers below — just what each service actually returned, with the archived bytes one click away.

6 query samples·5 services measured ·window 2026-10-15T13:46-13:48 UTC·every cell links its raw response

How this was measured

  • Samples: six real queries covering HS chapters 22/61/64/73/85/87 and six origins (CN, FR, DE, IN, VN, ID); HTS prefixes taken from existing rows of the USITC-derived ledger; anonymous requests, zero personal data.
  • Truth reference: USITC REST export data/hts.json (generated 2026-10-09T17:43Z, 23,193 lines); each truth cell was extracted programmatically, never copied by hand.
  • Window: all 30 requests completed inside 2026-10-15T13:46-13:48 UTC; serial single-exit measurement, so absolute latencies vary with network conditions while the cross-vendor ordering is stable across batches C/E/F.
  • Honest blanks: vendors whose anonymous surface yields no comparable figures this round are shown as such — not extrapolated, not scored zero.
  • Dollar figures: for specific-rate lines the duty shown is what each service returned for the quantity echoed in its own archived response (sample S2: 750 liters × 6.3¢/liter = $47.25).
  • Re-run: single-spot commands in the “Verify it yourself” section below reproduce every headline number against live endpoints and the ledger.

Accuracy matrix — six samples across five services

Query (HS × origin)USITC ledger SimplyDutyZonos Otterly.aitariffsapi ExportSonar
8517.13.00.00S1 · CN origin · $1,000 · SmartphonesFreeSignup-gated: POST answered 200 but returned no duty figures without an API key EvidenceClient-side app shell; no server-rendered query result to compare EvidenceNo HS/tariff lookup surface in scope of this test Evidencebase Free (0%) + MPF 0.35% — matches ledger EvidenceFree → $0.00 Evidence
2204.21.50S2 · FR origin · $500 · Still wine, ≤2 l6.3¢/literSignup-gated: POST answered 200 but returned no duty figures without an API key EvidenceClient-side app shell; no server-rendered query result to compare EvidenceNo HS/tariff lookup surface in scope of this test Evidencebase 0% — specific ¢/L rate not parsed Evidence6.3¢/liter → $47.25 Evidence
8703.23S3 · DE origin · $20,000 · Passenger cars 1500–3000 cc2.5%Signup-gated: POST answered 200 but returned no duty figures without an API key EvidenceClient-side app shell; no server-rendered query result to compare EvidenceNo HS/tariff lookup surface in scope of this test Evidencebase “Section 301” 10% (China-origin measure) where ledger shows 2.5% Evidence2.5% → $500.00 Evidence
6109.10S4 · IN origin · $300 · Cotton T-shirts, knitted16.5%Signup-gated: POST answered 200 but returned no duty figures without an API key EvidenceClient-side app shell; no server-rendered query result to compare EvidenceNo HS/tariff lookup surface in scope of this test Evidencebase “Section 301” 10%; total_duty $31.05 vs ledger-derived $49.50 Evidence16.5% → $49.50 Evidence
7326.90S5 · VN origin · $800 · Other iron/steel articlesFreeSignup-gated: POST answered 200 but returned no duty figures without an API key EvidenceClient-side app shell; no server-rendered query result to compare EvidenceNo HS/tariff lookup surface in scope of this test Evidencebase “Section 301” 12.5% where ledger shows Free EvidenceFree → $0.00 Evidence
6404.11S6 · ID origin · $250 · Sports footwear, textile upper10.5%Signup-gated: POST answered 200 but returned no duty figures without an API key EvidenceClient-side app shell; no server-rendered query result to compare EvidenceNo HS/tariff lookup surface in scope of this test Evidencebase 10% where ledger shows 10.5% Evidence10.5% → $26.25 Evidence

Each EV link opens the archived raw response captured during the same measurement window (served under /data/accuracy-check-batch-f/, also committed to the repository). “Signup-gated” means the anonymous channel returned a page but no comparable duty figures this round; it is not a claim about paid-API capabilities. Dollar figures are customs duty only — statutory Merchandise Processing Fees are charged separately by the services that itemize them.

What the archived responses show

Our six answers match the ledger

All six ExportSonar cells reproduce the printed USITC Column 1 general rate, including the two cases the ledger makes easy to miss: a specific 6.3¢/liter component on wine (S2) and a duty-free 7326.90 suffix (S5).

One vendor returned Section 301 as a base rate for non-China origins

For the DE, IN, VN and ID samples, tariffsapi's demo endpoint returned a “Section 301” layer of 10–12.5% as the base rate; Section 301 measures apply to China-origin goods, and the ledger rates for those lines are 2.5%, 16.5%, Free and 10.5% respectively. On the French wine sample the specific ¢-per-liter component went unparsed (base 0%). These are archived responses, not interpretations — follow the Evidence links.

Three anonymous surfaces yielded no comparable figures

SimplyDuty's anonymous POST returns HTTP 200 but displays no duty figures without an account; Zonos serves a client-side app with no server-rendered result; Otterly.ai operates AI-visibility scans rather than an HS lookup. They are marked “not measurable anonymously this round” above.

Response latency, same window

ServiceMedian (ms) MinMax
ExportSonar214141435
tariffsapi248719974095
Zonos346825415738
Otterly.ai364029874975
SimplyDuty6617475113507

Same six samples, serial execution, full round-trip per request. Medians: ExportSonar 214 ms vs fastest competitor 2,487 ms (≈11.6×) — measured 2026-10-15T13:46-13:48 UTC; method and re-run commands in the appendix above and below. Absolute values fluctuate with network conditions; the ordering has held across three monthly batches.

Verify it yourself

1. Our live endpoint (expected: general 16.5%, duty $49.50)

curl -s 'https://exportsonar.com/api/v1/tariff?hs=6109.10&origin=IN&value=300'

2. The competitor demo endpoint used in the batch (expected: a “Section 301” base layer of 10%)

curl -s 'https://tariffsapi.com/demo/resolve?hts=6109&origin=IN&value=300'

3. The authoritative ledger row (expected: 6109.10.00 → 16.5%)

python3 -c "import json;d=json.load(open('data/hts.json'));print([r for r in d['records'] if r['hts']=='6109.10.00'])"

Check your own codes against the ledger

Every rate behind this comparison comes straight from the official schedule — the same numbers power our free lookup. No signup, no daily cap.

Methodology for the mirrored datasets behind this audit: the UFLPA enforcement statistics and the EU TARIC measures pages document sources row by row.

Open the Duty Calculator Browse HS Codes See Pricing