Developer

Shipping Tools API

The figures behind these tools are available as a free read-only JSON API: look up duty and import-tax positions, transit ranges and chargeable weight for 23 destination markets, with the source page and review date on every record. No key, no account and no attribution fee — quote it with a link to the route page named in the record.

Read-only JSON endpoints over the duty, import-tax, transit, chargeable-weight and HS-chapter duty data published on this site. No key and no account; every response carries its sources, review date and a pre-filled quotation link.

What can I ask the API?

The endpoints cover the questions a buyer asks before committing: what duty and tax a market charges, what documentation and certification it requires, who may act as importer of record, how long the lane takes, and what a shipment will be billed on. They are the same figures the tools and route pages publish, served from the same data.

How do I call it?

curl "https://hofreight.com/api/tools/lane?country=kenya&fields=importerOfRecord,certification"

Start from /api/tools to see the endpoint index and dataset counts, or read /openapi.json to wire the API into an agent framework, a ChatGPT Action or a Copilot plugin.

Can an AI assistant call these tools directly?

Yes. The same tools are published as a remote MCP server athttps://hofreight.com/mcp — stateless Streamable HTTP, no key, no session. Point any MCP client (Claude, ChatGPT connectors, IDE agents) at the URL and the toolslist_lanes, get_lane, transit_time,landed_cost, chargeable_weight and hs_duty appear. A tool result carries the same figures as the HTTP endpoints, each with its source page, review date, a pre-filled quotation link and the estimate-only caveat.

curl -X POST https://hofreight.com/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"landed_cost","arguments":{"country":"kenya","goods":5000,"freight":800}}}'

Which endpoints exist?

EndpointWhat it answersWhat comes back
/api/tools/lane?country=kenya&fields=importerOfRecord,certificationEverything one destination publishes about importing into it — duty and tax, de minimis, importer of record, certification, pre-shipment inspection, loading ports, inland delivery.The published sentence under each field key, plus the page it came from, its review date and its reviewer.
/api/tools/transit?country=malaysia&mode=ocean-fclThe transit range for a destination and mode.A day range with its basis (port-to-port or airport-to-airport), or null where no carrier or forwarder figure exists for that lane.
/api/tools/landed-cost?country=kenya&goods=5000&freight=800Duty, import tax, country-specific levies and landed cost on a CIF value.The full breakdown, the duty position used, whether it is line-assessed, and what the estimate excludes.
/api/tools/hs-duty?country=united-states&chapter=64Official HS-chapter duty range for a market, before classification. Markets: united-states, united-kingdom, brazil. Omit chapter for every chapter in the schedule.Min, max and most-common ad-valorem rate per chapter reduced from the official schedule, with duty-free and specific-duty line counts, the source, its revision and retrieval date, and a link to the route page for that market.
/api/tools/chargeable-weight?length=100&width=100&height=100&weight=100Volumetric and chargeable weight for air, courier and ocean LCL.Per mode: volumetric, actual and chargeable weight, which basis applies, and the LCL-versus-FCL indication.
/api/tools/lanesEvery destination market and which fields it publishes.A directory you can use to build requests without guessing country slugs.
/tool-data.jsonThe whole dataset in one document.All lanes, import-tax positions and transit ranges. Cache it rather than calling per record.

Which field keys can I request?

The lane endpoint returns the sentence the route page publishes, under a stable key. Ask for a subset with &fields=. A key that is absent from a lane is listed innotPublished, which is how you tell "this market does not require it" from "we did not ask".

dutyAndTaximportLeviesdeMinimisftaPreferenceimporterOfRecordcertificationpreShipmentInspectionpreArrivalRegistrationloadingFromdestinationPortsdirectSailingscontainerOptionsinlandDeliveryclearanceparcelssurchargesquoteTurnaround

What happens when a figure does not exist?

Where no carrier or forwarder publishes a transit figure, the API returnsnull rather than an estimate, and the lane is described as quoted per shipment. Where duty is assessed line by line, the response says so and warns when the figure used is only the bottom of the published range. Every response carries its caveats and its source page.

What are the terms of use?

Free, read-only, no key. Rate limited to 120 requests per minute per address; successful responses are cached at the edge for five minutes, so cache them on your side too rather than calling per record. Quote the figures with a link to the route page named in each record. The endpoints do not return freight rates and never will — a rate depends on the sailing, the equipment, the season and the commodity, and belongs in a quotation.

Coverage: 23 destination markets, 23 import-tax positions, reviewed 17 September 2026. Duty is assessed line by line against the destination tariff, which remains the authority for the actual commodity.

Questions about the API

Is the API free and does it need a key?

It is free, read-only and needs no key or account. It is rate limited to 120 requests per minute per address and answers are cached at the edge for five minutes.

Can I use the data in my own product or answer?

Yes, with attribution: link to the route page named in each record. Every record carries its source page and review date so the attribution is unambiguous.

Why does a field come back null?

Because the lane genuinely publishes no figure for it. Express courier transit is the common case: no courier network publishes a China-to-destination door-to-door day count we can cite, so the value is null and the lane is quoted per shipment instead of estimated.

Is an API result a quotation?

No. It is an estimate of statutory charges or a published transit range. Duty is assessed line by line against the destination tariff, which remains the authority for the actual commodity. Every response includes a pre-filled quotation link if the user wants a firm figure.

WhatsApp us